Cx88 devices (cx2388x)
Introduction
The cx2388x chip is the successor to the bt848/bt878 chips; cf. PCI interface chipsets used for v4l cards.
There is also support in the kernel for a cx23416 mpeg encoder via the cx2388x host port though the blackbird driver, cx88-blackbird.c, which includes parts from the ivtv driver.
The pcHDTV3000 card supports both analog and digital capture; see also Peter Knaggs excellent configuration guide with further references.
Supported cards
For an up-to-date list of v4l supported cx88 devices, see the Hg version of the kernel documentation. Devices supported by your current kernel are listed in your local kernel source Documentation/video4linux/CARDLIST.cx88.
If your card is not listed, see How to add support for a new card.
Current status
Video
- Basically works.
- Some minor image quality glitches
- See Color problem patch
- For now only capture; overlay support isn't completed yet.
Audio
- The chip specs for the on-chip TV sound decoder are next to useless :-/
- Nevertheless, the built-in TV sound decoder starts working now, at least for PAL-BG. Other TV norms need other code ...
- FOR ANY REPORTS ON THIS PLEASE MENTION THE TV NORM YOU ARE USING.
- Most tuner chips do provide mono sound, which may or may not be useable depending on the board design. With the Hauppauge cards it works, so there is mono sound available as fallback.
- audio data dma (i.e. recording without loopback cable to the sound card) is supported since 2.6.16 (CONFIG_VIDEO_CX88_ALSA). It only works with boards with function 01 enabled. To check if your board supports it, issue lspci -n. If supported, you should see a 1471:8801 or 1471:8811 PCI device.
vbi (cf. text capture)
- Undocumented, but likely works in recent kernels (at least 2.6.19 and likely earlier).
TV audio types
For an up-to-date list of TV audio types, see the latest Hg version of the kernel sources. The list currently looks like this:
WW_NONE 1 WW_BTSC 2 WW_BG 3 WW_DK 4 WW_I 5 WW_L 6 WW_EIAJ 7 WW_I2SPT 8 WW_FM 9
Hue_Saturation_Brightness
There was a problem in the cx88 code that resulted in the need to set hue to either 0% or 100% in order to avoid seeing green and blue men on the screen. This problem has been corrected as of the CVS commit on Wed Jun 29 16:28:17 2005 UTC. We have collected information regarding this on Hue_Saturation_Brightness page.
Installation notes
For details, see Generic Installation below and if necessary, the individual cards further down -- and please add your own if it differs from the generic installation!
Generic Installation
This installation method has been tested with a DViCO FusionHDTV 5 Gold but I have been told that it can be used as generic installation instructions for any device that uses the cx88 driver.
Below you will see that all of the TV tuner related drivers are being compiled as modules. This allows MythTV to detect the TV tuner card and let you send parameters to the modules.
Kernel
When compiling the kernel, here are the options you need to tick:
Loadable module support:
[*] Enable loadable module support [*] Module unloading [*] Forced module unloading [*] Automatic kernel module loading
Device Drivers->Multimedia devices:
[*] Video For Linux
Video Capture Adapters:
[*] Autoselect pertinent encoders/decoders and other helper chips <M> Conexant 2388x (bt878 successor) support <M> Conexant 2388x DMA audio support <M> DVB/ATSC Support for cx2388x based TV cards
If your card supports has blackbird mpeg encoder support, you'll need to compile the module for that. The DViCO FusionHDTV 5 Gold card does not have the blackbird mpeg encoder, so it's not necessary to tick this option for that card.
<M> Blackbird MPEG encoder support (cx2388x + cx23416)
Digital Video Broadcasting Devices:
[*] DVB for Linux <M> DVB Core Support
If you are really familiar with the hardware, you can save some system memory by only selecting the DVB Frontends that the card needs. This is accomplished as follows:
[*] Load and attach frontend modules as needed
Customise DVB Frontends--->
[*] Customise the frontend modules to build
Then if you are using a DViCO FusionHDTV 5 Gold card, you would tick these two options:
<M> LG Electronics LGDT3302/LGDT3303 based <M> LG TDVS-H06xF ATSC tuner
Note: The current kernel, 2.6.20, does not automatically load the cx88-dvb driver when a program like mplayer requests to use it. This problem will most likely be fixed in kernel 2.6.21, but in the mean time, you will either need to load it using:
modprobe cx88-dvb
or you can specify it in your modprobe.conf file which in gentoo would be /etc/modules.autoload.d/kernel-2.6 so that it will load when the computer boots:
cx88-dvb
Sound
When tuning digital channels, all you need is a functioning sound card with no further configuration. When tuning analog channels, there are two ways you can capture the sound. You can capture it through the internal audio cable that connects the tuner board to the sound card or through DMA audio using the cx88-alsa driver.
Internal Audio Cable
In order to capture the sound through the internal audio cable, you need to have an audio port on your tuner card and an auxiliary jack on your motherboard or sound card so you can hook the tuner card up to that auxiliary port. Then you need to plug some kind of device like speakers, headphones, etc. into the analog stereo jack on your motherboard or sound card.
Note: The sound is only output to the analog jack with this method. If you use something other than the analog jack like SPDIF or any other kind of digital audio jack for your speakers, you will need to have some way of switching input on your speakers or amp to the analog jack when you are tuning analog channels.
Alsa
Using DMA audio with the cx88-alsa driver is probably the best choice for capturing the analog sound. It doesn't use internal ports on your motherboard or sound card and for some people it might be the only choice since they might only have one internal audio port that is already in use. It is also beneficial if you have multiple tuner cards while still having a finite or small number of internal audio ports.
Since many programs generally look for the output sound device as the first device, you will need to configure your sound card or onboard sound to be the first device. This requires knowledge of all the sound hardware connected to your computer. You can start by finding out what audio devices you have like this:
lspci -v | grep -i audio
which will produce something like this:
00:0d.0 Multimedia video controller: Conexant CX23880/1/2/3 PCI Video and Audio Decoder (rev 05) 00:0d.1 Multimedia controller: Conexant CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (rev 05) 00:0d.2 Multimedia controller: Conexant CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (rev 05) 00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controller (rev 60)
This shows that I have the Conexant CX23880 chip and the VIA VT8233 chip. Now that you have a listing of devices, you need to determine which device is your default output device. In this case, it would be the VIA VT8233 chip which is an onboard motherboard audio device.
Note: You cannot use alsaconf if you have more than one sound device because it is only capable of configuring one device. I suggest you get familiar with the alsa configuration of sound devices so that you can configure more than one sound device.
On gentoo, you configure the sound with /etc/modules.d/alsa and after you make changes to that file, you need to run modules-update. For other versions of linux, you will need to configure /etc/modprobe.conf. Here's an example of how an onboard VIA sound device should be configured with the DViCO FusionHDTV 5 Gold card:
alias char-major-116 snd alias char-major-14 soundcore #Force Sound Device Sequence options snd-via82xx index=0 options cx88-alsa index=1 #via82xx Sound Device alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss alias /dev/dsp snd-pcm-oss alias snd-card-0 snd-via82xx alias sound-slot-0 snd-via82xx #Dvico Card Sound Capture Device alias sound-service-1-0 snd-mixer-oss alias sound-service-1-3 snd-pcm-oss alias sound-service-1-12 snd-pcm-oss alias /dev/dsp1 snd-pcm-oss alias snd-card-1 cx88-alsa alias sound-slot-1 cx88-alsa
Once you restart alsa (/etc/init.d/alsasound restart on gentoo) or reboot your computer, you should be able see all your sound devices. Make sure your onboard sound device or sound card is the first device listed:
cat /proc/asound/cards
should output the following using the above example:
0 [V8237 ]: VIA8237 - VIA 8237 VIA 8237 with AD1985 at 0xc800, irq 22 1 [CX8811 ]: CX88x - Conexant CX8811 Conexant CX8811 at 0xfb000000
This shows that everything is configured properly because the onboard sound device is the first device and the tv tuner audio decoder (CX8811 on the DViCO FusionHDTV 5 Gold card) is the second device. This second device is only a capture device so the output of this device will need to be piped to the onboard sound device (VIA8237 in this case) in order to hear the audio. This can be accomplished in a few different manners depending on the program you are using.
Tuning
If you have mplayer or mythtv installed, I would recommend you use one of these programs because they have the capacity to capture and output DMA audio. This is important because programs that don't have this ability will not be able to keep the audio and video in sync with each other.
With mplayer, this can be accomplished with this command:
mplayer tv:// -tv driver=v4l2:chanlist=us-cable:alsa:adevice=hw.0,1:amode=1:audiorate=48000:forceaudio:volume=100:immediatemode=0:norm=NTSC
You can then use "H" or "K" to change the channels.
If you don't care that the audio and video can go out of sync, you can use tvtime and arecord to tune analog channels. Run this command in the console and then start tvtime:
arecord -D hw:0,1 -f dat | aplay
In addition, as stated above, tuning digital channels with the cx88 driver does not require cx88-alsa and can be accomplished by configuring a channels.conf file for mplayer and running this command:
mplayer dvb://
Leadtek PVR 2000
MSI TV-@nywhere Master
This card is not able to do the default QuasiSplitSound demulation, so force the IF to Intercarrier when inserting the driver module:
options tda9887 qss=0
In addition, set hue full up or down and then adjust the rest. There is a bug nobody has found so far.
Pinnacle/310c
WinTV Go
Pixelview_PlayTV_Pro_Ultra
Pixelview_PlayTV_MPEG (TV-8000GT)
Conexant CX23883 chipset Xceive XC2028 Silicon Tuner
If you have such a device please contact mrechberger at gmail dot com MarkusRechberger 07:09, 5 April 2007 (CEST) It should be possible to get it work.
Powercolor Real Angel 330
- download the most recent tree of Markus Rechberger (since the code isn't merged with mainline kernel):
http://mcentral.de/hg/~mrec/v4l-dvb-experimental/summary Obs.: click on the most recent item and then on gz.
- run make; make install to install the modules
- in /etc/modprobe.conf put the following lines:
alias char-major-81 videodev alias char-major-81-0 cx8800 alias /dev/radio0 cx8800 alias /dev/video0 cx8800
- download the firmwares:
http://mcentral.de/firmware/firmware_powerangel.tgz and install them in /lib/firmware or where your hotplug configuration specifies (see FIRMWARE_DIR in /etc/hotplug/firmware.agent)
- run your favorite application to see TV or listen to radio!
Obs.: the modules should be loaded automagically, but if you need to load them manually, just use: modprobe xc3028-tuner modprobe cx8800
Problems
- with PAL-M it works perfectly. The NTSC firmware is broken.