Hauppauge WinTV-HVR-4000: Difference between revisions
(141 intermediate revisions by 22 users not shown) | |||
Line 3: | Line 3: | ||
A hybrid [[DVB-S2]] [[DVB-S2 PCI Cards|PCI card]] from [[Hauppauge]]. |
A hybrid [[DVB-S2]] [[DVB-S2 PCI Cards|PCI card]] from [[Hauppauge]]. |
||
It is |
It is supported under Linux since kernel 2.6.28. |
||
==Overview/Features== |
==Overview/Features== |
||
Quad-mode TV tuner featuring DVB-S2 HDTV, DVB-S, DVB-T, analogue PAL/SECAM cable TV, FM radio reception, plus S-Video, Composite and stereo audio inputs for A/V capture, all in one card! |
|||
[[DiSEqC]] 1.0 and 1.2 supported with Linux drivers. |
|||
Note: DVB-T and DVB-S cannot be used at the same, but you can use 1 if not using the other. |
|||
Note: DVB-T and DVB-S/S2 cannot be used simultaneously due to a hardware limitation, but you can easily switch from one to the other. |
|||
Included: IR remote control, batteries, and remote control receiver. FM radio antenna. S-Video/Composite adapter (to allow a Composite RCA yellow phono to be connected to the S-Video input socket). |
|||
Sockets: FM, TV, SAT, S-VIDEO IN, LINE IN, IR. |
|||
No [[CI]]. |
|||
===Components Used=== |
===Components Used=== |
||
* Conexant CX24116 (demodulator) |
* [[Conexant CX24116]] (DVB-S2 demodulator and FEC decoder) |
||
* Conexant CX24118A ( |
* Conexant CX24118A (digital satellite tuner RF IC) |
||
* Conexant |
* [[Conexant CX2388x| Conexant CX23882]] (A/V decoder & PCI bridge) |
||
* Conexant CX22702 (DVB-T demodulator) |
|||
* Philips FMD1216ME MK3 Hybrid Tuner |
|||
** Infineon TUA6034 'TAIFUN' (Analogue/Digital TV tuner) |
|||
** Philips TDA9887 (Analogue TV/FM demodulator) |
|||
** Philips TDA7040 (FM stereo decoder) |
|||
* Wolfson WM8775 (4 stereo input ADC) |
|||
* IDT QS3257 (Mux) |
|||
* Intersil ISL6421 (LNB voltage controller) |
|||
===Identification=== |
===Identification=== |
||
Line 66: | Line 82: | ||
===Firmware=== |
===Firmware=== |
||
Please note firmware in ubuntu repo is working fine now. You can use sudo apt-get install linux-firmware-nonfree |
|||
For a discussion of the different firmware versions, see http://allrussian.info/thread.php?threadid=98587. |
|||
CX24116 firmware version: 1.20.79.0, size: 32522 bytes, md5sum: 417cafd3b10e207e1dba9a03ad63e405 |
|||
CX24116 firmware version: 1.22.82.0, size: 32501 bytes, md5sum: b728b5d635393a4081e87d30d87a7632 |
|||
CX24116 firmware version: 1.23.86.1, size: 32674 bytes, md5sum: dd8dfdfca6b72462d9db8032f78631c8 |
|||
CX24116 firmware version: 1.26.90.0, size: 32674 bytes, md5sum: b8c856ac15b768854a222e6864e7dc7f |
|||
====Firmware v1.20.79.0==== |
|||
One could use the script provided from [http://dev.kewl.org/hauppauge/utils/wget-fw.sh wget-fw.sh] to fetch the firmware for us. |
One could use the script provided from [http://dev.kewl.org/hauppauge/utils/wget-fw.sh wget-fw.sh] to fetch the firmware for us. |
||
Broken Link above [http://dev.kewl.org/v4l-dvb/utils/wget-fw.sh wget-fw.sh] - UPDATE |
|||
Basically what it does is : |
Basically what it does is : |
||
1) |
1) Fetch an archive (Note: 119=V1.20.79.0): |
||
wget ftp://167.206.143.11/outgoing/Oxford/88x_2_119_25023_WHQL.zip |
|||
2) |
2) Decompress what's needed : |
||
unzip -jo 88x_2_119_25023_WHQL.zip Driver88/hcw88bda.sys |
|||
3) |
3) Extract the firmware (v1.20.79.0) and put it in the right place : |
||
sudo dd if=hcw88bda.sys of=/lib/firmware/dvb-fe-cx24116-1.20.79.0.fw skip=81768 bs=1 count=32522 |
|||
sudo ln -s /lib/firmware/dvb-fe-cx24116-1.20.79.0.fw /lib/firmware/dvb-fe-cx24116.fw |
|||
Ubuntu: Place file in /lib/firmware |
|||
Debian: Place file in /usr/lib/hotplug/firmware/ |
Debian: Place file in /usr/lib/hotplug/firmware/ |
||
====Firmware v1.22.82.0==== |
|||
For slightly newer firmware using drivers from Hauppauge |
|||
For slightly newer firmware (v1.22.82.0) using drivers from Hauppauge |
|||
1) Download the driver archive : "wget http://www.wintvcd.co.uk/drivers/88x_2_122_26109_WHQL.zip" |
|||
1) Download the driver archive : |
|||
2) Decompress the .sys file : "unzip -jo 88x_2_122_26109_WHQL.zip Driver88/hcw88bda.sys" |
|||
wget http://www.hauppauge.de/software/mce/88x_2_122_26109_WHQL.zip |
|||
2) Decompress the .sys file : |
|||
3) Extract the firmware at the right place : "dd if=hcw88bda.sys of=dvb-fe-cx24116.fw skip=75504 bs=1 count=32501" |
|||
unzip -jo 88x_2_122_26109_WHQL.zip Driver88/hcw88bda.sys |
|||
3) Extract the firmware and put it in the firmware directory : |
|||
sudo dd if=hcw88bda.sys of=/lib/firmware/dvb-fe-cx24116-1.22.82.0.fw skip=75504 bs=1 count=32501 |
|||
sudo ln -s /lib/firmware/dvb-fe-cx24116-1.22.82.0.fw /lib/firmware/dvb-fe-cx24116.fw |
|||
====Firmware v1.23.86.1==== |
|||
===Drivers=== |
|||
Firmware v1.23.86.1 is available with the TeVii S460 Linux driver at http://tevii.com/support.html. |
|||
There are currently no in kernel drivers for this card. |
|||
(But what's with the proprietary RAR archive format? Geez...) |
|||
wget http://tevii.com/Tevii_linuxdriver_0815.rar |
|||
{{Note|If someone wants to provide a brief synopsis of the driver tale of woe, outlining why there isn't a greater level of support, then do so here ... or just [http://www.linuxtv.org/pipermail/linux-dvb/2008-January/023355.html read here]}} |
|||
sudo apt-get install unrar-free |
|||
unrar x Tevii_linuxdriver_0815.rar |
|||
sudo cp tevii_linuxdriver_0815/fw/dvb-fe-cx24116.fw /lib/firmware/dvb-fe-cx24116-1.23.86.1.fw |
|||
sudo ln -s /lib/firmware/dvb-fe-cx24116-1.23.86.1.fw /lib/firmware/dvb-fe-cx24116.fw |
|||
====Firmware v1.26.90.0==== |
|||
However, experimental support does exist. |
|||
For slightly newer firmware (v1.26.90.0) using drivers from Hauppauge |
|||
1) Download the driver archive (Note: see below for alternate instructions): |
|||
This allows DVB-T or DVB-S support: |
|||
wget http://www.hauppauge.de/files/drivers/hcw88/88x_2_125_28070_WHQL.zip |
|||
<pre> |
|||
hg clone http://linuxtv.org/hg/v4l-dvb |
|||
wget http://dev.kewl.org/hauppauge/v4l-dvb-hg-sfe-latest.diff |
|||
patch -d v4l-dvb -p1 < v4l-dvb-hg-sfe-latest.diff |
|||
cd v4l-dvb && make && make install && reboot |
|||
</pre> |
|||
{{Note|The last revision I know of that the patches apply cleanly to is 127f67dea087, so you'll probably have to check the repository out this way: hg clone -r 127f67dea087 http://linuxtv.org/hg/v4l-dvb --[[User:Growlizing|Growlizing]] 13:10, 10 April 2008 (CEST) |
|||
:This didn't work for me with Mercurial 0.9.1: I got the message "abort: clone by revision not supported yet for remote repositories". Uninstalling the distribution version, then downloading and make install-ing 1.0.2 fixed it. Doesn't build against Linux 2.6.26.2, though. [[User:Bloop|Bloop]] 20:18, 20 August 2008 (CEST)}} |
|||
2) Decompress the .sys file : |
|||
unzip -jo 88x_2_125_28070_WHQL.zip Driver88/hcw88bda.sys |
|||
3) Extract the firmware and put it in the firmware directory : |
|||
See: http://dev.kewl.org/hauppauge/ about enabling DVB-T or DVB-S2 (DVB-S is the default at the moment) |
|||
sudo dd if=hcw88bda.sys of=/lib/firmware/dvb-fe-cx24116-1.26.90.0.fw skip=105768 bs=1 count=32674 |
|||
sudo ln -s /lib/firmware/dvb-fe-cx24116-1.26.90.0.fw /lib/firmware/dvb-fe-cx24116.fw |
|||
Ubuntu: Place file in /lib/firmware |
|||
===Multifrontend driver=== |
|||
Debian: Place file in /usr/lib/hotplug/firmware/ |
|||
The "manual" for [http://osdir.com/ml/linux-media/2009-04/msg00112.html new firmware]. I put the greater size for length. |
|||
These drivers give you the ability to have multi frontend on the HVR4000. (ie DVB-T and DVB-S tuners ) |
|||
{{Note|There seems to be a more recent version of this firmware:}} |
|||
See: http://dev.kewl.org/hauppauge/ |
|||
There´s a forum article describing how to extract the firmware: [http://www.mythtvtalk.com/firmware-update-hauppauge-nova-hd-s2-hvr-4000-a-12058/] --- see post #3. |
|||
<pre> |
|||
The download link to get the driver now seems to be [http://www.hauppauge.de/files/drivers/hcw88/88x_2_126_28225_WHQL.zip]. Download it with: |
|||
hg clone http://linuxtv.org/hg/v4l-dvb |
|||
wget http:// |
wget http://www.hauppauge.de/files/drivers/hcw88/88x_2_126_28225_WHQL.zip |
||
patch -d v4l-dvb -p1 < v4l-dvb-hg-mfe-latest.diff |
|||
cd v4l-dvb && make && make install && reboot |
|||
</pre> |
|||
{{Note|As above, the latest diff for Multifrontend is against a version of V4L that is not the latest. You will need to use: hg clone -r 1abbd650fe07 http://linuxtv.org/hg/v4l-dvb --[[User:Comm|Comm]] 14:06, 20 May 2008 (BST)}} |
|||
Decompress the .sys file : |
|||
Most programs such as mythtv doesn't know about multi frontends yet. You can only use 1 at a time, but this allows you to swap between them without having to load the modules in differently. |
|||
unzip -jo 88x_2_126_28225_WHQL.zip Driver88/hcw88bda.sys |
|||
<pre> |
|||
mkdir /dev/dvb/adapter1 |
|||
ln -s /dev/dvb/adapter0/frontend1 /dev/dvb/adapter1/frontend0 |
|||
ln -s /dev/dvb/adapter0/net1 /dev/dvb/adapter1/net0 |
|||
ln -s /dev/dvb/adapter0/dvr1 /dev/dvb/adapter1/dvr0 |
|||
ln -s /dev/dvb/adapter0/demux1 /dev/dvb/adapter1/demux0 |
|||
Extract the firmware and put it in the firmware directory : |
|||
</pre> |
|||
sudo dd if=hcw88bda.sys of=/lib/firmware/dvb-fe-cx24116-1.26.90.0.fw bs=1 skip=105768 count=32290 |
|||
===[[Multiproto]] driver=== |
|||
sudo ln -s /lib/firmware/dvb-fe-cx24116-1.26.90.0.fw /lib/firmware/dvb-fe-cx24116.fw |
|||
The [http://www.vdr-wiki.de/wiki/index.php/OpenSUSE_VDR_DVB-S2 wiki in german language]describes what has to be done in order to compile "standard" [[multiproto]] driver.<br> |
|||
Unfortunately at the date of writing, there is no support for our beloved card, so one should fetch <br> [http://www.linuxtv.org/pipermail/linux-dvb/2008-January/023390.html the patch from linuxtv mailing list] which you should apply to the tree before compiling the driver. I haven't tested [http://www.linuxtv.org/pipermail/linux-dvb/2008-January/023416.html the patch which adds the multi frontend support] but it's certainly a way to follow :-) |
|||
For verification of hcw88bda.sys in this version of the driver: |
|||
After having applied the patch, one could follow the first link of this section to have a VDR with full DVB-S2 support!!! |
|||
md5sum -b hcw88bda.sys |
|||
<pre> |
|||
3f685a2ca6d1dae35b10c06f3a538d82 *hcw88bda.sys |
|||
Latest - 29-1-08 |
|||
--------------------------- |
|||
hg clone http://jusst.de/hg/multiproto |
|||
wget http://www.linuxtv.org/pipermail/linux-dvb/attachments/20080128/adee4c88/attachment-0001.bin |
|||
mv attachment-0001.bin multiproto-hvr4k-2008-01-28.patch.bz2 |
|||
bunzip2 multiproto-hvr4k-2008-01-28.patch.bz2 |
|||
ln -s multiproto a; ln -s multiproto b |
|||
patch -p0 < multiproto-hvr4k-2008-01-28.patch |
|||
cd multiproto |
|||
run make menuconfig and disable the USB capture cards as the em88 drivers are broken and make sure customise frontends is enabled. |
|||
make && make install && reboot |
|||
</pre> |
|||
The firmware will be reported as |
|||
UPDATE 1st Aug 2008: Igor Liplianin has created another repository containing multiproto code and szap2 at http://liplianindvb.sourceforge.net/hg/, reported to be working with the HVR-4000. |
|||
See |
|||
http://www.linuxtv.org/pipermail/linux-dvb/2008-July/027514.html. This appears to be |
|||
similar to the V4L/DVB staging development repository at http://linuxtv.org/hg/v4l-dvb/ |
|||
but with the addition of multiproto code. |
|||
sudo dmesg|grep cx |
|||
hg clone http://liplianindvb.sourceforge.net/hg/liplianindvb |
|||
cx24116_load_firmware: FW version 1.26.90.0 |
|||
hg clone http://liplianindvb.sourceforge.net/hg/szap2 |
|||
=== |
====Mythbuntu 9.04 users==== |
||
<pre> |
|||
'''Attention Mythbuntu 9.04 users:''' This card should actually work with this version of Mythbuntu out of the box. However, the installed firmware seems to be buggy so it is necessary to install the Firmware v1.20.79.0 following the steps above. |
|||
When Enabled for DVB-S (options cx88-dvb frontend=0) (Kernel 2.6.23.14) |
|||
----------------------------------------------------------------------- |
|||
===Drivers=== |
|||
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 |
|||
{{Note|If someone wants to provide a brief synopsis of the driver tale of woe, outlining why it took so |
|||
long then do so here ... or just [http://www.linuxtv.org/pipermail/linux-dvb/2008-January/023355.html read here]}} |
|||
Ubuntu Hardy users should read the note about the sound driver (cx88_alsa) below. |
|||
When enabled for DVB-T (options cx88-dvb frontend=1) (Kernel 2.6.23.14) |
|||
----------------------------------------------------------------------- |
|||
==== Kernel / v4l-dvb driver ==== |
|||
There is a complete driver for this card in the Linux kernel since version 2.6.28. |
|||
It supports DVB-T, DVB-S/S2, analogue TV, A/V capture and FM radio. If you have |
|||
the kernel 2.6.28 (or later) you do not need to install a driver yourself. |
|||
{{Note|The kernel 2.6.30, 2.6.31, 2.6.32 have a [https://bugs.launchpad.net/mythtv/+bug/439163 broken driver]. The mercurial [http://hg.kewl.org/pub/v4l-dvb-20100517/ http://hg.kewl.org/pub/v4l-dvb-20100517/] modules works fine}} |
|||
For developers, or those who need to use a kernel earlier than 2.6.28, a development |
|||
version of the driver is available in the v4l-dvb repository of the |
|||
LinuxTV project (the ususal route to merging improvements into the kernel). |
|||
hg clone http://hg.kewl.org/pub/v4l-dvb-20100517/ |
|||
cd v4l-dvb-20100517 |
|||
make |
|||
make install |
|||
reboot |
|||
Multiple frontends are supported: DVB-S/S2 and DVB-T appear as /dev/dvb/adapterN/frontend0 and /dev/dvb/adapterN/frontend1 respectively. |
|||
Due to a hardware limitation, the two frontends cannot be used ''simultaneously''. However they |
|||
can be used sequentially within the same application. The driver handles the mutual exclusion |
|||
appropriately. |
|||
DVB-T and DVB-S are supported within API v3.2 (or the new API v5.0) and so it is |
|||
compatible with current applications. DVB-S2 is accessed through API v5.0, also known as [[S2API]], which was released in kernel 2.6.28. |
|||
Command-line scanning for channels can be done with [[scan-s2]]. Tuning DVB-S and DVB-S2 channels can be |
|||
done with [[szap-s2]] : |
|||
hg clone http://mercurial.intuxication.org/hg/scan-s2 |
|||
hg clone http://mercurial.intuxication.org/hg/szap-s2 |
|||
[[Kaffeine]] handles multiple frontends well without modification -- they appear in the DVB settings as "DVB Device 0:0" (=/dev/dvb/adapter0/frontend0, i.e. DVB-S/S2) and "DVB Device 0:1" (=/dev/dvb/adapter0/frontend1, i.e. DVB-T). Both devices can be configured and tuned in the application, and Kaffeine will switch to the correct one each time |
|||
you change the channel. DiSEqC 1.2 is supported too. Kaffeine will display HDTV delivered over DVB-S2 or DVB-S, e.g. [[BBC HD]], see [[Kaffeine]]. |
|||
See the section below on how to use this card with [[MythTV]]. |
|||
===Sample kernel output=== |
|||
<pre> |
|||
Linux video capture interface: v2.00 |
|||
cx88/0: cx2388x v4l2 driver 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=68,autodetected], frontend(s): 2 |
|||
cx88[0]: TV tuner type 63, Radio tuner type -1 |
|||
cx88/2: cx2388x MPEG-TS Driver Manager 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 |
cx2388x alsa driver version 0.0.6 loaded |
||
cx88[0]: i2c init: enabling analog demod on HVR1300/3000/4000 tuner |
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]) |
tuner' 2-0043: chip found @ 0x86 (cx88[0]) |
||
tda9887 2-0043: creating new instance |
|||
tda9887 2-0043: tda988[5/6/7] found |
tda9887 2-0043: tda988[5/6/7] found |
||
tuner' 2-0061: chip found @ 0xc2 (cx88[0]) |
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]) |
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)... |
|||
When Enabled for DVB-S/S2 multiproto (options cx88-dvb frontend=0) (Kernel 2.6.23.1) |
|||
------------------------------------------------------------------------------------ |
|||
cx2388x v4l2 driver version 0.0.6 loaded |
|||
CORE cx88[0]: subsystem: 0070:6902, board: Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid [card=58,autodetected] |
|||
TV tuner 63 at 0x1fe, Radio tuner -1 at 0x1fe |
|||
cx2388x cx88-mpeg Driver Manager 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: Hauppauge model 69009, rev B2D3, serial# 2807241 |
||
tveeprom 2-0050: MAC address is 00-0D-FE-2A-D5-C9 |
tveeprom 2-0050: MAC address is 00-0D-FE-2A-D5-C9 |
||
tveeprom 2-0050: tuner model is Philips FMD1216MEX (idx 133, type |
tveeprom 2-0050: tuner model is Philips FMD1216MEX (idx 133, type 78) |
||
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: 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: audio processor is CX882 (idx 33) |
||
Line 260: | Line 252: | ||
tveeprom 2-0050: has radio, has IR receiver, has no IR transmitter |
tveeprom 2-0050: has radio, has IR receiver, has no IR transmitter |
||
cx88[0]: hauppauge eeprom: model=69009 |
cx88[0]: hauppauge eeprom: model=69009 |
||
tuner-simple 2-0061: creating new instance |
|||
tuner-simple 2-0061: type set to 78 (Philips FMD1216MEX MK3 Hybrid Tuner) |
|||
input: cx88 IR (Hauppauge WinTV-HVR400 as /class/input/input3 |
input: cx88 IR (Hauppauge WinTV-HVR400 as /class/input/input3 |
||
cx88[0]/0: found at 0000:04:08.0, rev: 5, irq: |
cx88[0]/0: found at 0000:04:08.0, rev: 5, irq: 21, latency: 32, mmio: 0xfa000000 |
||
wm8775' 2-001b: chip found @ 0x36 (cx88[0]) |
|||
cx2388x alsa driver version 0.0.6 loaded |
|||
tuner 2-0043: chip found @ 0x86 (cx88[0]) |
|||
tda9887 2-0043: tda988[5/6/7] found @ 0x43 (tuner) |
|||
tuner 2-0061: chip found @ 0xc2 (cx88[0]) |
|||
tuner 2-0061: type set to 63 (Philips FMD1216ME MK3 Hybrid Tuner) |
|||
tuner 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 video0 [v4l2] |
||
cx88[0]/0: registered device |
cx88[0]/0: registered device vbi1 |
||
cx88[0]/0: registered device |
cx88[0]/0: registered device radio2 |
||
cx88[0]/2: cx2388x 8802 Driver Manager |
|||
cx88[0]/2: found at 0000:04:08.2, rev: 5, irq: 20, latency: 32, mmio: 0xf8000000 |
|||
cx2388x dvb driver version 0.0.6 loaded |
|||
cx8802_register_driver() ->registering driver type=dvb access=shared |
|||
CORE cx88[0]: subsystem: 0070:6902, board: Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid [card=58] |
|||
cx88[0]/2: cx2388x based dvb card |
|||
ACPI: PCI Interrupt 0000:04:08.1[A] -> Link [APC1] -> GSI 16 (level, low) -> IRQ 20 |
|||
cx88[0]/1: CX88x/0: ALSA support for cx2388x boards |
|||
DVB: registering new adapter (cx88[0]) |
|||
DVB: registering frontend 0 (Conexant CX24116/CX24118)... |
|||
cx24116_firmware_ondemand: Waiting for firmware upload (dvb-fe-cx24116.fw)... |
|||
cx24116_firmware_ondemand: Waiting for firmware upload(2)... |
|||
cx24116_firmware_ondemand: Firmware upload complete |
|||
Multi Frontend Drivers (kernel 2.6.24) |
|||
-------------------------------------- |
|||
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], frontend(s): 2 |
|||
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: cx2388x 8802 Driver Manager |
||
cx88[0]/2: found at 0000:04:08.2, rev: 5, irq: 21, latency: 32, mmio: 0xf8000000 |
cx88[0]/2: found at 0000:04:08.2, rev: 5, irq: 21, latency: 32, mmio: 0xf8000000 |
||
cx8802_probe() allocating 2 frontend(s) |
cx8802_probe() allocating 2 frontend(s) |
||
cx88[0]/1: CX88x/0: ALSA support for cx2388x boards |
|||
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: cx2388x dvb driver version 0.0.6 loaded |
||
cx88/2: registering cx8802 driver, type: dvb access: shared |
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= |
cx88[0]/2: subsystem: 0070:6902, board: Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid [card=68] |
||
cx88[0]/2: cx2388x based DVB/ATSC card |
cx88[0]/2: cx2388x based DVB/ATSC card |
||
tuner |
tuner-simple 2-0061: attaching existing instance |
||
tuner-simple 2-0061: type set to 63 (Philips FMD1216MEX MK3 Hybrid Tuner) |
|||
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]/1: CX88x/0: ALSA support for cx2388x boards |
|||
tda9887 2-0043: i2c i/o error: rc == -121 (should be 4) |
|||
DVB: registering new adapter (cx88[0]) |
DVB: registering new adapter (cx88[0]) |
||
DVB: registering adapter 0 frontend 0 (Conexant CX24116/CX24118)... |
DVB: registering adapter 0 frontend 0 (Conexant CX24116/CX24118)... |
||
Line 330: | Line 277: | ||
cx24116_load_firmware: FW version 1.20.79.0 |
cx24116_load_firmware: FW version 1.20.79.0 |
||
cx24116_firmware_ondemand: Firmware upload complete |
cx24116_firmware_ondemand: Firmware upload complete |
||
</pre> |
|||
===Sound driver=== |
|||
Alsa driver: cx88_alsa. |
|||
To make sure the sound card in the HVR-4000 does not grab card index 0 (instead of your |
|||
motherboard or discrete sound card) add the following to /etc/modprobe.d/alsa-base (or wherever |
|||
your distro sets alsa kernel module options): |
|||
# Prevent abnormal drivers from grabbing index 0 |
|||
options cx88_alsa index=-2 |
|||
Note: the Ubuntu Hardy kernel (2.6.24) has a separate Ubuntu version of the cx88_alsa module |
|||
which causes problems if you compile your own drivers (modprobe cx88_alsa gives |
|||
'cx88_alsa: disagrees about version of symbol' errors). Upgrade the kernel to one |
|||
which uses a stock cx88_alsa module and then compile and install the HVR4000 driver. See http://www.howtoforge.com/kernel_compilation_ubuntu. |
|||
===Usage with MythTV=== |
|||
[[MythTV]] v0.22 onwards supports multiple frontends and works fine. |
|||
UPDATE: DVB-T has no channel search under Broadcast with h264/HE-AAC. Scan resulting in: |
|||
Signal Strength: 99%, signal/noise: 49% |
|||
All channel scans end up with "Timed out, no signal". Seems to be something broken in MythTV for this function. |
|||
{{Note|There seems to be a bug since kernel 3.3.8: |
|||
A bug since kernel 3.3.8 (according to http://www.sat4all.com/forums/topic/324586-iemand-sasc-ng-al-werkend-met-32-kernels/page__st__20#entry2123480) triggers a race condition that makes MythTV unable to get a lock (http://code.mythtv.org/trac/ticket/10830). |
|||
Most easily worked around by running 'femon -H -aX' (where X is the adapter number used) for scanning to help MythTV get a lock. Confirmed to work on Kubuntu 12.10 running MythTV 0.26-patches with kernel 3.5. Installation of firmware still required. }} |
|||
===Audio/Video capture=== |
|||
Scan for channels (UK): |
|||
<pre> |
|||
mplayer -v tv:// -tv driver=v4l2:device=/dev/video0:chanlist=europe-west:normid=4:alsa:adevice=hw.1:immediatemode=0 -tvscan autostart:period=2.0:threshold=20 |
|||
</pre> |
|||
Play channel (BBC1 WOOLWICH UK): |
|||
<pre> |
|||
mplayer -v tv:// -tv driver=v4l2:device=/dev/video0:chanlist=europe-west:normid=4:alsa:adevice=hw.1:immediatemode=0:freq=759.25 |
|||
</pre> |
|||
Capture channel (BBC1 WOOLWICH UK): |
|||
<pre> |
|||
mencoder -fps 50 -ofps 50 -vf harddup,softskip,yadif=1 tv:// -tv channel=57:driver=v4l2:device=/dev/video0:normid=4:input=0:alsa:adevice=hw.1,0:audiorate=32000:width=768:height=576 -ovc lavc -lavcopts vcodec=mpeg4:autoaspect:vbitrate=512 -oac mp3lame -lameopts cbr:preset=96 -endpos 60 -o test.avi |
|||
</pre> |
|||
===Analogue TV and Teletext Receiver=== |
|||
Does anyone have any info about Linux support? |
|||
{{Note|I have latest http://linuxtv.org/hg/v4l-dvb with mythtv working with analogue TV. You add it as a normal V4L capture card in mythtv. You need this patch to make inital tuning (When you press "Watch TV") in mythtv work: http://svn.mythtv.org/trac/ticket/5744, without it you need to change channel before you see picture instead of snow. Scanning for channels also works. Set audiorate to 48000 to get good sound (in capturecard setup and also in playback groups). |
|||
[[User:Anders|Anders]] 11:40, 26 September 2008 (CEST)}} |
|||
Another way is to use tvtime (http://tvtime.sourceforge.net/) which is available in many distros. |
|||
====S-Video input==== |
|||
Play the video |
|||
<pre> |
|||
mplayer -rawaudio rate=48000 tv:// -tv norm=PAL-BG:input=2:alsa=1:adevice=hw.1:audiorate=48000:immediatemode=0:amode=1 |
|||
</pre> |
|||
This will play the video coming in input=2 (S-Video) (input=1 will be the Composite1 input), use alsa for the audio on device hw:1. |
|||
Record the video |
|||
<pre> |
|||
mencoder -fps 50 -ofps 50 -vf harddup,softskip,yadif=1 tv:// -tv driver=v4l2:device=/dev/video0:norm=PAL-BG:input=2:alsa:adevice=hw.1,0:audiorate=48000:width=768:height=576 -ovc lavc -lavcopts vcodec=mpeg4:autoaspect:vbitrate=512 -oac mp3lame -lameopts cbr:preset=96 -endpos 60 -o test.avi |
|||
</pre> |
|||
===FM Radio Receiver=== |
|||
The Latest Drivers have radio support. See here for radio listening applications http://www.linuxtv.org/wiki/index.php/Radio_Listening_Applications. |
|||
Example test. First start playing the ALSA sound: |
|||
arecord -D hw:1,0 -f dat | aplay & |
|||
and then tune with fm-tools: |
|||
fm -T forever 99.3 |
|||
or with radio (which can have preset radio stations): |
|||
radio -c /dev/radio0 |
|||
Change to mono mode |
|||
<pre> |
|||
v4l2-ctl -d /dev/radio0 -t mono |
|||
</pre> |
|||
Go back to stereo mode |
|||
<pre> |
|||
v4l2-ctl -d /dev/radio0 -t stereo |
|||
</pre> |
</pre> |
||
Line 412: | Line 453: | ||
==External Links== |
==External Links== |
||
* [http://www.hauppauge.co.uk/ |
* [http://www.hauppauge.co.uk/site/products/data_hvr4000.html Hauppauge UK's HVR-4000 product page] |
||
[[Category:DVB-S2 PCI Cards]] |
|||
* [http://dev.kewl.org/hauppauge/ HVR-4000 Linux Driver] |
Latest revision as of 12:36, 16 December 2016
A hybrid DVB-S2 PCI card from Hauppauge.
It is supported under Linux since kernel 2.6.28.
Overview/Features
Quad-mode TV tuner featuring DVB-S2 HDTV, DVB-S, DVB-T, analogue PAL/SECAM cable TV, FM radio reception, plus S-Video, Composite and stereo audio inputs for A/V capture, all in one card!
DiSEqC 1.0 and 1.2 supported with Linux drivers.
Note: DVB-T and DVB-S/S2 cannot be used simultaneously due to a hardware limitation, but you can easily switch from one to the other.
Included: IR remote control, batteries, and remote control receiver. FM radio antenna. S-Video/Composite adapter (to allow a Composite RCA yellow phono to be connected to the S-Video input socket).
Sockets: FM, TV, SAT, S-VIDEO IN, LINE IN, IR.
No CI.
Components Used
- Conexant CX24116 (DVB-S2 demodulator and FEC decoder)
- Conexant CX24118A (digital satellite tuner RF IC)
- Conexant CX23882 (A/V decoder & PCI bridge)
- Conexant CX22702 (DVB-T demodulator)
- Philips FMD1216ME MK3 Hybrid Tuner
- Infineon TUA6034 'TAIFUN' (Analogue/Digital TV tuner)
- Philips TDA9887 (Analogue TV/FM demodulator)
- Philips TDA7040 (FM stereo decoder)
- Wolfson WM8775 (4 stereo input ADC)
- IDT QS3257 (Mux)
- Intersil ISL6421 (LNB voltage controller)
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
Please note firmware in ubuntu repo is working fine now. You can use sudo apt-get install linux-firmware-nonfree
For a discussion of the different firmware versions, see http://allrussian.info/thread.php?threadid=98587.
CX24116 firmware version: 1.20.79.0, size: 32522 bytes, md5sum: 417cafd3b10e207e1dba9a03ad63e405 CX24116 firmware version: 1.22.82.0, size: 32501 bytes, md5sum: b728b5d635393a4081e87d30d87a7632 CX24116 firmware version: 1.23.86.1, size: 32674 bytes, md5sum: dd8dfdfca6b72462d9db8032f78631c8 CX24116 firmware version: 1.26.90.0, size: 32674 bytes, md5sum: b8c856ac15b768854a222e6864e7dc7f
Firmware v1.20.79.0
One could use the script provided from wget-fw.sh to fetch the firmware for us.
Broken Link above wget-fw.sh - UPDATE
Basically what it does is :
1) Fetch an archive (Note: 119=V1.20.79.0):
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) Extract the firmware (v1.20.79.0) and put it in the right place :
sudo dd if=hcw88bda.sys of=/lib/firmware/dvb-fe-cx24116-1.20.79.0.fw skip=81768 bs=1 count=32522 sudo ln -s /lib/firmware/dvb-fe-cx24116-1.20.79.0.fw /lib/firmware/dvb-fe-cx24116.fw
Ubuntu: Place file in /lib/firmware Debian: Place file in /usr/lib/hotplug/firmware/
Firmware v1.22.82.0
For slightly newer firmware (v1.22.82.0) using drivers from Hauppauge
1) Download the driver archive :
wget http://www.hauppauge.de/software/mce/88x_2_122_26109_WHQL.zip
2) Decompress the .sys file :
unzip -jo 88x_2_122_26109_WHQL.zip Driver88/hcw88bda.sys
3) Extract the firmware and put it in the firmware directory :
sudo dd if=hcw88bda.sys of=/lib/firmware/dvb-fe-cx24116-1.22.82.0.fw skip=75504 bs=1 count=32501 sudo ln -s /lib/firmware/dvb-fe-cx24116-1.22.82.0.fw /lib/firmware/dvb-fe-cx24116.fw
Firmware v1.23.86.1
Firmware v1.23.86.1 is available with the TeVii S460 Linux driver at http://tevii.com/support.html. (But what's with the proprietary RAR archive format? Geez...)
wget http://tevii.com/Tevii_linuxdriver_0815.rar sudo apt-get install unrar-free unrar x Tevii_linuxdriver_0815.rar sudo cp tevii_linuxdriver_0815/fw/dvb-fe-cx24116.fw /lib/firmware/dvb-fe-cx24116-1.23.86.1.fw sudo ln -s /lib/firmware/dvb-fe-cx24116-1.23.86.1.fw /lib/firmware/dvb-fe-cx24116.fw
Firmware v1.26.90.0
For slightly newer firmware (v1.26.90.0) using drivers from Hauppauge
1) Download the driver archive (Note: see below for alternate instructions):
wget http://www.hauppauge.de/files/drivers/hcw88/88x_2_125_28070_WHQL.zip
2) Decompress the .sys file :
unzip -jo 88x_2_125_28070_WHQL.zip Driver88/hcw88bda.sys
3) Extract the firmware and put it in the firmware directory :
sudo dd if=hcw88bda.sys of=/lib/firmware/dvb-fe-cx24116-1.26.90.0.fw skip=105768 bs=1 count=32674 sudo ln -s /lib/firmware/dvb-fe-cx24116-1.26.90.0.fw /lib/firmware/dvb-fe-cx24116.fw
Ubuntu: Place file in /lib/firmware Debian: Place file in /usr/lib/hotplug/firmware/
The "manual" for new firmware. I put the greater size for length.
There´s a forum article describing how to extract the firmware: [1] --- see post #3. The download link to get the driver now seems to be [2]. Download it with:
wget http://www.hauppauge.de/files/drivers/hcw88/88x_2_126_28225_WHQL.zip
Decompress the .sys file :
unzip -jo 88x_2_126_28225_WHQL.zip Driver88/hcw88bda.sys
Extract the firmware and put it in the firmware directory :
sudo dd if=hcw88bda.sys of=/lib/firmware/dvb-fe-cx24116-1.26.90.0.fw bs=1 skip=105768 count=32290 sudo ln -s /lib/firmware/dvb-fe-cx24116-1.26.90.0.fw /lib/firmware/dvb-fe-cx24116.fw
For verification of hcw88bda.sys in this version of the driver:
md5sum -b hcw88bda.sys 3f685a2ca6d1dae35b10c06f3a538d82 *hcw88bda.sys
The firmware will be reported as
sudo dmesg|grep cx cx24116_load_firmware: FW version 1.26.90.0
Mythbuntu 9.04 users
Attention Mythbuntu 9.04 users: This card should actually work with this version of Mythbuntu out of the box. However, the installed firmware seems to be buggy so it is necessary to install the Firmware v1.20.79.0 following the steps above.
Drivers
Ubuntu Hardy users should read the note about the sound driver (cx88_alsa) below.
Kernel / v4l-dvb driver
There is a complete driver for this card in the Linux kernel since version 2.6.28. It supports DVB-T, DVB-S/S2, analogue TV, A/V capture and FM radio. If you have the kernel 2.6.28 (or later) you do not need to install a driver yourself.
For developers, or those who need to use a kernel earlier than 2.6.28, a development version of the driver is available in the v4l-dvb repository of the LinuxTV project (the ususal route to merging improvements into the kernel).
hg clone http://hg.kewl.org/pub/v4l-dvb-20100517/ cd v4l-dvb-20100517 make make install reboot
Multiple frontends are supported: DVB-S/S2 and DVB-T appear as /dev/dvb/adapterN/frontend0 and /dev/dvb/adapterN/frontend1 respectively.
Due to a hardware limitation, the two frontends cannot be used simultaneously. However they can be used sequentially within the same application. The driver handles the mutual exclusion appropriately.
DVB-T and DVB-S are supported within API v3.2 (or the new API v5.0) and so it is compatible with current applications. DVB-S2 is accessed through API v5.0, also known as S2API, which was released in kernel 2.6.28.
Command-line scanning for channels can be done with scan-s2. Tuning DVB-S and DVB-S2 channels can be done with szap-s2 :
hg clone http://mercurial.intuxication.org/hg/scan-s2 hg clone http://mercurial.intuxication.org/hg/szap-s2
Kaffeine handles multiple frontends well without modification -- they appear in the DVB settings as "DVB Device 0:0" (=/dev/dvb/adapter0/frontend0, i.e. DVB-S/S2) and "DVB Device 0:1" (=/dev/dvb/adapter0/frontend1, i.e. DVB-T). Both devices can be configured and tuned in the application, and Kaffeine will switch to the correct one each time you change the channel. DiSEqC 1.2 is supported too. Kaffeine will display HDTV delivered over DVB-S2 or DVB-S, e.g. BBC HD, see Kaffeine.
See the section below on how to use this card with MythTV.
Sample kernel output
Linux video capture interface: v2.00 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=68,autodetected], frontend(s): 2 cx88[0]: TV tuner type 63, Radio tuner type -1 cx88/2: cx2388x MPEG-TS Driver Manager version 0.0.6 loaded cx2388x alsa driver version 0.0.6 loaded cx88[0]: i2c init: enabling analog demod on HVR1300/3000/4000 tuner tuner' 2-0043: chip found @ 0x86 (cx88[0]) tda9887 2-0043: creating new instance tda9887 2-0043: tda988[5/6/7] found tuner' 2-0061: chip found @ 0xc2 (cx88[0]) tuner' 2-0063: chip found @ 0xc6 (cx88[0]) 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 78) 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 tuner-simple 2-0061: creating new instance tuner-simple 2-0061: type set to 78 (Philips FMD1216MEX MK3 Hybrid Tuner) input: cx88 IR (Hauppauge WinTV-HVR400 as /class/input/input3 cx88[0]/0: found at 0000:04:08.0, rev: 5, irq: 21, latency: 32, mmio: 0xfa000000 wm8775' 2-001b: chip found @ 0x36 (cx88[0]) cx88[0]/0: registered device video0 [v4l2] cx88[0]/0: registered device vbi1 cx88[0]/0: registered device radio2 cx88[0]/2: cx2388x 8802 Driver Manager cx88[0]/2: found at 0000:04:08.2, rev: 5, irq: 21, latency: 32, mmio: 0xf8000000 cx8802_probe() allocating 2 frontend(s) 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=68] cx88[0]/2: cx2388x based DVB/ATSC card tuner-simple 2-0061: attaching existing instance tuner-simple 2-0061: type set to 63 (Philips FMD1216MEX MK3 Hybrid Tuner) DVB: registering new adapter (cx88[0]) DVB: registering adapter 0 frontend 0 (Conexant CX24116/CX24118)... DVB: registering adapter 0 frontend 1 (Conexant CX22702 DVB-T)... 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
Sound driver
Alsa driver: cx88_alsa.
To make sure the sound card in the HVR-4000 does not grab card index 0 (instead of your motherboard or discrete sound card) add the following to /etc/modprobe.d/alsa-base (or wherever your distro sets alsa kernel module options):
# Prevent abnormal drivers from grabbing index 0 options cx88_alsa index=-2
Note: the Ubuntu Hardy kernel (2.6.24) has a separate Ubuntu version of the cx88_alsa module which causes problems if you compile your own drivers (modprobe cx88_alsa gives 'cx88_alsa: disagrees about version of symbol' errors). Upgrade the kernel to one which uses a stock cx88_alsa module and then compile and install the HVR4000 driver. See http://www.howtoforge.com/kernel_compilation_ubuntu.
Usage with MythTV
MythTV v0.22 onwards supports multiple frontends and works fine. UPDATE: DVB-T has no channel search under Broadcast with h264/HE-AAC. Scan resulting in:
Signal Strength: 99%, signal/noise: 49%
All channel scans end up with "Timed out, no signal". Seems to be something broken in MythTV for this function.
A bug since kernel 3.3.8 (according to http://www.sat4all.com/forums/topic/324586-iemand-sasc-ng-al-werkend-met-32-kernels/page__st__20#entry2123480) triggers a race condition that makes MythTV unable to get a lock (http://code.mythtv.org/trac/ticket/10830).
Most easily worked around by running 'femon -H -aX' (where X is the adapter number used) for scanning to help MythTV get a lock. Confirmed to work on Kubuntu 12.10 running MythTV 0.26-patches with kernel 3.5. Installation of firmware still required.
Audio/Video capture
Scan for channels (UK):
mplayer -v tv:// -tv driver=v4l2:device=/dev/video0:chanlist=europe-west:normid=4:alsa:adevice=hw.1:immediatemode=0 -tvscan autostart:period=2.0:threshold=20
Play channel (BBC1 WOOLWICH UK):
mplayer -v tv:// -tv driver=v4l2:device=/dev/video0:chanlist=europe-west:normid=4:alsa:adevice=hw.1:immediatemode=0:freq=759.25
Capture channel (BBC1 WOOLWICH UK):
mencoder -fps 50 -ofps 50 -vf harddup,softskip,yadif=1 tv:// -tv channel=57:driver=v4l2:device=/dev/video0:normid=4:input=0:alsa:adevice=hw.1,0:audiorate=32000:width=768:height=576 -ovc lavc -lavcopts vcodec=mpeg4:autoaspect:vbitrate=512 -oac mp3lame -lameopts cbr:preset=96 -endpos 60 -o test.avi
Analogue TV and Teletext Receiver
Does anyone have any info about Linux support?
Another way is to use tvtime (http://tvtime.sourceforge.net/) which is available in many distros.
S-Video input
Play the video
mplayer -rawaudio rate=48000 tv:// -tv norm=PAL-BG:input=2:alsa=1:adevice=hw.1:audiorate=48000:immediatemode=0:amode=1
This will play the video coming in input=2 (S-Video) (input=1 will be the Composite1 input), use alsa for the audio on device hw:1.
Record the video
mencoder -fps 50 -ofps 50 -vf harddup,softskip,yadif=1 tv:// -tv driver=v4l2:device=/dev/video0:norm=PAL-BG:input=2:alsa:adevice=hw.1,0:audiorate=48000:width=768:height=576 -ovc lavc -lavcopts vcodec=mpeg4:autoaspect:vbitrate=512 -oac mp3lame -lameopts cbr:preset=96 -endpos 60 -o test.avi
FM Radio Receiver
The Latest Drivers have radio support. See here for radio listening applications http://www.linuxtv.org/wiki/index.php/Radio_Listening_Applications.
Example test. First start playing the ALSA sound:
arecord -D hw:1,0 -f dat | aplay &
and then tune with fm-tools:
fm -T forever 99.3
or with radio (which can have preset radio stations):
radio -c /dev/radio0
Change to mono mode
v4l2-ctl -d /dev/radio0 -t mono
Go back to stereo mode
v4l2-ctl -d /dev/radio0 -t stereo
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"
/etc/lirc/lircd.conf (Works)
begin remote name Hauppauge-HVR4000-Remote bits 16 eps 30 aeps 100 one 0 0 zero 0 0 pre_data_bits 16 pre_data 0x8001 gap 133325 toggle_bit_mask 0x8001001C begin codes Power 0x0074 Go 0x0161 TV 0x0179 Video 0x0189 Music 0x0188 Pictures 0x016F Guide 0x016D Radio 0x0181 Up 0x0067 Down 0x006C Left 0x0069 Right 0x006A OK 0x001C Back/Exit 0x00AE Menu 0x008B PrevCh 0x019C Mute 0x0071 Vol+ 0x0073 Vol- 0x0072 Ch+ 0x0192 Ch- 0x0193 Rec 0x00A7 Stop 0x0080 Play 0x00CF Pause 0x0077 Rewind 0x00A8 Forward 0x00D0 Replay 0x00A5 Skip 0x00A3 1 0x0002 2 0x0003 3 0x0004 4 0x0005 5 0x0006 6 0x0007 7 0x0008 8 0x0009 9 0x000A 0 0x000B Text 0x0184 Sub/CC 0x0172 Red 0x018E Green 0x018F Yellow 0x0190 Blue 0x0191 end codes end remote