Linux on TV II
|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.|
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:
[...] 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):
#!/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:
#!/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:
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)
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
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 5with 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.
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:
Enter Own Comment