Pinnacle PCTV HD Card (800i)
A hybrid ATSC PCI card from Pinnacle.
Drivers are now included in the mainline kernel
Overview/Features
A hybrid device that supports analog, ATSC (8-VSB) and digital cable (QAM) TV sources. The card also supports analog A/V inputs, and has an IR remote control input.
It appears that it may be also being sold as the Yuan PG583Q. Yuan lists two models (PG583 and PG583Q) -- simply a wild guess, but perhaps the former uses a XC3028 (not QAM capable) and the later XC5000 (QAM capable) ?? The Yuan boards also have a connector of sorts on the back portion of the PCB that is not present on the Pinnacle board.
Components Used
- Xceive XC5000 (tuner & analog IF demodulator) [1]
- Samsung S5H1409 (digital demodulator) [2]
- Conexant CX23883 (A/V decoder & PCI bridge) [3]
- Cirrus 5340 CZZ (audio ADC) [4]
- Atmel ATMLH726 (8-pin eeprom)
Identification
PCI subsytem ID is: 11bd:0051
Output of lspci -vvnn
:
00:0a.0 Multimedia video controller [0400]: Conexant CX23880/1/2/3 PCI Video and Audio Decoder [14f1:8800] (rev 05) Subsystem: Pinnacle Systems Inc. Unknown device [11bd:0051] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 32 (5000ns min, 13750ns max), Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 19 Region 0: Memory at dc000000 (32-bit, non-prefetchable) [size=16M] Capabilities: [44] Vital Product Data Capabilities: [4c] 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- 00:0a.1 Multimedia controller [0480]: Conexant CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] [14f1:8801] (rev 05) Subsystem: Pinnacle Systems Inc. Unknown device [11bd:0051] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 32 (1000ns min, 63750ns max), Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 19 Region 0: Memory at dd000000 (32-bit, non-prefetchable) [size=16M] Capabilities: [4c] 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- 00:0a.2 Multimedia controller [0480]: Conexant CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] [14f1:8802] (rev 05) Subsystem: Pinnacle Systems Inc. Unknown device [11bd:0051] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 32 (1500ns min, 22000ns max), Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 5 Region 0: Memory at de000000 (32-bit, non-prefetchable) [size=16M] Capabilities: [4c] 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-
Making it Work
Firmware
You MUST have the firmware for the XC5000 tuner installed for the 800i to function properly. Note the firmware directory may differ with some distros; consult your distro's documentation for the appropriate location)
If using Linux kernel 2.6.31 or you are using the latest http://linuxtv.org/hg/v4l-dvb tree:
wget http://www.kernellabs.com/firmware/xc5000/dvb-fe-xc5000-1.6.114.fw cp dvb-fe-xc5000-1.6.114.fw /lib/firmware
If you are using an older kernel than 2.6.31 and not using the latest v4l-dvb code:
wget http://www.steventoth.net/linux/xc5000/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip wget http://www.steventoth.net/linux/xc5000/extract.sh sh extract.sh cp dvb-fe-xc5000-1.1.fw /lib/firmware
Drivers
Full support for the device is now in the mainline v4l-dvb repo. Both analog and digital TV are supported, and the remote control should also function properly now.
To download the latest v4l-dvb tree, simply select the bz2 or gz link on the top left of the page, then build them via running "make" followed by "make install". More thorough downloading/building instructions can be found here.
Be sure to restart your computer before attempting to use the card.
Sample kernel output
cx88/0: cx2388x v4l2 driver version 0.0.6 loaded ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 19 ACPI: PCI Interrupt 0000:01:05.0[A] -> Link [LNKA] -> GSI 19 (lev cx88[0]: subsystem: 11bd:0051, board: Pinnacle PCTV HD 800i [card cx88[0]: TV tuner type 76, Radio tuner type -1 cx88/2: cx2388x MPEG-TS Driver Manager version 0.0.6 loaded tuner' 0-0064: chip found @ 0xc8 (cx88[0]) xc5000 0-0064: creating new instance xc5000: Successfully identified at address 0x64 xc5000: Firmware has not been loaded previously xc5000: waiting for firmware upload (dvb-fe-xc5000-1.1.fw)... xc5000: firmware read 12332 bytes. xc5000: firmware upload cx88[0]: Calling XC5000 callback input: cx88 IR (Pinnacle PCTV HD 800i) as /devices/pci0000:00/000 cx88[0]/0: found at 0000:01:05.0, rev: 5, irq: 20, latency: 64, m cx88[0]/0: registered device video0 [v4l2] cx88[0]/0: registered device vbi0 cx88[0]/2: cx2388x 8802 Driver Manager ACPI: PCI Interrupt 0000:01:05.2[A] -> Link [LNKA] -> GSI 19 (level, low) -> IRQ 20 cx88[0]/2: found at 0000:01:05.2, rev: 5, irq: 20, latency: 64, mmio: 0xfb000000 ACPI: PCI Interrupt Link [LAZA] enabled at IRQ 20 ACPI: PCI Interrupt 0000:00:07.0[A] -> Link [LAZA] -> GSI 20 (level, low) -> IRQ 19 PCI: Setting latency timer of device 0000:00:07.0 to 64 hda_codec: Unknown model for ALC662, trying auto-probe from BIOS... cx88/2: cx2388x dvb driver version 0.0.6 loaded cx88/2: registering cx8802 driver, type: dvb access: shared cx88[0]/2: subsystem: 11bd:0051, board: Pinnacle PCTV HD 800i [card=58] cx88[0]/2: cx2388x based DVB/ATSC card xc5000 0-0064: attaching existing instance xc5000: Successfully identified at address 0x64 xc5000: Firmware has been loaded previously DVB: registering new adapter (cx88[0]) DVB: registering frontend 0 (Samsung S5H1409 QAM/8VSB Frontend)...
Audio
OSS
The audio output of the card can be accessed through OSS typically via /dev/dsp1, however that number can of course vary with your system's configuration.
ALSA
Linux distributions have begun to leave out OSS support in their default kernel. Ubuntu as of 10.10 is an example of this.
The kernel module to enable ALSA support is cx88-alsa.
Once the appropriate module is loaded you should see this output from 'arecord -l' (note this sample is from a system with two identical cards installed):
card 1: CX8801 [Conexant CX8801], device 0: CX88 Digital [CX88 Digital] Subdevices: 1/1 Subdevice #0: subdevice #0 card 2: CX8801_1 [Conexant CX8801], device 0: CX88 Digital [CX88 Digital] Subdevices: 1/1 Subdevice #0: subdevice #0
Note the card names CX8801, and CX8801_1 for the two cards in the example system. Use the following for the ALSA device:
Card 1) ALSA:default:CARD=CX8801 Card 2) ALSA:default:CARD=CX8801_1
Remote Control Support
The card uses the CX2388x's standard IR interface, and, it is fully supported now via the linux input layer. You may use LIRC with the input device driver option. See the "Remote Controllers" article for more details on how to configure LIRC with remote controls that use the linux input layer.