KWorld ATSC 120: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
Line 100: Line 100:
exit 0
exit 0


If you want to default to analog mode instead, replace "cx88-dvb" above with "cx8800".
:If you want to default to analog mode instead, replace "cx88-dvb" above with "cx8800".


* If your computer has already loaded a set of modules from your stock kernel, you will need to reboot your computer now to make all of these changes take effect. When the modules are loaded, the ATSC 120 will be auto-detected, but removing the existing modules will not necessarily reset the state of the capture card, due to the aforementioned resource conflict.
* If your computer has already loaded a set of modules from your stock kernel, you will need to reboot your computer now to make all of these changes take effect. When the modules are loaded, the ATSC 120 will be auto-detected, but removing the existing modules will not necessarily reset the state of the capture card, due to the aforementioned resource conflict.

Revision as of 22:05, 24 July 2008

The Kworld ATSC 120, also known as the KWorld PlusTV HD PCI 120, is an ATSC PCI add-in card which can receive standard analog television signals (NTSC, PAL, possibly others), as well as standard and high definition digital ATSC broadcasts up to 1920x1080 interlaced. The ATSC 120 features composite and s-video inputs on the back, an analog FM radio, and an infrared remote control. Television audio may be received via an internal PCI/DMA device that is handled by ALSA (e.g. as /dev/dsp1), and via a line-out connector on the back of the card.

This device is identical to the Geniatech HDTV Thriller X8000A.

Note: This article is a work in progress.

Status

As of 27 Mar 2008, this card can be used in both analog and digital ATSC modes, although this must be done separately as a reboot between mode switches is presently required, due to the architecture of the card and a resource conflict in the driver. A solution to this issue is currently being worked on. The FM radio, composite video, and S-Video inputs all work when the card is initialized into analog mode. The remote control is not currently supported in any mode, yet.

Experimental drivers can be had by fetching revision 7448 or later of the main v4l-dvb repository.

PCI Information

The ATSC 120 has a PCI subsytem ID of 17de:08c1. The complete details of this card, as reported by lspci -vvnn are:

00:05.0 Multimedia video controller [0400]: Conexant CX23880/1/2/3 PCI Video and Audio Decoder [14f1:8800] (rev 05)
        Subsystem: KWorld Computer Co. Ltd. Unknown device [17de:08c1]
        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: 64 (5000ns min, 13750ns max), Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 21
        Region 0: Memory at fa000000 (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:05.1 Multimedia controller [0480]: Conexant CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] [14f1:8801] (rev 05)
        Subsystem: KWorld Computer Co. Ltd. Unknown device [17de:08c1]
        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: 64 (1000ns min, 63750ns max), Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 21
        Region 0: Memory at fb000000 (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:05.2 Multimedia controller [0480]: Conexant CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] [14f1:8802] (rev 05)
        Subsystem: KWorld Computer Co. Ltd. Unknown device [17de:08c1]
        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: 64 (1500ns min, 22000ns max), Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 21
        Region 0: Memory at fc000000 (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-

Major components used

  • Xceive XC3028 (tuner & analog IF demodulator)
  • Samsung S5H1409 / Conexant CX24227 (digital demodulator)
  • Conexant cx2388x (A/V Decoder & PCI bridge)

Making it Work

The ATSC 120 is a fairly routine card to set up. Although there is currently is a resource conflict that prevents easy switching between ATSC and analog modes, selecting the desired default mode is accomplished by loading the proper module after a reboot, as described below.

Step by Step

Note: Distribution support for the ATSC 120 is unclear, however, the drivers are currently part of the v4l-dvb staging repository, and thus in line to be included with the kernel at some point in the near future. When that happens, some of these steps may no longer be necessary.

  • Ensure that there are no conflicting drivers being built with your kernel, either as modules or built-in. Basically, disable the whole video4linux subsystem from your kernel config. Rebuild, re-install, and reboot if necessary.
  • Acquire the xc3028 firmware file and place it in /lib/modules , as directed by the XC3028/2028 info page here on the LinuxTV wiki.
  • Acquire Mercurial from your distribution's packaging system and install it.
  • Acquire the v4l-dvb repository from linuxtv.org, build and install it:
 # hg clone http://linuxtv.org/hg/v4l-dvb
 # cd v4l-dvb
 # make
 # make install
  • Create a new file to blacklist the new modules from being auto-loaded:
 # nano /etc/modprobe.d/blacklist-misc

Add these four lines to it:

 blacklist cx8800
 blacklist cx8802
 blacklist cx88-alsa
 blacklist cx88-dvb

Note: Some Debian systems will have trouble the blacklist, as the modules may refuse to load at all, even manually.

  • Save the file and reboot.
  • Once your machine comes back up, do an lsmod and verify that the modules did not load.
  • To make digital/ATSC the default, set up the new modules to be loaded explicitly (note the "exit 0" is probably already in the file). MythTV users: Skip this step and see below.
 # nano /etc/rc.local
 modprobe cx88-dvb
 modprobe cx88-alsa
 exit 0
If you want to default to analog mode instead, replace "cx88-dvb" above with "cx8800".
  • If your computer has already loaded a set of modules from your stock kernel, you will need to reboot your computer now to make all of these changes take effect. When the modules are loaded, the ATSC 120 will be auto-detected, but removing the existing modules will not necessarily reset the state of the capture card, due to the aforementioned resource conflict.

Special notes for MythTV users

The ATSC 120 works well with MythTV, but like any of the drivers described on this website, you will need to ensure that the drivers are loaded well before the MythTV backend starts, otherwise MythTV will not be able to find your tuner. This can be accomplished by adding one line to the aforementioned /etc/rc.local script, so that it resembles this:

 # nano /etc/rc.local
 
 modprobe cx88-dvb
 modprobe cx88-alsa
 /etc/init.d/mythtv-backend restart
 exit 0

By specifying "restart" at this point, the backend will be explicitly shut down and reloaded, which should cause it to pick up the presence of the drivers that were loaded just prior to the restart. If this does not work, you will need to modify your distribution's startup scripts or delete the appropriate symbolic links in the various /etc/rc?.d directories, so that only the /etc/rc.local script can start the backend.

A reboot may be necessary to make all of these changes take effect.

External Links