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:
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"


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.