HARDWARE HVR 1100
From Gentoo Linux Wiki
| Installation • Kernel & Hardware • Networks • Portage • Software • System • X Server • Gaming • Non-x86 • Emulators • Misc |
Please format this article according to the guidelines and Wikification suggestions, then remove this notice {{Wikify}} from the article
Contents |
[edit] Introduction
The Hauppauge WinTV HVR 1100 is a hybrid tuner card with DVB-T and analog tuner. It also has radio support and a remote.
Hauppauge ships two different types of hardware both labelled HVR 1100: One is based on the Conexant chipset, the other uses a Philips SAA7133/7135 chipset. However, both types of cards work fine with Linux.
This page only documents how to get a Conexant CX88 based HVR 1100 running. If you bought a HVR 1100 and running lspci gives you something like
00:0d.0 Multimedia controller: Philips Semiconductors SAA7133/SAA7135
Video Broadcast Decoder (rev d1)
you should now go to the HOWTO Page for the SAA7134 driver. Additionally, you can take a look at this discussion on the Gentoo forums.
[edit] Conexant CX88 based HVR 1100 cards
I can't get the radio support to work. It appears it's not ready. The kernel diver file says : /* FIXME, add radio support */ But it seems it's coming.
BTW, for those of you having a dual boot system, the card does not work well at all on Windows.
[edit] What you need to make it work
- Kernel >= 2.6.16, - Lirc (optional), - A xine-based or mplayer-based video player.
[edit] Kernel configuration
In the kernel, you have to enable the following options :
CONFIG_DVB=y CONFIG_DVB_CORE=y CONFIG_DVB_CX22700=m CONFIG_DVB_CX22702=y CONFIG_VIDEO_CX88_VP3054=m CONFIG_VIDEO_CX88=m CONFIG_VIDEO_CX88_ALSA=m CONFIG_VIDEO_CX88_DVB=m CONFIG_VIDEO_CX88_DVB_ALL_FRONTENDS=y
This sample is from kernel 2.6.17-rc1
IMPORTANT : As you might have noticed, some of the drivers are compiled as modules. They HAVE TO BE compiled as modules. Compiling them in will NOT work
[edit] Alsa module configuration
This particular card uses the PCI interface to broadcast its sound. The Conexant chip that is on it is considered by alsa to be a soundcard (a very simple one!). So, as you might expect, if you have specified snd_card_limit=1, things will break.
You need to edit /etc/modules.d/alsa
| File: /etc/modules.d/alsa |
snd_card_limit=2 |
You can now reboot to your new kernel with dvb support.
[edit] What you should have now
If you have coldplug installed, the modules have been loaded automatically at boot, otherwise, you have to ad them to /etc/modules.autoload.d/kernel-2.6.
So, lsmod should show :
cx88_dvb 11548 1 cx8802 9732 1 cx88_dvb cx88_vp3054_i2c 3840 1 cx88_dvb mt352 6276 1 cx88_dvb or51132 9348 1 cx88_dvb video_buf_dvb 4740 1 cx88_dvb nxt200x 14980 1 cx88_dvb zl10353 4740 1 cx88_dvb cx24123 8964 1 cx88_dvb lgdt330x 7836 1 cx88_dvb cx88_alsa 10824 1 tda9887 16016 0 tuner 53944 0 cx8800 28556 0 cx88xx 56228 4 cx88_dvb,cx8802,cx88_alsa,cx8800 ir_common 23812 1 cx88xx video_buf 20612 6 cx88_dvb,cx8802,video_buf_dvb,cx88_alsa,cx8800,cx88xx tveeprom 14096 1 cx88xx btcx_risc 4232 4 cx8802,cx88_alsa,cx8800,cx88xx
Your /dev should show two different kind of entries :
/dev/v4l, which is used for analog, should show :
crw-rw---- 1 root video 81, 64 avr 24 23:57 radio0 crw-rw---- 1 root video 81, 224 avr 24 23:57 vbi0 crw-rw---- 1 root video 81, 0 avr 24 23:57 video0
/dev/dvb/adapter0, which is used for DVB-T, should show :
crw-rw---- 1 root video 212, 4 avr 24 23:57 demux0 crw-rw---- 1 root video 212, 5 avr 24 23:57 dvr0 crw-rw---- 1 root video 212, 3 avr 24 23:57 frontend0 crw-rw---- 1 root video 212, 7 avr 24 23:57 net0
[edit] DVB Software configuration
The card should now work. If you are using kaffeine, make sure it is compiled with the 'dvb' useflag. Launch it, it should take care of the rest. If not, you will need to use dvbscan.
dvbscan /usr/share/dvb/dvb-t/[YOURCITY] > channels.conf
To use this, you have to copy it over to the config dir of the app you are using. For mplayer do :
cp channels.conf ~/.mplayer/
The card should now be up and running. To access a specific channel :
mplayer dvb://[NAME OF THE CHANNEL] kaffeine : dvb://[NAME OF THE CHANNEL]
[edit] Emerge lirc
Contrary to what one might think, one cannot use the hauppauge or hauppauge_dvb driver. You have to use devinput You have to add a variable to make.conf :
echo 'LIRC_OPTS="--with-driver=devinput"' >> /etc/make.conf emerge lirc
I may be wrong, but I think it's changed since lirc 0.8 and the entry should now be
echo 'LIRC_DEVICES="devinput"' >> /etc/make.conf
<kerneloftruth>: (confirmed)
when
echo 'LIRC_OPTS="--with-driver=devinput"' >> /etc/make.conf
is used with lirc 0.8 you get the following message:
LIRC_OPTS is deprecated from lirc-0.8.0-r1 on. * * Please use LIRC_DEVICES from now on. * e.g. LIRC_DEVICES="serial sir" * * Flags are now set per use-flags. * e.g. transmitter, hardware-carrier * These options are no longer allowed to be set * with LIRC_OPTS: --with-driver=devinput
so add the line:
LIRC_DEVICES=
and add the device to your liking
EDIT: It's very important not to set any other LIRC_DEVICES than "devinput", otherwise lirc will not recognize your rc!
[edit] Lirc configuration
[see discussion page for possibly changes regarding the linux input layer and inpultlircd]
You do not need to insmod any kernel module
You will not find any /dev/lircX or /dev/lirc/X node in your /dev. The node is in /dev/input. It's one of the eventX nodes. You just have to figure out which ! To figure this out, do :
cat /dev/input/eventX
Then press buttons on your remote, if some code appears, that's the device. If not, try another one.
Then, over to /etc/conf.d/lircd :
| File: /etc/conf.d/lircd |
LIRCD_OPTS="-d /dev/input/eventX" |
Where X is, of course, the number of the event node you found.
EDIT: You may want to use a udev rule to link your /dev/input/eventX to to e.g. /dev/input/irremote to keep you out of trouble since the /dev/input/eventX could change from boot to boot!
| File: /etc/udev/rules.d/10-udev.rules |
# HVR remote
KERNEL=="event*",ATTRS{name}=="HVR 1110",SYMLINK="input/irremote"
|
It may also be necessary to change
| File: /etc/conf.d/lircd |
LIRCD_OPTS="-H dev/input -d /dev/input/eventX" |
to get your remote recognized correctly! (use either /dev/input/eventX or /dev/input/irremote if you use udev rules)
EDIT END
This particular remote does not have any config file ready in lirc, you have to generate one yourself or copy mine.
To generate one yourself :
irrecord -d /dev/input/eventX HVR-1100
This will create a config file that you need to copy/paste in /etc/lircd.conf :
cat HVR-1100 >> /etc/lircd.conf
As for my config file, here it is :
| File: /etc/lircd.conf |
begin remote
name HVR-1100
bits 16
eps 30
aeps 100
one 0 0
zero 0 0
pre_data_bits 16
pre_data 0x8001
gap 135828
toggle_bit 0
begin codes
power 0x0074
go 0x0161
tv 0x0179
videos 0x0189
music 0x0188
pictures 0x016F
guide 0x016D
radio 0x0181
Up 0x0067
Down 0x006C
Left 0x0069
Right 0x006A
Back 0x00AE
menu 0x008B
ok 0x001C
Volume+ 0x0073
Volume- 0x0072
Ch+ 0x0192
Ch- 0x0193
prev 0x019C
mute 0x0071
Record 0x00A7
stop 0x0080
play 0x00CF
replay 0x00A8
skip 0x00D0
backtrack 0x00A5
pause 0x0077
forward 0x00A3
1 0x0002
2 0x0003
3 0x0004
4 0x0005
5 0x0006
6 0x0007
7 0x0008
8 0x0009
9 0x000A
0 0x000B
star 0x0184
hash 0x0172
red 0x018E
green 0x018F
yellow 0x0190
blue 0x0191
end codes
end remote
|
[edit] Analog TV
Well, that does not work very well. The problem is that the sound goes through the PCI bus, which is not something Analog TV apps are used to. Here is a very cumbersome workaround, that I found on Da Desintegr Blog (see credits). In fact, you have to reroute the signal to your soundcard :
arecord -D hw:1,0 -c 2 -r 48000 -f S16_LE -t wav | aplay -
You have to execute this in a terminal. You have to re-execute the command every time you switch channel. I am currently trying to find a solution by lookink at .asoundrc dmix and dsnoop. I'll let you know a soon as I find something useful.
Write it in a loop (untested, but should work):
#!/bin/sh while true do arecord -D hw:1,0 -c 2 -r 48000 -f S16_LE -t wav | aplay - done
[edit] Credits
I found some very useful info on Da Desintegr Blog, which is a blog in French
[edit] Software versions used to write this document
Kernel : no-sources 2.6.17 Kaffeine : 0.7.1 Lirc : 0.8.0
--LittleJo 08:47, 25 April 2006 (UTC)
