Cx88 devices (cx2388x)

From LinuxTVWiki
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


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


  • Basically works.
  • Some minor image quality glitches
  • See Color problem patch
  • For now only capture; overlay support isn't completed yet.


  • 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 ...
  • 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


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.


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:



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.


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.


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.


WinTV Go


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):
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:
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


  • with PAL-M it works perfectly. The NTSC firmware is broken.