KWorld ATSC 120: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
Line 62: Line 62:
''Note: Distribution-specific 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.''
''Note: Distribution-specific 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.''


* Most users will need to start by downloading a new kernel from [http://www.kernel.org The Linux Kernel Archive], in particular, the "latest stable version" (look for the "F" link on the right in that line). Instructions for configuring, compiling, and installing a Linux kernel can be found [http://www.cromwell-intl.com/unix/linux-kernel.html this How-to]. If your distribution provides a means and instructions for doing this via their official software repositories, it is recommended that you use that method.
* 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.

* While you are configuring the kernel, be sure to turn the entire video4linux tree off, as the code for it will be supplied from another source. Build and install your new kernel, and reboot with it. Be sure '''everything''' works properly before continuing (except video4linux devices, of course).


* Acquire the xc3028 firmware file and place it in /lib/modules , as directed by [[Xceive XC3028/XC2028| the XC3028/2028 info page]] here on the LinuxTV wiki.
* Acquire the xc3028 firmware file and place it in /lib/modules , as directed by [[Xceive XC3028/XC2028| the XC3028/2028 info page]] here on the LinuxTV wiki.


* Acquire Mercurial from your distribution's packaging system and install it.
* Acquire Mercurial and install it. This can probably be found in your distribution's software repository.


* Acquire the v4l-dvb repository from linuxtv.org, build, and install it (the exact figures below will change over time, as the repository is updated):
* Acquire the v4l-dvb repository from linuxtv.org, build, and install it (the exact figures below will change over time, as the repository is updated):
Line 82: Line 84:
# cd v4l-dvb
# cd v4l-dvb
# make
# make
:...various build messages will appear here. Watch the first screen full of the output carefully and take note of the version of the kernel that the v4l-dvb repository is being built against - it must state that it is using the new kernel you just installed.
# make install
# make install



Revision as of 10:00, 30 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 and revision 7448 of the main v4l-dvb repository, this card can be used in both analog and digital ATSC modes via a set of experimental drivers. 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. Due to a resource conflict in the driver caused by this card's architecture, a reboot is necessary to switch between analog and ATSC modes. The cause of this issue has been located, and work is ongoing to fix it.

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 (digital demodulator, Conexant CX24227 compatible)
  • Conexant cx23880 (A/V Decoder & PCI bridge)

Making it Work

The ATSC 120 is a fairly routine card to set up, and selecting the desired default mode is accomplished by simply loading the proper module after a reboot, as described below.

Step by Step

Note: Distribution-specific 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.

  • Most users will need to start by downloading a new kernel from The Linux Kernel Archive, in particular, the "latest stable version" (look for the "F" link on the right in that line). Instructions for configuring, compiling, and installing a Linux kernel can be found this How-to. If your distribution provides a means and instructions for doing this via their official software repositories, it is recommended that you use that method.
  • While you are configuring the kernel, be sure to turn the entire video4linux tree off, as the code for it will be supplied from another source. Build and install your new kernel, and reboot with it. Be sure everything works properly before continuing (except video4linux devices, of course).
  • 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 and install it. This can probably be found in your distribution's software repository.
  • Acquire the v4l-dvb repository from linuxtv.org, build, and install it (the exact figures below will change over time, as the repository is updated):
 # hg clone http://linuxtv.org/hg/v4l-dvb
 
 destination directory: v4l-dvb
 requesting all changes
 adding changesets
 adding manifests
 adding file changes
 added 8567 changesets with 22668 changes to 1556 files
 updating working directory
 1138 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
 # cd v4l-dvb
 # make
...various build messages will appear here. Watch the first screen full of the output carefully and take note of the version of the kernel that the v4l-dvb repository is being built against - it must state that it is using the new kernel you just installed.
 # make install
  • In order to have more precise control of what modules get loaded, and exactly when, create a new file to blacklist the new modules from being auto-loaded:
 # nano /etc/modprobe.d/blacklist-misc
 blacklist cx8800
 blacklist cx8802
 blacklist cx88-alsa
 blacklist cx88-dvb

Note: Some Debian systems will have trouble the blacklist. Modules may refuse to load from within any of the rc scripts, but will still load if done manually.

  • Save the file out. If so desired, reboot your system and do an lsmod, to verify if the drivers were successfully blacklisted.
  • Decide which mode you wish to use as the default: NTSC and the various analog sources, or digital/ATSC mode. To make digital/ATSC the default (for Debian, Ubuntu, and similar):
 # nano /etc/rc.local
 modprobe cx88-dvb
 modprobe cx88-alsa
If you want to default to analog mode instead, replace "cx88-dvb" above with "cx8800". If there is an "exit 0" or similar command in the script, be sure your changes precede it.
  • MythTV users: Be sure you configure your system to start the MythTV backend after the modules above have been loaded, perhaps by editing the above local script to explicitly terminate and restart it after the modprobe commands.
  • Last but not least, reboot the computer to bring the newly installed drivers into place, and to make sure your changes worked. This is also necessary if your system had loaded the older modules included with the system's stock kernel, as simply unloading them and loading the new ones does not necessarily reset the card, due to the aforementioned resource conflict. This should be fixed soon. In the meantime, the card should now be ready to use after this last reboot.

External Links