KWorld ATSC 120: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
No edit summary
Line 71: Line 71:
====Step by Step====
====Step by Step====


'''1. Getting started'''
''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, many of these steps may no longer be necessary.''


* If you have connected a set of speakers or headphones to the external line-out jack, disconnect them. The drivers' handling of the audio connector is still a little unstable, but the internal PCI/DMA digital feed works fine, so it's best to use that for now. Otherwise, you may be surprised by a blast of noise or an unexpected audio feed from a radio or TV station.
* If you have a set of speakers, headphones, or another audio device connected to the card's audio output jack, you will need to disconnect it. The driver has a few minor bugs, one of which causes the audio output to be somewhat unpredictable. Instead, we will use the internal digital audio feeds that the card provides.


* Create a work directory and change to it. When everything is said and done, one can clean up by simply deleting the work directory (and everything in it).
* Most users will need to download the "latest stable version" of the Linux kernel from [http://www.kernel.org The Linux Kernel Archive] (look for the "F" link on the right in the first kernel line). Instructions for configuring, compiling, and installing a Linux kernel can be found in [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 their method instead.


'''2. Install a Kernel'''
* While you are configuring the kernel, be sure to turn the entire "Video For Linux" and "DVB for Linux" trees off, as they will be supplied by the LinuxTV repository. For the "menuconfig" and "xconfig" programs, you can find them by navigating to Device Drivers -> Multimedia devices.


:''If your distribution already uses a generic 2.6.26 (or later) kernel, most likely everything has already been configured properly. Please skip to step 4.''
* After you turn those trees off, continue exploring, configuring, etc. at your discretion. When you are finished, exit from the config editor, let it save the new configuration.

* Download the "latest stable version" of the Linux kernel from [http://www.kernel.org The Linux Kernel Archive] (look for the "F" link on the right in the first kernel line). Instructions for configuring, compiling, and installing a Linux kernel can be found in [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 their method instead.

* During the configuration step, you will need to eventually navigate to Device Drivers -> Multimedia devices, and find the "Video for Linux" and "DVB for Linux" trees. There are two possible things to do here:

:* If you chose a kernel older than 2.6.26, turn these two trees off (press "N" on both).

:* For 2.6.26 and newer kernels, turn these two trees on as modules (press "M" on both), then turn the following options on as modules where possible:

<blockquote><blockquote><pre>
Device Drivers --->
Multimedia devices --->
<M> Video For Linux
<M> DVB for Linux
[*] Video capture adapters (NEW) --->
[*] 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
[*] DVB/ATSC adapters (NEW) --->
Customise DVB Frontends --->
<M> Samsung S5H1409 based
</pre></blockquote></blockquote>

* Continue exploring, configuring, etc. at your discretion. When you are finished, exit from the config editor and let it save the new configuration.


* Return to the aforementioned how-to to build and install your new kernel, and to prepare your system to reboot with it. Once you've rebooted, be sure '''everything''' else on your system works properly before continuing.
* Return to the aforementioned how-to to build and install your new kernel, and to prepare your system to reboot with it. Once you've rebooted, be sure '''everything''' else on your system works properly before continuing.


'''3. Install the V4L-DVB repository'''
* 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.


''If you are using a 2.6.26 or newer kernel, skip to step 4 - the kernel already has this repository within it.''
* Acquire Mercurial and install it. This can probably be found in your distribution's software repository.
* 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):
<blockquote><pre>
# hg clone http://linuxtv.org/hg/v4l-dvb
# hg clone http://linuxtv.org/hg/v4l-dvb
Line 101: Line 128:
# cd v4l-dvb
# cd v4l-dvb
# make
# make
</pre></blockquote>
:...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.
:...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.
<blockquote><pre>
# make install
# make install
</pre></blockquote>

'''4. Set up the drivers'''

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


* 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:
* 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:
<blockquote><pre>
# nano /etc/modprobe.d/blacklist-misc
# nano /etc/modprobe.d/blacklist-misc


Line 111: Line 146:
blacklist cx88-alsa
blacklist cx88-alsa
blacklist cx88-dvb
blacklist cx88-dvb
</pre></blockquote>


* Save the file out. If so desired, reboot your system and do an lsmod, to verify if the drivers were successfully blacklisted. Note that, although cx88-alsa is no longer supplied with (or required by) the v4l-dvb drivers, we still need to blacklist it, just in case there are any old versions of this module lying around that the system might see fit to load (allowing it to do so will cause a number of error messages and may break things).
* Save the file out. If so desired, reboot your system and do an lsmod, to verify if the drivers were successfully blacklisted. Note that, although cx88-alsa is no longer supplied with (or required by) the v4l-dvb drivers, we still need to blacklist it, just in case there are any old versions of this module lying around that the system might see fit to load (allowing it to do so will cause a number of error messages and may break things).
Line 116: Line 152:
* 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):
* 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):


<blockquote><pre>
# nano /etc/rc.local
# nano /etc/rc.local


Line 121: Line 158:
modprobe cx88-dvb
modprobe cx88-dvb
mv /tmp/blacklist-misc /etc/modprobe.d
mv /tmp/blacklist-misc /etc/modprobe.d
</pre></blockquote>


:Here, we move the blacklist file off to /tmp to temporarily disable it, load the modules, then put the blacklist back into place so that it works for the next reboot. Skipping the move commands will cause the modprobe command to fail in many systems. 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.
:Here, we move the blacklist file off to /tmp to temporarily disable it, load the modules, then put the blacklist back into place so that it works for the next reboot. Skipping the move commands will cause the modprobe command to fail in many systems. 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.


'''5. Reboot and test'''
* Non-MythTV users: As with many recent capture cards, the ATSC 120 provides audio from analog sources via both an external jack, suitable for a pair of speakers, and an internal digital stream. The current driver provides access to this stream via a standard audio device entry, typically /dev/dsp1, however, most of the current TV viewing programs are unaware of this separate stream and will not be able to provide an audio output. One solution is to have "sox" or a similar program stream the audio from /dev/dsp1 back to your system's audio device (e.g. /dev/dsp with no number) while your chosen TV program handles the video display.

* As the title of this section says, it is time to reboot the computer and make sure the computer loaded the modules appropriate for the mode you chose above. The easiest way for the non-technical user is to fire up a TV program and see what happens.

:* Non-MythTV users: As with many recent capture cards, the ATSC 120 provides audio from analog sources via both an external jack, suitable for a pair of speakers, and an internal digital stream. The current driver provides access to this stream via a standard audio device entry, typically /dev/dsp1, however, most of the current TV viewing programs are unaware of this separate stream and will not be able to provide an audio output. One solution is to have "sox" or a similar program stream the audio from /dev/dsp1 back to your system's audio device (e.g. /dev/dsp with no number) while your chosen TV program handles the video display.


* MythTV users: The internal audio stream mentioned above is handled properly by MythTV, so nothing special need be done to use it. Also, 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. Not doing so will cause the backend to fail to sense the presence of the driver and the video/audio devices it creates.
:* MythTV users: The internal audio stream mentioned above is handled properly by MythTV, so nothing special need be done to use it. Also, 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. Not doing so will cause the backend to fail to sense the presence of the driver and the video/audio devices it creates.


* Last but not least, reboot the computer. It is advised that one do so at any rate, just to make sure all of the above steps worked and that your computer still behaves as expected. Your capture card should now be ready to use.
* Your capture card should now be ready to use.


==External Links==
==External Links==

Revision as of 22:12, 15 November 2008

An ATSC PCI card from KWorld.

It is supported under Linux since kernel 2.6.26 [1]. For older kernels, detailed setup instructions can be found below.

Overview/Feature

The Kworld ATSC 120, also known as the KWorld PlusTV HD PCI 120, 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, an analog FM radio, and an infrared remote control. Television and FM radio 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. 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.

The remote control is not currently supported in any mode, yet.

The Line-out jack is somewhat functional, but is not considered ready to use, yet.

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

For kernels prior to 2.6.26, the ATSC 120 is still a fairly routine card to set up, and selecting the desired default mode is accomplished by simply loading the proper module after a reboot.

Step by Step

1. Getting started

  • If you have a set of speakers, headphones, or another audio device connected to the card's audio output jack, you will need to disconnect it. The driver has a few minor bugs, one of which causes the audio output to be somewhat unpredictable. Instead, we will use the internal digital audio feeds that the card provides.
  • Create a work directory and change to it. When everything is said and done, one can clean up by simply deleting the work directory (and everything in it).

2. Install a Kernel

If your distribution already uses a generic 2.6.26 (or later) kernel, most likely everything has already been configured properly. Please skip to step 4.
  • Download the "latest stable version" of the Linux kernel from The Linux Kernel Archive (look for the "F" link on the right in the first kernel line). Instructions for configuring, compiling, and installing a Linux kernel can be found in 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 their method instead.
  • During the configuration step, you will need to eventually navigate to Device Drivers -> Multimedia devices, and find the "Video for Linux" and "DVB for Linux" trees. There are two possible things to do here:
  • If you chose a kernel older than 2.6.26, turn these two trees off (press "N" on both).
  • For 2.6.26 and newer kernels, turn these two trees on as modules (press "M" on both), then turn the following options on as modules where possible:
 Device Drivers  ---> 
   Multimedia devices  --->
     <M> Video For Linux
     <M> DVB for Linux
     [*] Video capture adapters (NEW)  --->
         [*]   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
     [*] DVB/ATSC adapters (NEW)  --->
         Customise DVB Frontends  --->
            <M> Samsung S5H1409 based
  • Continue exploring, configuring, etc. at your discretion. When you are finished, exit from the config editor and let it save the new configuration.
  • Return to the aforementioned how-to to build and install your new kernel, and to prepare your system to reboot with it. Once you've rebooted, be sure everything else on your system works properly before continuing.

3. Install the V4L-DVB repository

If you are using a 2.6.26 or newer kernel, skip to step 4 - the kernel already has this repository within 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):
  # 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

4. Set up the drivers

  • Acquire the xc3028 firmware file and place it in /lib/modules , as directed by the XC3028/2028 info page here on the LinuxTV wiki.
  • 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
  • Save the file out. If so desired, reboot your system and do an lsmod, to verify if the drivers were successfully blacklisted. Note that, although cx88-alsa is no longer supplied with (or required by) the v4l-dvb drivers, we still need to blacklist it, just in case there are any old versions of this module lying around that the system might see fit to load (allowing it to do so will cause a number of error messages and may break things).
  • 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

  mv /etc/modprobe.d/blacklist-misc /tmp
  modprobe cx88-dvb
  mv /tmp/blacklist-misc /etc/modprobe.d
Here, we move the blacklist file off to /tmp to temporarily disable it, load the modules, then put the blacklist back into place so that it works for the next reboot. Skipping the move commands will cause the modprobe command to fail in many systems. 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.

5. Reboot and test

  • As the title of this section says, it is time to reboot the computer and make sure the computer loaded the modules appropriate for the mode you chose above. The easiest way for the non-technical user is to fire up a TV program and see what happens.
  • Non-MythTV users: As with many recent capture cards, the ATSC 120 provides audio from analog sources via both an external jack, suitable for a pair of speakers, and an internal digital stream. The current driver provides access to this stream via a standard audio device entry, typically /dev/dsp1, however, most of the current TV viewing programs are unaware of this separate stream and will not be able to provide an audio output. One solution is to have "sox" or a similar program stream the audio from /dev/dsp1 back to your system's audio device (e.g. /dev/dsp with no number) while your chosen TV program handles the video display.
  • MythTV users: The internal audio stream mentioned above is handled properly by MythTV, so nothing special need be done to use it. Also, 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. Not doing so will cause the backend to fail to sense the presence of the driver and the video/audio devices it creates.
  • Your capture card should now be ready to use.

External Links