How to get TV-out with a Matrox G400 / G400 MAX



This text describe how to get TV-out working with a Matrox G400 / G400 MAX
card in Linux with MPlayer.

The only useful way to get TV-out on G400 is to use the framebuffer, because
without YUV and accelerated playback it will be SLOW and have Macrovision
copyprotection enabled.

If you use your textmode console now you can say goodbye to that and start
using a graphic console instead i.e. a framebuffer.

Recompile your kernel and enable this stuff in the kernel, not as modules:

Character Devices > I2C support > I2C support                                   
Character Devices > I2C support > I2C bit-banging interfaces                    
Character Devices > I2C support > I2C device interface                          
Character Devices > Matrox g200/g400                                            
Console drivers > Frame-buffer support > Support for frame buffer devices       
Console drivers > Frame-buffer support > Matrox acceleration                    
Console drivers > Frame-buffer support > G100/G200/G400/G450/G550 support       
Console drivers > Frame-buffer support > Matrox I2C support                     
Console drivers > Frame-buffer support > G400 second head support               
Console drivers > Frame-buffer support > Select compiled-in fonts               
Console drivers > Frame-buffer support > VGA 8x8 font                           
Console drivers > Frame-buffer support > VGA 8x16 font                          

It will work to have it as module also, but it hasnt always worked for me, it
sometimes crashed the computer. And you will get an ugly 640x480 8x16 font by
default when you load the module for the matrox framebuffer. Its better to
do it right from the beginning.

Before you boot your new kernel put these in your lilo.conf:
For 1280x1024x32 in the fb put: video=matrox:vesa:283,noblink
For 1024x768x32  in the fb put: video=matrox:vesa:280,noblink

You can read /usr/src/linux/Documentation/fb/matroxfb.txt or wherever you
put your kernel for other modes. If you use 1600x1200x32 it will not work
later when you turn TV-out on. "noblink" isnt necessary but i recommend it.

You should put it under "append" like this:

image=/boot/Linux-2.4.18
        label=Linux
        root=/dev/sda1
        append="video=matrox:vesa:283,noblink"
        read-only

So, when you have rebooted your new kernel change to console 5 (Ctrl+Alt F5)
and put this script in for example /usr/local/bin/tv-out-init and
do chmod a+rx /usr/local/bin/tv-out-init

-----cut------
#!/bin/sh

con2fb /dev/fb1 /dev/tty6
matroxset -f /dev/fb1 -m 0
matroxset -f /dev/fb0 -m 3
matroxset 1
fbset -fb /dev/fb1 -left 40 -right 0 -upper 63 -lower 29 -hslen 56 -vslen 4
-xres 640 -yres 528 -vxres 640 -vyres 528 -depth 32 -laced false -bcast true
setterm -blank 0
-----cut------

then you do like this:

Enter TVout/matroxset and type make, install it in /usr/local/bin/
Enter TVout/fbset and type make, install it in /usr/local/bin/
Enter TVout and run ./matroxtv script. Press 2 and enter. You should
now have the same picture on your TV that you have on your monitor.

You can now quit the ./matroxtv script and examine what kind of TV you got and
test TV-640x512, TV-640x528, TV-704x528, TV-704x576, TV-720x576 and
TV-720x576-old in the same dir. When you have found what kind of TV you
got, change to that mode in /usr/local/bin/tv-out-init if needed, by
changing every appearance of 640 and 528 on the fbset-line to fit your TV.

Run tv-out-init (Having /usr/local/bin in your PATH is a good thing).
console 5 will be TV-out, console 6 will be unusable. On console 7 will
you have X on most Linux systems. If you have less ttys in console than
6 you can use an other console for TV-out. The consoles will get a refresh
rate of 50 Hz, i dont know if that can be changed in to 75 Hz or something
like that.

Next, create a nice alias to play via TV-out, put
alias tv='mplayer -vo mga -fs -quiet -screenw 640 -screenh 528'
in your .bashrc. Change to an other mode if you got an other TV than
i got. You dont need to be root to init TV-out or to use TV-out.
Play something with:

$ tv filename


This text was written 2002-04-20 by iocc. It was slightly updated 2003-02-15.
This text has helped at least 10 persons to get working TV-out in Linux.

cd .. back to my homepage