Hauppauge WinTV-HVR-2200

From LinuxTVWiki
Revision as of 07:36, 15 July 2011 by Redcane (talk | contribs) (Add up to date instructions for building from linux tv git repository.)
Jump to navigation Jump to search
HVR-2200 Image

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

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

External Links