Hauppauge WinTV-HVR-4000: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
 
(181 intermediate revisions by 30 users not shown)
Line 1: Line 1:
[[Image:Hauppague WinTV-HVR-4000.jpg|right|250px|The HVR-4000 and Remote]]
[[Image:Hauppague WinTV-HVR-4000.jpg|right|250px|The HVR-4000 and Remote]]


A hybrid DVB-S/DVB-S2/DVB-T/Analog/FM Radio [[DVB-S2 PCI Cards|PCI card]] from [[Hauppauge]].
A hybrid [[DVB-S2]] [[DVB-S2 PCI Cards|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).
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!
DVB-S


[[DiSEqC]] 1.0 and 1.2 supported with Linux drivers.
DVB-S2


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.
DVB-T


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).
Analog TV


Sockets: FM, TV, SAT, S-VIDEO IN, LINE IN, IR.
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


No [[CI]].


===Components Used===
===Components Used===
* [[Conexant CX24116]] (DVB-S2 demodulator and FEC decoder)
CX24116
* Conexant CX24118A (digital satellite tuner RF IC)

* [[Conexant CX2388x| Conexant CX23882]] (A/V decoder & PCI bridge)
CX24118A
* Conexant CX22702 (DVB-T demodulator)

* Philips FMD1216ME MK3 Hybrid Tuner
Cx23880
** 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 79: 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) fetch an archive : "wget ftp://167.206.143.11/outgoing/Oxford/88x_2_119_25023_WHQL.zip"
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"
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"
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 (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 [http://osdir.com/ml/linux-media/2009-04/msg00112.html new firmware]. I put the greater size for length.

{{Note|There seems to be a more recent version of this firmware:}}

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.
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:
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===
===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''
{{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.
However, experimental support does exist.


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


There is a complete driver for this card in the Linux kernel since version 2.6.28.
Download patch: http://dev.kewl.org/hauppauge/v4l-dvb-hg-2007-12-26.diff
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}}
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'''


For developers, or those who need to use a kernel earlier than 2.6.28, a development
Compile: cd v4l-dvb; make;make install;reboot ...
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/
See: http://dev.kewl.org/hauppauge/ about enabling DVB-T or DVB-S2 (DVB-S is the default at the moment)
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.
===[[Multiproto]] driver===
The [http://www.vdr-wiki.de/wiki/index.php/OpenSuSE_DVB-S2_-_Step_by_Step_Installationsanleitung_%28Achtung_Beta%29 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/023335.html the patch from linuxtv mailing list] which you should apply to the tree before compiling the driver (edited the 27th january 2008 by Grégoire Favre).


Due to a hardware limitation, the two frontends cannot be used ''simultaneously''. However they
After having applied the patch, one could follow the first link of this section to have a VDR with full DVB-S2 support!!!
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
linux with kernel 2.6.23.1 (The [[multiproto]] HG/Patch stopped working after 2.6.23.1 someplace)
compatible with current applications. DVB-S2 is accessed through API v5.0, also known as [[S2API]], which was released in kernel 2.6.28.
<pre>
hg clone http://jusst.de/hg/multiproto
wget http://www.linuxtv.org/pipermail/linux-dvb/attachments/20080107/0b4f256b/attachment-0001.obj
mv attachment-0001.obj HVR-4000-VDR.diff.bz2
bunzip2 HVR-4000-VDR.diff.bz2
patch -p0 < HVR-4000-VDR.diff
cd multiproto
make; make install ; reboot
</pre>
With patch from 27th january 2008 :
<pre>
hg clone http://jusst.de/hg/multiproto
wget http://www.linuxtv.org/pipermail/linux-dvb/attachments/20080127/1ed06744/attachment-0001.obj
mv attachment-0001.obj HVR-4000-VDR.diff.bz2
bunzip2 HVR-4000-VDR.diff.bz2
cd multiproto
patch -p1 < HVR-4000-VDR.diff
cd v4l
make; make install ; reboot
</pre>


Command-line scanning for channels can be done with [[scan-s2]]. Tuning DVB-S and DVB-S2 channels can be
===Sample kernel output===
done with [[szap-s2]] :
<pre>
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
When Enabled for DVB-S (options cx88-dvb frontend=0) (Kernel 2.6.26.14)
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]].
cx88/2: cx2388x MPEG-TS Driver Manager version 0.0.6 loaded

===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=59,autodetected]
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[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
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
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: 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 63)
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 157: 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: 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: 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)
cx88[0]/0: found at 0000:04:08.0, rev: 5, irq: 21, latency: 32, mmio: 0xfa000000
cx88[0]/1: CX88x/0: ALSA support for cx2388x boards
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=59]
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' 2-0043: chip found @ 0x86 (cx88[0])
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
DVB: registering new adapter (cx88[0])
DVB: registering new adapter (cx88[0])
DVB: registering frontend 0 (Conexant CX24116/CX24118)...
DVB: registering adapter 0 frontend 0 (Conexant CX24116/CX24118)...
DVB: registering adapter 0 frontend 1 (Conexant CX22702 DVB-T)...
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 (dvb-fe-cx24116.fw)...
cx24116_firmware_ondemand: Waiting for firmware upload(2)...
cx24116_firmware_ondemand: Waiting for firmware upload(2)...
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.
When enabled for DVB-T (options cx88-dvb frontend=1) (Kernel 2.6.26.14)
-----------------------------------------------------------------------


To make sure the sound card in the HVR-4000 does not grab card index 0 (instead of your
cx88/0: cx2388x v4l2 driver version 0.0.6 loaded
motherboard or discrete sound card) add the following to /etc/modprobe.d/alsa-base (or wherever
cx88/2: cx2388x MPEG-TS Driver Manager version 0.0.6 loaded
your distro sets alsa kernel module options):
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)...


# 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
When Enabled for DVB-S/S2 multiproto (options cx88-dvb frontend=0) (Kernel 2.6.26.1)
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
cx2388x v4l2 driver version 0.0.6 loaded
which uses a stock cx88_alsa module and then compile and install the HVR4000 driver. See http://www.howtoforge.com/kernel_compilation_ubuntu.
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
===Usage with MythTV===
cx2388x cx88-mpeg Driver Manager version 0.0.6 loaded

cx88[0]: i2c init: enabling analog demod on HVR1300/3000/4000 tuner
[[MythTV]] v0.22 onwards supports multiple frontends and works fine.
tveeprom 2-0050: Hauppauge model 69009, rev B2D3, serial# 2807241
UPDATE: DVB-T has no channel search under Broadcast with h264/HE-AAC. Scan resulting in:
tveeprom 2-0050: MAC address is 00-0D-FE-2A-D5-C9

tveeprom 2-0050: tuner model is Philips FMD1216MEX (idx 133, type 63)
Signal Strength: 99%, signal/noise: 49%
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)
All channel scans end up with "Timed out, no signal". Seems to be something broken in MythTV for this function.
tveeprom 2-0050: decoder processor is CX882 (idx 25)

tveeprom 2-0050: has radio, has IR receiver, has no IR transmitter
{{Note|There seems to be a bug since kernel 3.3.8:
cx88[0]: hauppauge eeprom: model=69009

input: cx88 IR (Hauppauge WinTV-HVR400 as /class/input/input3
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).
cx88[0]/0: found at 0000:04:08.0, rev: 5, irq: 20, latency: 32, mmio: 0xfa000000
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. }}
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)
===Audio/Video capture===
tuner 2-0061: chip found @ 0xc2 (cx88[0])

tuner 2-0061: type set to 63 (Philips FMD1216ME MK3 Hybrid Tuner)
Scan for channels (UK):
tuner 2-0061: type set to 63 (Philips FMD1216ME MK3 Hybrid Tuner)

tuner 2-0063: chip found @ 0xc6 (cx88[0])
<pre>
cx88[0]/0: registered device video0 [v4l2]
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
cx88[0]/0: registered device vbi0
</pre>
cx88[0]/0: registered device radio0

cx88[0]/2: cx2388x 8802 Driver Manager
Play channel (BBC1 WOOLWICH UK):
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
<pre>
cx8802_register_driver() ->registering driver type=dvb access=shared
mplayer -v tv:// -tv driver=v4l2:device=/dev/video0:chanlist=europe-west:normid=4:alsa:adevice=hw.1:immediatemode=0:freq=759.25
CORE cx88[0]: subsystem: 0070:6902, board: Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid [card=58]
</pre>
cx88[0]/2: cx2388x based dvb card

ACPI: PCI Interrupt 0000:04:08.1[A] -> Link [APC1] -> GSI 16 (level, low) -> IRQ 20
Capture channel (BBC1 WOOLWICH UK):
cx88[0]/1: CX88x/0: ALSA support for cx2388x boards

DVB: registering new adapter (cx88[0])
<pre>
DVB: registering frontend 0 (Conexant CX24116/CX24118)...
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
cx24116_firmware_ondemand: Waiting for firmware upload (dvb-fe-cx24116.fw)...
</pre>
cx24116_firmware_ondemand: Waiting for firmware upload(2)...

cx24116_firmware_ondemand: Firmware upload complete
===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 272: Line 384:
DEVICE="/dev/input/eventX"
DEVICE="/dev/input/eventX"


/etc/lirc/lircd.conf (Works, but needs more buttons added in)
/etc/lirc/lircd.conf (Works)


<pre>
<pre>
begin remote
begin remote


name Hauppauge_4000_Remote
name Hauppauge-HVR4000-Remote
bits 16
bits 16
eps 30
eps 30
Line 286: Line 398:
pre_data_bits 16
pre_data_bits 16
pre_data 0x8001
pre_data 0x8001
gap 135943
gap 133325
toggle_bit_mask 0x8001001C
toggle_bit 0



begin codes
begin codes
Power 0x0074
Go 0x0161
TV 0x0179
Video 0x0189
Music 0x0188
Pictures 0x016F
Guide 0x016D
Radio 0x0181
Up 0x0067
Up 0x0067
Down 0x006C
Down 0x006C
Left 0x0069
Left 0x0069
Right 0x006A
Right 0x006A
OK 0x001C
Back/Exit 0x00AE
Back/Exit 0x00AE
OK 0x001C
Menu 0x008B
PrevCh 0x019C
Mute 0x0071
Mute 0x0071
CH+ 0x0192
Ch- 0x0193
Vol+ 0x0073
Vol+ 0x0073
Vol- 0x0072
Vol- 0x0072
Record 0x00A7
Ch+ 0x0192
Ch- 0x0193
Rec 0x00A7
Stop 0x0080
Play 0x00CF
Pause 0x0077
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 codes


Line 310: Line 453:


==External Links==
==External Links==
* [http://www.hauppauge.co.uk/pages/products/data_hvr4000.html Hauppauge UK's HVR-4000 product page]
* [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

The HVR-4000 and Remote

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.

Note: There seems to be a more recent version of this firmware:

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

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 read here

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.

Note: The kernel 2.6.30, 2.6.31, 2.6.32 have a broken driver. The mercurial 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

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.

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

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?

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

 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

External Links