Hauppauge WinTV-HVR-1700
The Hauppauge WinTV-HVR-1700 is a hybrid analog and DVB-T PCIe card with a hardware MPEG2 encoder.
Overview/Features
- 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
- Conexant CX23885 PCIe A/V Decoder
- Conexant CX23417 MPEGII A/V Encoder
- NXP/Philips TDA10048HN Demodulator
Other Images
Identification
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.
Firmware
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
Drivers
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 now 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:
LOAD_MODULES=true DRIVER="devinput" # 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: DEVICE="/dev/input/by-id/usb-SMK_CORPORATION_MCE_TRANCEIVR_Emulator_Device_2006_PB070418014941C-event-if00"
Now restart the lirc-daemon and run "irw". You should see any pressed key on the screen!