nVidia Linux TV-Out mini how-to
This is how I got TV-Out working on my computer, with Mepis Linux 3.3.
My Nvidia graphics chipset is an FX 5200, on an Aopen card. I set this
up with the help of the Nvidia Readme file
(/usr/share/doc/nvidia-glx/README). Basically, it's all configured in
the X configuration file, which is /etc/X11/XF86Config-4 in the
standard Mepis install. You can do this other ways (Mepis OS Center
will help), but I just edited this file manually, as root, using any
editor. I also configured this as TwinView and my primary monitor is a
DVI flatscreen. There is another way to do this without TwinView, using
multiple X screens, that is described in the Appendix R (Configuring
Multiple X Screens on One Card) of the Readme and also at this site:
http://www.gmpf.de/index.php/NVidia
The Nvidia forums are also a good ressource. Anyhow, here's what I
recall I did to get this working:
1) First off, you have to have the accelerated nvidia driver working.
You may have this working already, but if you don't, it's shown in a
few paragraphs in Chapter 3 of the Readme. I did as is specified there.
Mepis OS Center will also do this for you, but the manual way is:
In the Device section of the X config file, remove the line:
Driver "nv"
(or Driver "vesa")
(or Driver "fbdev")
and replace it with the line:
Driver "nvidia"
In the "Module" section of the file, remove (or comment out with #) the
following lines:
Load "dri"
Load "GLCore"
and add the line (if it does not already exist):
Load "glx"
2) OK, the rest I did according to Appendix I (Configuring Twinview)
and J (Configuring TV-Out) of the Readme. The Appendix letters may vary
depending on the Readme version. In the Device section of the config
file, I put in the following options, or uncommented and edited them if
they were there already. Note, you can also put all these options in
the Screen section. If you don't have a flatpanel monitor connected via
a digital dvi cable, then you'd replace "dfp" with "crt". Also, my TV
is old, I don't think it does 1024x768, so I limit it to 800x600.
Option "TwinView"
Option "MetaModes" "tv: 800x600 @1280x1024, dfp: 1280x1024; tv: 800x600
@1024x768, dfp: 1024x768; tv: 800x600, dfp: 800x600; tv: 640x480, dfp:
640x480"
Note: "MetaModes" specifies the combination of modes you'll have
available when using the two monitors together. It's a good idea to
specify explicitly which mode is for the "tv" and which is for the
other monitor in all these settings, because what you think is your
"second monitor" is not always so depending on your setup. My dfp is
first when connected via analog D-sub cable but second when connected
via dvi, and I have it connected with both cables. The "@" strings
specify virtual panning areas, in order to give the lower resolution TV
a virtual area matching the higher resolution dfp; this can be left
out.
Then, in the Device section, I put:
Option "HorizSync" "tv: 30-50"
Option "VertRefresh" "tv: 60"
and
Option "TwinViewOrientation" "clone"
Option "ConnectedMonitor" "dfp, tv"
Note: I have the optional "ConnectedMonitor" specified to tell the
driver I'm using the dvi connection here, otherwise it assumes the dfp
is an analog crt, because it's also connected via an analog cable. You
may not need this option, the driver will attempt to auto-detect.
"TwinViewOrientation" "clone" makes the TV a duplicate of the image on
the dfp, you can specify other options here such as "RightOf" "LeftOf"
"Above" "Below".
Then, in the Screen section of my config file, I put:
Option "TVStandard" "NTSC-M"
Option "TVOutFormat" "SVIDEO"
Note: the TVStandard depends on where you live, and I needed to
specifiy the TVOutFormat as SVIDEO for my setup. My old TV doesn't have
SVideo connectors, so I have an SVideo cable going from the computer
and connecting to a standard composite cable with a converter plug
bought at the local electronics store. The TVOutFormat option can be
either SVIDEO or COMPOSITE.
I also experimented with Option "TVOverScan" and different values,
which seems to work. But you don't need it.
Once this is done, make sure the TV is plugged into the computer and
restart the X server (Ctrl-Alt-Backspace from within X). If you get
nothing on the TV screen, try cycling through resolutions with
Ctrl-Alt-+. Most problems can be solved with minor modifications to the
config file. The X log in /var/log gives useful information. I have
also compiled my own nVidia modules at times, but Mepis nicely supplies
pre-compiled versions for it's kernels.
I had the known issue of a garbled framebuffer console when my TV is
connected, with different versions of the nvidia driver, I fixed this
adding a vga=775 to my kernel options in /etc/boot/grub/menu.lst,
which, for the 1280x1024 resolution I use, dropped the framebuffer
colour depth down to 8 bit, 256 colours. This is a known fix that works
for at least some setups and the vga value varies depends on the screen
resolution used.
I have two usb game controllers hooked up to my computer and use the
TV-out for Linux gaming, emulation and otherwise. And all this on an
eight-year old PII-266! Of course, due to the limitations of this PII,
I do most two-player gaming in Blackbox, Fluxbox or Window Maker, it's
a tad slow in KDE on the TV with my current setup but works nicely in
those alternative window managers.