Hauppauge WinTV-HVR-2200
The Hauppauge WinTV-HVR-2200 is a hybrid analogue and DVB-T PCIe card
Support for its digital side was added to Hg in September 2009.
Overview/Features
Features a hardware MPEG2 encoder and dual tuners (DVB-T/Analog TV Input)
Components Used
Based on as far as I know: PCIe dual channel hybrid PC TV PCV520/20
- TDA18271 - Tuner (http://www.nxp.com/acrobat_download/literature/9397/75015474.pdf)
- In Latest HG
- NXP SAA7164E - NXP PCI Express dual-channel, PC TV capture/encode IC
- In Development by Steven Toth
- In Latest HG
Identification
02:00.0 Multimedia controller: Philips Semiconductors Unknown device 7164 (rev 81) Subsystem: Hauppauge computer works Inc. Unknown device 8901 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 255 Region 0: Memory at fd400000 (64-bit, non-prefetchable) [size=4M] Region 2: Memory at fd000000 (64-bit, non-prefetchable) [size=4M] Capabilities: [40] Message Signalled Interrupts: Mask- 64bit+ Queue=0/4 Enable- Address: 0000000000000000 Data: 0000 Capabilities: [50] Express (v1) Endpoint, MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <256ns, L1 <1us ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 128 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend- LnkCap: Port #1, Speed 2.5GT/s, Width x2, ASPM L0s L1, Latency L0 <4us, L1 <64us ClockPM- Suprise- LLActRep- BwNot- LnkCtl: ASPM Disabled; RCB 128 bytes Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt- Capabilities: [74] Power Management version 3 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot-,D3cold-) Status: D0 PME-Enable- DSel=0 DScale=0 PME- Capabilities: [7c] Vendor Specific Information <?> Capabilities: [100] Vendor Specific Information <?> Capabilities: [160] Virtual Channel <?>
Making it Work
Install the firmware:
wget http://www.steventoth.net/linux/hvr22xx/22xxdrv_27086.zip wget http://www.steventoth.net/linux/hvr22xx/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip wget http://www.steventoth.net/linux/hvr22xx/extract.sh sh extract.sh cp *fw /lib/firmware # for some linux distros, might need the following line instead of the above cp *fw /lib/firmware/`uname -r`
Using current linuxtv git tree (http://www.linuxtv.org/wiki/index.php/How_to_Obtain,_Build_and_Install_V4L-DVB_Device_Drivers):
Install tools. For Ubuntu or debian:
apt-get install get patchutils lsdiff libproc-processtable-perl build-essential
Download the build tree and build it. It will download compatibility patches for your kernel if available:
git clone git://linuxtv.org/media_build.git cd media_build ./build.sh
Now that we've built all the latest linuxtv drivers install them (from the media_build folder):
sudo make install
Finally reboot to load the driver (or use sudo make unload, then sudo modprobe driver name to unload and reload the drivers - see http://www.linuxtv.org/wiki/index.php/How_to_Obtain,_Build_and_Install_V4L-DVB_Device_Drivers for more info.)
Alternative method using (older) mercurial tree: Install tools. For Mythdora:
yum install mercurial
For Ubuntu or Debian:
apt-get install mercurial libncurses5-dev
For stable tree
hg clone http://kernellabs.com/hg/saa7164-stable/ cd saa7164-stable
For development tree
hg clone http://kernellabs.com/hg/~stoth/saa7164-dev/ cd saa7164-dev
For Ubuntu or Debian, deconfigure the firedtv driver in the following process per Devin Heitmueller:
make menuconfig perl -p -i -e 's/FIREDTV=m/FIREDTV=n/' v4l/.config edit as needed but should have all enabled that is needed make make install reboot
For non-Ubuntu or Debian:
make menuconfig edit as needed but should have all enabled that is needed make make install reboot
Every time the linux kernel is upgraded to a new version, you'll need to reboot and then repeat the above steps.
MythDora: With a fresh Mythdora 10 install, chances are the above won't work until you install the kernel source code.
yum install kernel-devel
Repeat the make commands above after installing the kernel source.
Sample kernel output
saa7164 driver loaded ACPI: PCI Interrupt Link [APC5] enabled at IRQ 16 saa7164 0000:02:00.0: PCI INT A -> Link[APC5] -> GSI 16 (level, low) -> IRQ 16 CORE saa7164[0]: dev->lmmio = 0xf9800000 CORE saa7164[0]: dev->lmmio2 = 0xf9c80000 CORE saa7164[0]: dev->bmmio = 0xf9800000 CORE saa7164[0]: dev->bmmio2 = 0xf9c80000 CORE saa7164[0]: subsystem: 0070:8901, board: Hauppauge WinTV-HVR2200 [card=6,autodetected] saa7164[0]/0: found at 0000:02:00.0, rev: 129, irq: 16, latency: 0, mmio: 0xfd400000 saa7164 0000:02:00.0: setting latency timer to 64 saa7164_downloadfirmware() no first image saa7164_downloadfirmware() Waiting for firmware upload (v4l-saa7164-1.0.2.fw) saa7164 0000:02:00.0: firmware: requesting v4l-saa7164-1.0.2.fw saa7164_downloadfirmware() firmware read 3978608 bytes. saa7164_downloadfirmware() firmware loaded. Firmware file header part 1: .FirmwareSize = 0x0 .BSLSize = 0x0 .Reserved = 0x3cb57 .Version = 0x3 saa7164_downloadfirmware() SecBootLoader.FileSize = 3978608 saa7164_downloadfirmware() FirmwareSize = 0x1fd6 saa7164_downloadfirmware() BSLSize = 0x0 saa7164_downloadfirmware() Reserved = 0x0 saa7164_downloadfirmware() Version = 0x51cc1 saa7164_downloadimage() Image downloaded, booting... saa7164_downloadimage() Image booted successfully. starting firmware download(2) saa7164_downloadimage() Image downloaded, booting... saa7164_downloadimage() Image booted successfully. firmware download complete. saa7164[0]: i2c bus 0 registered saa7164[0]: i2c bus 1 registered saa7164[0]: i2c bus 2 registered tveeprom 3-0000: Hauppauge model 89619, rev B2F2, serial# 3019750 tveeprom 3-0000: MAC address is 00-0D-FE-2E-13-E6 tveeprom 3-0000: tuner model is NXP 18271C2_716x (idx 152, type 4) tveeprom 3-0000: TV standards PAL(B/G) NTSC(M) PAL(I) SECAM(L/L') PAL(D/D1/K) ATSC/DVB Digital (eeprom 0xfc) tveeprom 3-0000: audio processor is SAA7164 (idx 43) tveeprom 3-0000: decoder processor is CX23887A (idx 39) tveeprom 3-0000: has radio saa7164[0]: Hauppauge eeprom: model=89619 tda18271 4-0060: creating new instance TDA18271HD/C2 detected @ 4-0060 DVB: registering new adapter (saa7164) DVB: registering adapter 2 frontend 0 (NXP TDA10048HN DVB-T)... tda18271 5-0060: creating new instance TDA18271HD/C2 detected @ 5-0060 DVB: registering new adapter (saa7164) DVB: registering adapter 3 frontend 0 (NXP TDA10048HN DVB-T)... tda10048_firmware_upload: waiting for firmware upload (dvb-fe-tda10048-1.0.fw)... i2c-adapter i2c-4: firmware: requesting dvb-fe-tda10048-1.0.fw tda10048_firmware_upload: firmware read 24878 bytes. tda10048_firmware_upload: firmware uploading tda10048_firmware_upload: firmware uploaded tda18271: performing RF tracking filter calibration tda18271: RF tracking filter calibration complete tda10048_firmware_upload: waiting for firmware upload (dvb-fe-tda10048-1.0.fw)... i2c-adapter i2c-5: firmware: requesting dvb-fe-tda10048-1.0.fw tda10048_firmware_upload: firmware read 24878 bytes. tda10048_firmware_upload: firmware uploading tda10048_firmware_upload: firmware uploaded tda18271: performing RF tracking filter calibration tda18271: RF tracking filter calibration complete
MythDora: A non-programmer, Linux and MythTV newbie wrote the added details about MythDora 10. I got the driver to work using Kernel 2.6.27.38-170.2.113.fc10.x86_64, by installing Mercurial and kernel-devel (plus a few other guesses, documented in the Discussion tab). Other research suggested I needed ncurses and ncurses-devel, and gcc, but I'm not sure of those are really required. Hopefully someone comes along and corrects any errors and incorporates additional information in this main article, which I found most useful.