home   articles   archive   forum   masthead  
Published at 06.04.2002
Author: Ronny Ziegler
Translator: Tobias Bayer
Languages: de
Printer printer-version
Support Us!
 

Linux on TV II

Voodoo3-3000 While the first part of this article has explained the manufacturing and configuration of a homemade TV-out, this part is about the configuration of a Voodoo3-3000 and a NVidia-Geforce.


Voodoo 3

Being a lucky owner of a Voodoo3-3000 card with integrated TV-out I had not been aware of its benefits at first. After some attempts of activating the TV-out in Windows with the included drivers, the so called "operating system" did not want to boot any more, so that the feature was not turned on again to be on the safe side after a Windows reinstallation. So it was quickly forgotten.
Only when I stumbled over the included adaptor cable (figuratively) I remembered the TV-out and asked in a Voodoo newsgroup if and how it could be used with Linux.
"Yes, but..." was the answer.

When starting the PC without a connected VGA cable, the Voodoo card automatically activates the TV-out. So you do not need any drivers. But this feature is optimized for the American market, so the output is in NTSC instead of PAL format.
Moreover the output only works in the console not in X.

I was pleased to hear (some weeks later) that the situation had changed again and drivers had been programmed to use the TV-out with Linux.

The "lm_sensors" project, (http://www2.lm-sensors.nu/~lm78/), which can read and sometimes manipulate a huge number of special hardware components, includes support for the Voodoo's TV chip.
To compile you need the two packages at http://www2.lm-sensors.nu/~lm78/download.html "i2c" and "lm_sensors".
First you have to compile and install i2c (make; make install; depmod -a). If you are still using the standard kernel of your distribution you could perhaps experience some problems. If the system is running a kernel from kernel.org, chances are much better.
After the installation of the i2c package, the lm_sensors tools must be created and installed. You can find more detailed hints for the installation in the lm_sensors documentation at http://www2.lm-sensors.nu/~lm78/docs.html.

You get the necessary modules bt869.o and i2c-voodoo3.o in the directories lm_sensors-2.x.x/kernel/chips and lm_sensors-2.x.x/kernel/busses. The modules must be copied to /lib/modules/2.x.x/misc/ (if this is not done by the installation).

The TV output can be in "640x480" or "800x600".
Therefore, the X server needs the corresponding modelines at first because the resolution of the TV-out and the VGA-out can not be adjusted independently. (So called "Dual-Head".) If you want to use "640x480" on the TV, your monitor will show the same resolution. But not every screen can cope with the low frequencies used by the modelines for TV-out. So you should turn the monitor off while while watching TV.

The corresponding modelines are following:

/etc/XF86Config
  [...]
  ModeLine "640x480PAL"   29.50       640  675  678  944  480  530  535  625
  ModeLine "800x600PAL"   36.00       800  818  820  960  600  653  655  750
  [...]
  Subsection "Display"
     Depth	     16
     Modes       "1280x1024" "800x600PAL" "800x600" "640x480PAL" "640x480"
  [...]
  


To activate the TV-out by software you must load the necessary modules and write the information about the wanted resolution to the corresponding proc devices.
You should write a little script for that (here for a 2.2.16 kernel):

640x480
   #!/bin/sh
   cd /lib/modules/2.2.16/misc/
   insmod i2c-voodoo3.o
   modprobe bt869
   echo 0 > /proc/sys/dev/sensors/bt869-i2c-1-44/ntsc
   echo "640 480" > /proc/sys/dev/sensors/bt869-i2c-1-44/res
  


The last line activates the PAL format.
For a "800x600" resolution the script is quite analogous:

800x600
   #!/bin/sh
   cd /lib/modules/2.2.16/misc/
   insmod i2c-voodoo3.o
   modprobe bt869
   echo 0 > /proc/sys/dev/sensors/bt869-i2c-1-44/ntsc
   echo "800 600" > /proc/sys/dev/sensors/bt869-i2c-1-44/res
  


The scripts must be invoked by root in order to have the right permissions.
The small program chgres (available at http://hpwww.ec-lyon.fr/~vincent/ in "UN*X/Linux stuff) is very useful in this context. It allows changing the resolution out of the console.

When adding the following lines at the end of the script, the resolution of the X-server is adjusted automatically when you activate the TV-out.

  /usr/local/chgres-0.1/chgres set 640x480@29500
  
(for 640x480 resolution)
  /usr/local/chgres-0.1/chgres set 800x600@36000
  
(for 800x600 resolution)

Strangely, the activation of the TV-out does not work always on the first try. You have to run the script several times or even restart the X-server then.
If you want to use the TV-out for public presentations you should create an extra account and configure a window manager by choice (WMaker is very suitable here) for this sake.
For positioning program windows, the following desktop background - shown centered - is useful:

Background

Here is my personal XF86config file (for XFree86 3.3.6, but it can be used for 4.x with some modifications). Besides the PAL resolutions necessary for the TV-out, it includes some other strongly zooming resolutions.
(download the XF86Config for Voodoo3-3000, XFree86 3.3.6)

NVidia Geforce

GeForce Chip The TV-out of the NVidia Geforce can be used in Linux, too. The installation is simpler than it is for the Voodoo3 card, because the TV support is directly integrated into the NVidia X-server.
You only have to adjust the XF86 config file for configuring your TV-out. For that you should create two config files, one for regular monitor usage and one for the TV-out:
Copy your old XF86Config to /etc/X11/XF86Config.Monitor, create a new XF86Config and copy it to /etc/X11/XF86Config.TV.

Now link /etc/X11/XF86Config to the according file, dependent on what output port you want to use.

If the X-server is running, you have to restart it by

  >> init 3
  >> init 5
  
with the changed configuration.
Without a standard X login startx is enough.

(download the XF86Config for NVidia Geforce, XFree86 4.0.1)

The graphical tool NVOptions, available at http://www.sorgonet.com/linux/nvoption/, is useful for the configuration of the NVidia card.

NVOptions Screenshot

Adaptor

The adaptor packaged with the graphics cards mostly offers a chinch plug for output. This one usually can't be attached directly to the tv or video recorder. In this case, you need a chinch-scart adaptor. You can get one at Conrad (article no. 350036 - 62) for about 8 EUR:

Together with a stereo chinch audio cable you can connect your Linux to the TV/VCR and watch films from the PC.




Talkback Area




Enter Own Comment