8.20. TV-out support

8.20.1. Matrox G400 cards

Under Linux you have two methods to get G400 TV out working:

重要

for Matrox G450/G550 TV-out instructions, please see the next section!

XFree86

Using the driver and the HAL module, available from the Matrox site. This will give you X on the TV.

This method doesn't give you accelerated playback as under Windows! The second head has only YUV framebuffer, the BES (Back End Scaler, the YUV scaler on G200/G400/G450/G550 cards) doesn't work on it! The windows driver somehow workarounds this, probably by using the 3D engine to zoom, and the YUV framebuffer to display the zoomed image. If you really want to use X, use the -vo x11 -fs -zoom options, but it will be SLOW, and has Macrovision copy protection enabled (you can "workaround" Macrovision using this perl script).

Framebuffer

Using the matroxfb modules in the 2.4 kernels. 2.2 kernels don't have the TVout feature in them, thus unusable for this. You have to enable ALL matroxfb-specific feature during compilation (except MultiHead), and compile them into modules! You'll also need I2C enabled.

  1. Enter TVout and type ./compile.sh. Install TVout/matroxset/matroxset somewhere into your PATH.

  2. If you don't have fbset installed, put TVout/fbset/fbset somewhere into your PATH.

  3. If you don't have con2fb installed, put TVout/con2fb/con2fb somewhere into your PATH.

  4. Then enter into the TVout/ directory in the MPlayer source, and execute ./modules as root. Your text-mode console will enter into framebuffer mode (no way back!).

  5. Next, EDIT and run the ./matroxtv script. This will present you to a very simple menu. Press 2 and Enter. Now you should have the same picture on your monitor, and TV. If the TV (PAL by default) picture has some weird stripes on it, the script wasn't able to set the resolution correctly (to 640x512 by default). Try other resolutions from the menu and/or experiment with fbset.

  6. Yoh. Next task is to make the cursor on tty1 (or whatever) to disappear, and turn off screen blanking. Execute the following commands:

    echo -e '\033[?25l'
    setterm -blank 0

    or

    setterm -cursor off
    setterm -blank 0

    You possibly want to put the above into a script, and also clear the screen. To turn the cursor back:

    echo -e '\033[?25h'

    or

    setterm -cursor on

  7. Yeah kewl. Start movie playing with

    mplayer -vo mga -fs -screenw 640 -screenh 512 filename

    (If you use X, now change to matroxfb with for example Ctrl-Alt-F1.) Change 640 and 512 if you set the resolution to other...

  8. Enjoy the ultra-fast ultra-featured Matrox TV output (better than Xv)!

Building a Matrox TV-out cable.  No one takes any responsibility, nor guarantee for any damage caused by this documentation.

Cable for G400.  The CRTC2 connector's fourth pin is the composite video signal. The ground are the sixth, seventh and eighth pins. (info contributed from Balázs Rácz)

Cable for G450.  The CRTC2 connector's first pin is the composite video signal. The ground are the fifth, sixth, seventh, and fifteenth (5, 6, 7, 15) pins. (info contributed from Balázs Kerekes)

8.20.2. Matrox G450/G550 cards

TV output support for these cards has only been recently introduced, and is not yet in the mainstream kernel. Currently the mga_vid module can't be used AFAIK, because the G450/G550 driver works only in one configuration: the first CRTC chip (with much more features) on the first display (on monitor), and the second CRTC (no BES - for explanation on BES, please see the G400 section above) on TV. So you can only use MPlayer's fbdev output driver at the present.

The first CRTC can't be routed to the second head currently. The author of the kernel matroxfb driver - Petr Vandrovec - will maybe make support for this, by displaying the first CRTC's output onto both of the heads at once, as currently recommended for G400, see the section above.

The necessary kernel patch and the detailed HOWTO is downloadable from http://www.bglug.ca/matrox_tvout/

8.20.3. ATI cards

PREAMBLE.  Currently ATI doesn't want to support any of its TV-out chips under Linux, because of their licensed Macrovision technology.

ATI CARDS TV-OUT STATUS ON LINUX

  • ATI Mach64: supported by GATOS.

  • ASIC Radeon VIVO: supported by GATOS.

  • Radeon and Rage128: supported by MPlayer! Check VESA driver and VIDIX sections.

  • Rage Mobility P/M, Radeon, Rage 128, Mobility M3/M4: supported by atitvout.

On other cards, just use the VESA driver, without VIDIX. Powerful CPU is needed, though.

Only thing you need to do - Have the TV connector plugged in before booting your PC since video BIOS initializes itself only once during POST procedure.

8.20.4. nVidia

First, you MUST download the closed-source drivers from http://nvidia.com. I will not describe the installation and configuration process because it does not cover the scope of this documentation.

After XFree86, XVideo, and 3D acceleration is properly working, edit your card's Device section in the XF86Config file, according to the following example (adapt for your card/TV):

Section "Device"
        Identifier      "GeForce"
        VendorName      "ASUS"
        BoardName       "nVidia GeForce2/MX 400"
        Driver          "nvidia"
        #Option         "NvAGP" "1"
        Option          "NoLogo"
        Option          "CursorShadow"  "on"

        Option          "TwinView"
        Option          "TwinViewOrientation" "Clone"
        Option          "MetaModes" "1024x768,640x480"
        Option          "ConnectedMonitor" "CRT, TV"
        Option          "TVStandard" "PAL-B"
        Option          "TVOutFormat" "Composite"
EndSection

Of course the important thing is the TwinView part.

8.20.5. NeoMagic

The NeoMagic chip is found in a variety of laptops, some of them are equipped with a simple analog TV encoder, some have a more advanced one.

  • Analog encoder chip: It has been reported that reliable TV out can be obtained by using -vo fbdev or -vo fbdev2. You need to have vesafb compiled in your kernel and pass the following parameters on the kernel command line: append="video=vesafb:ywrap,mtrr" vga=791. You should start X, then switch to console mode with e.g. Ctrl-Alt-F1. If you fail to start X before running MPlayer from the console, the video becomes slow and choppy (explanations are welcome). Login to your console, then initiate the following command:

    clear; mplayer -vo fbdev -zoom -cache 8192 dvd://

    Now you should see the movie running in console mode filling up about half your laptop's LCD screen. To switch to TV hit Fn-F5 three times. Tested on a Tecra 8000, 2.6.15 kernel with vesafb, ALSA v1.0.10.

  • Chrontel 70xx encoder chip: Found in IBM Thinkpad 390E and possibly other Thinkpads or notebooks.

    You must use -vo vesa:neotv_pal for PAL or -vo vesa:neotv_ntsc for NTSC. It will provide TV output function in the following 16 bpp and 8 bpp modes:

    • NTSC 320x240, 640x480 and maybe 800x600 too.

    • PAL 320x240, 400x300, 640x480, 800x600.

    Mode 512x384 is not supported in BIOS. You must scale the image to a different resolution to activate TV out. If you can see an image on the screen in 640x480 or in 800x600 but not in 320x240 or other smaller resolution you need to replace two tables in vbelib.c. See the vbeSetTV function for details. Please contact the author in this case.

    Known issues: VESA-only, no other controls such as brightness, contrast, blacklevel, flickfilter are implemented.