Difference between revisions of "Cx88 devices (cx2388x)"
m (fixed link)
m (125 revision(s))
Revision as of 20:15, 7 December 2008
The cx2388x is supported under Linux, however, there are areas of the chip's feature set that the driver either needs improvement upon or support for which is currently absent (See current status section for more information). Nonetheless, most users will likely find the current rendition quite sufficient.
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.
Supported cx88 devices
An up-to-date list of cx88 devices supported by V4L-DVB drivers is found in the CARDLIST.cx88 file in the master development repository.
Devices supported by the kernel running on your system are listed in your local
Getting an unlisted card to work
If your card is not listed, see the "How to add support for a device" article.
- Basically works.
- Some minor image quality glitches
- See cx88 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 ...
- 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 looks like this as of Nov 2008:
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 WW_I2SADC 10
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 this page.
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!
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
Device Drivers->I2C support
<M> I2C support <M> I2C device interface
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:
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:
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-M
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:1,0 -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:
- 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
As of kernel 2.16.18 the code for the above module was moved, so use the following instead:
options tuner qss=0
In addition, set hue full up or down and then adjust the rest. There is a bug nobody has found so far.
- The pcHDTV3000 card supports both analog and digital capture; see also Peter Knaggs excellent configuration guide with further references.
- Its possible to use the IrDA dongle with the pcHDTV HD5500 board. Locate cx88_input.c (v4l-dvb/linux/drivers/media/video/cx88/cx88_input.c). Edit the file, adding:
directly below anywhere "CX88_BOARD_HAUPPAUGE_HVR3000:" is mentioned (2 places). Once you recompile the drivers, your IrDA receiver should be recognized. You can use it with Lirc using the dev/input driver. (Run lsinput to see which input the receiver has been assigned) (source)