Hauppauge WinTV-HVR-4000

From LinuxTVWiki
Jump to navigation Jump to search
The HVR-4000 and Remote

A hybrid DVB-S/DVB-S2/DVB-T/Analog/FM Radio PCI card from Hauppauge.

It is currently not supported under Linux. However, experimental support for some of the device's features is available (see below for details).

Overview/Features

DVB-S

DVB-S2

DVB-T

Analog TV

Component In

FM Radio (Not Supported Yet)

Note: DVB-T and DVB-S cannot be used at the same time yet until multiple frontend's are supported in


Components Used

CX24116

CX24118A

Cx23880

Identification

04:08.0 0400: 14f1:8800 (rev 05)
        Subsystem: 0070:6902
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (5000ns min, 13750ns max), Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 21
        Region 0: Memory at fa000000 (32-bit, non-prefetchable) [size=16M]
        Capabilities: [44] Vital Product Data
        Capabilities: [4c] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-

04:08.1 0480: 14f1:8811 (rev 05)
        Subsystem: 0070:6902
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (1000ns min, 63750ns max), Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 21
        Region 0: Memory at f9000000 (32-bit, non-prefetchable) [size=16M]
        Capabilities: [4c] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-

04:08.2 0480: 14f1:8802 (rev 05)
        Subsystem: 0070:6902
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (1500ns min, 22000ns max), Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 21
        Region 0: Memory at f8000000 (32-bit, non-prefetchable) [size=16M]
        Capabilities: [4c] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-

04:08.4 0480: 14f1:8804 (rev 05)
        Subsystem: 0070:6902
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (1500ns min, 63750ns max), Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 255
        Region 0: Memory at f7000000 (32-bit, non-prefetchable) [size=16M]
        Capabilities: [4c] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-

Making it Work

Firmware

One could use the script provided from wget-fw.sh to fetch the firmware for us.

Basically what it does is :

1) fetch an archive : "wget ftp://167.206.143.11/outgoing/Oxford/88x_2_119_25023_WHQL.zip"

2) decompress what's needed : "unzip -jo 88x_2_119_25023_WHQL.zip Driver88/hcw88bda.sys"

3) put the firmware at the right place : "dd if=hcw88bda.sys of=/lib/firwmare/dvb-fe-cx24116.fw skip=81768 bs=1 count=32522"

  Debian: Place file in /usr/lib/hotplug/firmware/

Drivers

There are currently no in kernel drivers for this card.

If someone wants to provide a brief synopsis of the driver tail of woe, outlining why there isn't a greater level of support, then do so here ... this means you

However, experimental support does exist.

Download v4l-dvb code: hg clone http://linuxtv.org/hg/v4l-dvb

Download patch: http://dev.kewl.org/hauppauge/v4l-dvb-hg-2007-12-26.diff

Install Patch: ln -s v4l-dvb a; ln -s v4l-dvb b; patch -p0 < v4l-dvb-hg-2007-12-26.diff Note: this doesn't cleanly apply to 2.6.23.14 so a manual patch may be needed for some parts

Compile: cd v4l-dvb; make;make install;reboot ...

http://dev.kewl.org/hauppauge/ about enabling DVB-T or DVB-S2 (DVB-S is the default at the moment)


--- Information Below May need editing changing ---

provide the details of where the drivers and patches and necessary tools are available ... this means you ... you can use the following older content from the article as a basis for your write up:

For DVB-S there is an experimental drivers repository from Steven Toth (see http://www.linuxtv.org/hg/~stoth/hvr4000-dvbs). Analog video and remote control works also with this driver (*).

Currently, no support for simultaneous operation of both DVB-T and DVB-S is implemented. Default operation mode prefers DVB-S.

Guess Note : Using HVR3000 as example the DVB-T and DVB-S use the same demux on the card, so only one will ever be available. The above I expect to be the same for the HVR4000, ie not a linuxtv issue. It is suggested to create symbolic links to access the frontends for some apps (see HVR3000 in this wiki), but you need to ensure your application does not attempt to access both DVB-T and DVB-S at the same time.

(*) Work in progress patches to enable features of this card have been merged into the hvr4000-dvbs repository, yet an updated patchset is available for v4l-dvb hg here: http://dev.kewl.org/hvr4000/

This patchset also adds two hacks which will allow DVB-S2 reception (command line) for experimental purposes, also it allows the selection of which DVB frontend to load, DVB-T or DVB-S/S2.

Multiproto driver

wiki in german language describe what has to be done in order to compil "standard" multiproto driver. Unfortunately at the date of writing, there is no support for our beloved card, so one should fetch the patch from :

patch from linuxtv mailing list.

which you should apply to the tree before compiling the driver (here a little more docs could be usefull...)

After having applied the patch, one could follow the first link of this section to have a VDR with full DVB-S2 support!!!

Sample kernel output


When Enabled for DVB-S
----------------------
cx88/2: cx2388x MPEG-TS Driver Manager version 0.0.6 loaded
cx88/0: cx2388x v4l2 driver version 0.0.6 loaded
cx88[0]: subsystem: 0070:6902, board: Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid [card=59,autodetected]
cx88[0]: TV tuner type 63, Radio tuner type -1
cx2388x alsa driver version 0.0.6 loaded
cx88[0]: i2c init: enabling analog demod on HVR1300/3000/4000 tuner
tveeprom 2-0050: Hauppauge model 69009, rev B2D3, serial# 2807241
tveeprom 2-0050: MAC address is 00-0D-FE-2A-D5-C9
tveeprom 2-0050: tuner model is Philips FMD1216MEX (idx 133, type 63)
tveeprom 2-0050: TV standards PAL(B/G) PAL(I) SECAM(L/L') PAL(D/D1/K) ATSC/DVB Digital (eeprom 0xf4)
tveeprom 2-0050: audio processor is CX882 (idx 33)
tveeprom 2-0050: decoder processor is CX882 (idx 25)
tveeprom 2-0050: has radio, has IR receiver, has no IR transmitter
cx88[0]: hauppauge eeprom: model=69009
input: cx88 IR (Hauppauge WinTV-HVR400 as /class/input/input3
cx88[0]/2: cx2388x 8802 Driver Manager
cx88[0]/2: found at 0000:04:08.2, rev: 5, irq: 21, latency: 32, mmio: 0xf8000000
cx88[0]/0: found at 0000:04:08.0, rev: 5, irq: 21, latency: 32, mmio: 0xfa000000
cx88/2: cx2388x dvb driver version 0.0.6 loaded
cx88/2: registering cx8802 driver, type: dvb access: shared
cx88[0]/2: subsystem: 0070:6902, board: Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid [card=59]
cx88[0]/2: cx2388x based DVB/ATSC card
tuner' 2-0043: chip found @ 0x86 (cx88[0])
tda9887 2-0043: tda988[5/6/7] found
tuner' 2-0061: chip found @ 0xc2 (cx88[0])
tuner-simple 2-0061: type set to 63 (Philips FMD1216ME MK3 Hybrid Tuner)
tuner' 2-0063: chip found @ 0xc6 (cx88[0])
cx88[0]/0: registered device video0 [v4l2]
cx88[0]/0: registered device vbi0
cx88[0]/0: registered device radio0
DVB: registering new adapter (cx88[0])
DVB: registering frontend 0 (Conexant CX24116/CX24118)...
cx88[0]/1: CX88x/0: ALSA support for cx2388x boards
cx24116_firmware_ondemand: Waiting for firmware upload (dvb-fe-cx24116.fw)...
cx24116_firmware_ondemand: Waiting for firmware upload(2)...
cx24116_load_firmware: FW version 1.20.79.0
cx24116_firmware_ondemand: Firmware upload complete

When enabled for DVB-T
----------------------
cx88/0: cx2388x v4l2 driver version 0.0.6 loaded
cx88/2: cx2388x MPEG-TS Driver Manager version 0.0.6 loaded
cx88[0]: subsystem: 0070:6902, board: Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid [card=59,autodetected]
cx88[0]: TV tuner type 63, Radio tuner type -1
cx2388x alsa driver version 0.0.6 loaded
cx88[0]: i2c init: enabling analog demod on HVR1300/3000/4000 tuner
tveeprom 2-0050: Hauppauge model 69009, rev B2D3, serial# 2807241
tveeprom 2-0050: MAC address is 00-0D-FE-2A-D5-C9
tveeprom 2-0050: tuner model is Philips FMD1216MEX (idx 133, type 63)
tveeprom 2-0050: TV standards PAL(B/G) PAL(I) SECAM(L/L') PAL(D/D1/K) ATSC/DVB Digital (eeprom 0xf4)
tveeprom 2-0050: audio processor is CX882 (idx 33)
tveeprom 2-0050: decoder processor is CX882 (idx 25)
tveeprom 2-0050: has radio, has IR receiver, has no IR transmitter
cx88[0]: hauppauge eeprom: model=69009
input: cx88 IR (Hauppauge WinTV-HVR400 as /class/input/input3
cx88[0]/0: found at 0000:04:08.0, rev: 5, irq: 20, latency: 32, mmio: 0xfa000000
tuner' 2-0043: chip found @ 0x86 (cx88[0])
tda9887 2-0043: tda988[5/6/7] found
tuner' 2-0061: chip found @ 0xc2 (cx88[0])
tuner-simple 2-0061: type set to 63 (Philips FMD1216ME MK3 Hybrid Tuner)
tuner' 2-0063: chip found @ 0xc6 (cx88[0])
cx88[0]/0: registered device video0 [v4l2]
cx88[0]/0: registered device vbi0
cx88[0]/0: registered device radio0
cx88[0]/2: cx2388x 8802 Driver Manager
cx88[0]/1: CX88x/0: ALSA support for cx2388x boards
cx88/2: cx2388x dvb driver version 0.0.6 loaded
cx88/2: registering cx8802 driver, type: dvb access: shared
cx88[0]/2: subsystem: 0070:6902, board: Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid [card=59]
cx88[0]/2: cx2388x based DVB/ATSC card
DVB: registering new adapter (cx88[0])
DVB: registering frontend 0 (Conexant CX22702 DVB-T)...

Remote Control Support

When you have installed the drivers check dmesg/logs and you'll find a line like:

input: CX88 IR (Hauppauge WinTV-HVR4000 as /class/input/inputX

You can run lirc for example like: lircd --driver=dev/input --device=/dev/input/eventX (replace X with what it finds in the dmesg)

  Debian: edit /etc/lirc/hardware.conf
  DRIVER="dev/input"
  DEVICE="/dev/input/eventX"

External Links