Gentoo Wiki


Please improve it in any way that you see fit, and remove this notice {{Cleanup}} from the article. For tips on cleaning and formatting see Cleanup process

Please format this article according to the guidelines and Wikification suggestions, then remove this notice {{Wikify}} from the article

This article is part of the HOWTO series.
Installation Kernel & Hardware Networks Portage Software System X Server Gaming Non-x86 Emulators Misc



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(now NXP) SAA7133/7135 chipset. The SAA7133/7135 chipset is also sold as HVR-1110 although it might be shipped in a HVR-1100 box. 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/1110 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.

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.

What you need to make it work

- Kernel >= 2.6.16, - Lirc (optional), - A xine-based or mplayer-based video player.

Kernel configuration

In the kernel, you have to enable the following options :


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

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/modprobe.d/alsa:

File: /etc/modprobe.d/alsa

Afterwards run update-modules.

You can now reboot to your new kernel with dvb support.

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
Note: If /dev/dvb or /dev/dvb/adapter0 does not show, it means you are missing the frontend part of the DVB kernel driver. You should go back to kernel configuration, you missed a module.

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]

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)


     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:


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!

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.

Note: By code, I mean real code not things like '&,.' You have to see something like : ÝMDò]ÝMDô]&ÝMDþÝMD

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)


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

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):

while true
  arecord -D hw:1,0 -c 2 -r 48000 -f S16_LE -t wav | aplay -


I found some very useful info on Da Desintegr Blog, which is a blog in French

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)

Retrieved from ""

Last modified: Mon, 06 Oct 2008 09:26:00 +0000 Hits: 17,235