Hauppauge WinTV-HVR-1700

From LinuxTVWiki

Jump to: navigation, search
WinTV-HVR-1700 81519LF Rev A1E9

The Hauppauge WinTV-HVR-1700 is a hybrid analog and DVB-T PCIe card with a hardware MPEG2 encoder.



  • PCIe interface
  • Inputs: Antenna, Composite/S-Video In and 3.5 audio jack
  • Inputs (MC-Kit): Antenna, S-Video In and right/left audio Cinch

Components Used

Other Images


 02:00.0 Multimedia video controller [0400]: Conexant Unknown device [14f1:8852] (rev 02)
         Subsystem: Hauppauge computer works Inc. Unknown device [0070:8101]
         Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-
         Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
         Latency: 0, Cache Line Size: 64 bytes
         Interrupt: pin A routed to IRQ 18
         Region 0: Memory at fe800000 (64-bit, non-prefetchable) [size=2M]
         Capabilities: [40] Express Endpoint IRQ 0
               Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag-
               Device: Latency L0s <64ns, L1 <1us
               Device: AtnBtn- AtnInd- PwrInd-
               Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
               Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop+
               Device: MaxPayload 128 bytes, MaxReadReq 512 bytes
               Link: Supported Speed 2.5Gb/s, Width x1, ASPM L0s L1, Port 0
               Link: Latency L0s <2us, L1 <4us
               Link: ASPM Disabled RCB 64 bytes CommClk+ ExtSynch-
               Link: Speed 2.5Gb/s, Width x1
         Capabilities: [80] 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-
         Capabilities: [90] Vital Product Data
         Capabilities: [a0] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
               Address: 0000000000000000  Data: 0000

Making it Work

The board works in digital mode only currently.


Proper operation of the device needs 3 firmware files (dvb-fe-tda10048-1.0.fw, v4l-cx23885-avcore-01.fw and v4l-cx23885-enc.fw), which can be obtained at the following location. Once the download is complete, you need to extract the files and place a copy of them in your /lib/firmware directory. (This directory may differ with some distros; consult your distro's documentation for the appropriate location) :

# wget http://steventoth.net/linux/hvr1700/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip
# wget http://steventoth.net/linux/hvr1700/extract.sh
# wget http://steventoth.net/linux/hvr1700/readme.txt
# less readme.txt
# /bin/sh extract.sh
# sudo cp v4l-cx23885-enc.fw /lib/firmware
# sudo cp v4l-cx23885-avcore-01.fw /lib/firmware
# sudo cp dvb-fe-tda10048-1.0.fw /lib/firmware


As of Kernel 2.6.28 and onwards, a simple

modprobe cx23885

will do. You may need to add an offset to your tansponder frequencies (+166KHz) in order to tune properly though.

Sample Kernel Output

# dmseg
cx23885 driver version 0.0.2 loaded
cx23885 0000:04:00.0: PCI INT A -> Link[LN2A] -> GSI 18 (level, low) -> IRQ 18
cx23885[0]/0: cx23885_dev_setup() Memory configured for PCIe bridge type 885
cx23885[0]/0: cx23885_init_tsport(portno=2)
CORE cx23885[0]: subsystem: 0070:8101, board: Hauppauge WinTV-HVR1700 [card=8,autodetected]
cx23885[0]/0: cx23885_pci_quirks()
cx23885[0]/0: cx23885_dev_setup() tuner_type = 0x0 tuner_addr = 0x0
cx23885[0]/0: cx23885_dev_setup() radio_type = 0x0 radio_addr = 0x0
cx23885[0]/0: cx23885_reset()
cx23885[0]/0: cx23885_sram_channel_setup() Configuring channel [VID A]
cx23885[0]/0: cx23885_sram_channel_setup() Erasing channel [ch2]
cx23885[0]/0: cx23885_sram_channel_setup() Configuring channel [TS1 B]
cx23885[0]/0: cx23885_sram_channel_setup() Erasing channel [ch4]
cx23885[0]/0: cx23885_sram_channel_setup() Erasing channel [ch5]
cx23885[0]/0: cx23885_sram_channel_setup() Configuring channel [TS2 C]
cx23885[0]/0: cx23885_sram_channel_setup() Erasing channel [ch7]
cx23885[0]/0: cx23885_sram_channel_setup() Erasing channel [ch8]
cx23885[0]/0: cx23885_sram_channel_setup() Erasing channel [ch9]
tveeprom 7-0050: Hauppauge model 81519, rev B2E9, serial# 6177447
tveeprom 7-0050: MAC address is 00-0D-FE-5E-42-A7
tveeprom 7-0050: tuner model is Philips 18271_8295 (idx 149, type 54)
tveeprom 7-0050: TV standards PAL(B/G) PAL(I) SECAM(L/L') PAL(D/D1/K) ATSC/DVB Digital (eeprom 0xf4)
tveeprom 7-0050: audio processor is CX23885 (idx 39)
tveeprom 7-0050: decoder processor is CX23885 (idx 33)
tveeprom 7-0050: has no radio
cx23885[0]: hauppauge eeprom: model=81519
cx25840 9-0044: cx25  0-21 found @ 0x88 (cx23885[0])
cx25840 9-0044: firmware: requesting v4l-cx23885-avcore-01.fw
cx25840 9-0044: loaded v4l-cx23885-avcore-01.fw firmware (16382 bytes)
cx23885_dvb_register() allocating 1 frontend(s)
cx23885[0]: cx23885 based dvb card
tda829x 8-0042: type set to tda8295
tda18271 8-0060: creating new instance
TDA18271HD/C1 detected @ 8-0060
DVB: registering new adapter (cx23885[0])
DVB: registering adapter 2 frontend 0 (NXP TDA10048HN DVB-T)...
cx23885_dev_checkrevision() Hardware revision = 0xb0
cx23885[0]/0: found at 0000:04:00.0, rev: 2, irq: 18, latency: 0, mmio: 0xfe800000
cx23885 0000:04:00.0: setting latency timer to 64

<-- dvbscan starts here -->

tda10048_firmware_upload: waiting for firmware upload (dvb-fe-tda10048-1.0.fw)...
cx23885 0000:04:00.0: 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

Remote Control Support

The MC-Kit edition comes with a typical Media Center USB IR receiver/blaster (SMK Manufacturing, Inc. eHome Infrared Receiver) and remote ( rc_keymaps: rc6_mce ) Take care to dont use a USB-3 port (USB-2.0/1.1 will do) ! In most recent distributions the remote will work out of the box.

# sudo apt-get install ir-keytable
# sudo ir-keytable
Found /sys/class/rc/rc0/ (/dev/input/event6) with:
Driver mceusb, table rc-rc6-mce
Supported protocols: NEC RC-5 RC-6 JVC SONY LIRC other 
Enabled protocols: RC-6 
Repeat delay = 500 ms, repeat period = 125 ms
# sudo ir-keytable -t
Testing events. Please, press CTRL-C to abort.

Press some key from the remote will result in:

1371831467.977553: event MSC: scancode = 800f0401
1371831467.977562: event key down: KEY_NUMERIC_1 (0x0201)
1371831467.977564: event sync
1371831468.111555: event MSC: scancode = 800f0401
1371831468.111559: event sync
1371831468.362411: event key up: KEY_NUMERIC_1 (0x0201)
1371831468.362414: event sync

For usage with 3rd-party software, you have to install lirc and configure the lirc-config (hardware.conf). Define the following properties:

# possibly the DEVICE has to look different for you .. just check what is available in "/dev/input/by-id" on your maschine. Here what I have:

Now restart the lirc-daemon and run "irw". You should see any pressed key on the screen!

External Links

Personal tools