Pinnacle PCTV HD Card (800i)

From LinuxTVWiki
Jump to navigation Jump to search
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

800i's components

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.

External Links