Linux Conspirare

The UnOfficial Nvidia tvout Information

Using the TVOUT feature on NVIDIA-based cards with the NVIDIA linux driver

 This page made by [email protected] for the most part and just placed here for users info. Linux
Conspirare claims no credit for it.

 This page is mainly for non twinview cards. I don't have a twinview card so I couldn't
give any info on it. If you got any info to add please email it to the address in the Nvidia
help page at the bottom (ie Email for submiting info or sites).

Look here for a example twinview setup and config

 I have added some files for you to download with examples.
These scritps work the same as tvout file says. Pretty much just names are a little diff.
It should be easy to figure out I hope. Get it here.
Tv out example files and docs.

1) Upgrade to NVIDIA driver 1.0-1251 or newer

  You can get the stuff from

  I won't walk you through installing the drivers -- that's more than
  adequately covered in the NVIDIA README:

  Basically it just comes down to

rpm --rebuild /path/to/NVIDIA_kernel.1.0-version.src.rpm
rpm -Uvh /path/to/NVIDIA_kernel.1.0-version.i386.rpm
rpm -Uvh NVIDIA_GLX.1.0-version.i386.rpm

  or something depending on your distro and installed kernel.

  NOTE: Nvidia drivers before 1.0-1251 DO NOT support TVOUT.

2) Read the TVOUT_README


   That's the authorative source of information.

   Basically you can run both monitor and tvout simultaneously if you have
  twinview capable card. If you don't (like me), you can still launch an
  X server to another VT (and switch in between with ctrl-alt-F7/F8), but
  only one display (monitor or tv) is enabled at a time.

   Fortunately launching another X server to another VT is relatively easy
  with suitable script and you can actually do it from within your primary
  X server/session.

  ****Update agpgart should work now in drivers after 1.0-1251*****
  ****Update agpgart may not be capable of 2 X sessions. Works with nvagp though for 1.0-1251****

3) Tune your XF86Config

  I added these to my XF86Config:

  To the Monitor sections:

Section "Monitor"

    Identifier  "TV"

    HorizSync 30-50
    VertRefresh 60


  That's straight out from the TVOUT_README.

  To the Screen sections:

Section "Screen"
    Identifier  "Screen_tvout640"
    Device      "geforce"
    Monitor     "TV"
    DefaultDepth 24

    # PAL-G for Finland; PAL-D for China and North Korea, see TVOUT_README
    Option "TVStandard" "PAL-G"
    Option "ConnectedMonitor" "TV"

    Subsection "Display"
        Depth       24
        Modes       "640x480"
        ViewPort    0 0

Section "Screen"
    Identifier  "Screen_tvout800"
    Device      "geforce"
    Monitor     "TV"
    DefaultDepth 24

    Option "TVStandard" "PAL-G"
    Option "ConnectedMonitor" "TV"

    Subsection "Display"
        Depth       24
        Modes       "800x600"
        ViewPort    0 0

  And finally to the ServerLayout sections:

    # monitor
    Screen "Screen 1"
    # tvout
    #Screen "Screen_tvout640"
    #Screen "Screen_tvout800"

4) Starting the server

   You can now start the server to tvout mode by uncommenting the
  relevant Screen line in XF86Config. That's not convenient. Fortunately
  you can use xinit command line to select the screen. I use the following
  script to start the server in tvout mode:

  cat tvout

xinit $* -- :1 -bpp 24 -screen Screen_tvout800
startx -- :1 -bpp 24 -screen Screen_tvout800

   So if you do './tvout xclock' it launches an X server to VT 8, transfers
  control to it, and shows a xclock in there (in your tv, if you're lucky.)
  You can kill that server normally with ctrl-alt-backspace, or just exit
  xclock more gracefully. When the X server has finished, the control (and
  picture) comes back to where it was (eg. your primary X server and monitor).

   You can also switch between the secondary (tv) X and primary (monitor) X
  with ctrl-alt-F8/F7. Convenient, huh?

5) What do you do with it?

  Watch movies, of course.

  I have this script to launch movie play on tv:

  cat movieplay

/usr/X11R6/bin/xterm -e \
 /usr/local/bin/mplayer -fs -vo sdl -zoom \
  And I use it like this:

./tvout ./movieplay foo.avi

   (I'm not exactly sure why mplayer needs to be launched from xterm whereas
  most other programs work without it, but I don't complain. -fs means
  fullscreen, -vo sdl is needed since the xvideo extension is not yet
  supported with tvout, and -zoom may provide better performance with SDL.)

   Note that since you are not launching a window manager (no need for that),
  you don't see any borders on the maximized movie window. Nice.

   You can propably get your favourite movie player working in similar vein.

5a) Other uses

 Also you can do a simple use with a display manager and other stuff for automatic
 Tv stuff. The following is from MacSlow

Here is the stuff I came up with to make good use of
the TV-out plug on my nVIDIA gfx-card. In the attachment you'll find two
simple shell-scripts I use to make starting up this whole TV-thing
easier. They need to be put somewhere in the $PATH and treated with the
usual chmod ugo+x . But this is for sure nothing new to you I assume :)

    For me it works like this... once I start a program on the TV-set
via the use of these scripts my monitor turns black and I can only deal
with the computer via the display on the TV. After I exited the program
running on the TV, the additional X11-server is shut down again and
control comes back to the monitor. This is sofar the best setup I could
come up with on my non-TwinView GeForce256 DDR. I know of this nv-tv
tool, but I have not checked out that one yet. It promises to offer TwinView-like
features even for GeForce256-based cards.


XFree86 :1 vt8 -screen screen_tvout800 +bs -ac &
export DISPLAY=:1

# start the program you passed via the command-line, make sure
# to put the arguments passed in "" so they are regarded as one
# argument in this script

export DISPLAY=:0
killall -15 XFree86



XFree86 :1 vt8 -screen screen_tvout800 +bs -ac &
export DISPLAY=:1

# use this if you want to have aviplay playback on the tv
#aviplay --fullscreen --maximize "$1"

# this example starts xine's DVD-playback on the tv in fullscreen
#xine -f -g -pq dvdnav://

# example how to use mplayer on the tv in fullscreen-mode
mplayer -fs "$1"

export DISPLAY=:0
killall -15 XFree86


Mirco Mueller

6) Related links

The rivatv project works on some older Riva-based cards:

7) Problems?

  Linus Larsson  reports that if you get an error
  about not being authorized to connect to the server, this trick will

mcookie|sed -e 's/^/add :1 . /'|xauth -q

- 18052001 [email protected]
- 16012002 [email protected] (updates)

Valid HTML 4.01!