Hauppauge WinTV-HVR-2200

From LinuxTVWiki
Revision as of 19:23, 5 December 2009 by Ntsc525 (talk | contribs)
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

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`

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

MythDora: With a fresh Mythdora 10 install, chances are this won't work. Install Mercurial, and try again.

yum install mercurial

Repeat the hg command that didn't work before.

then...

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