8.20. Unterstützung für die TV-Ausgabe

8.20.1. Matrox G400-Karten

Unter Linux hast du zwei Möglichkeiten, den TV-Ausgang deiner G400 anzuschalten:

Wichtig

Anweisungen für die Matrox G450/G550 und deren TV-Ausgänge findest du im nächsten Abschnitt!

XFree86

Mit dem alten Treiber und dem HAL-Modul, welches es auf der Matrox-Seite gibt. Damit bekommst du X auf dem Fernseher, aber keine Hardwarebeschleunigung wie unter Windows!

Der zweite Ausgang besitzt nur einen YUV-Framebuffer. Der BES (Back End Scaler, die YUV-Skalierungseinheit des G200/G400/G450/G550) funktioniert mit ihm nicht! Der Windows-Treiber umgeht das irgendwie, wahrscheinlich dadurch, dass er die 3D-Engine für die Skalierung und den YUV-Framebuffer zur Anzeige des skalierten Bildes verwendet. Wenn du unbedingt X benutzen willst, dann probier -vo x11 -fs -zoom, aber das wird LANGSAM sein und den Macrovision-Kopierschutz aktiviert haben. (Du kannst Macrovision mit diesem Perlscript umgehen.)

Framebuffer

Mit den matroxfb-Modulen in den 2.4er Kerneln. 2.2er Kernel kennen den TV-Ausgang noch nicht und sind somit hierfür nicht geeignet. Du musst ALLE matroxfb-spezifischen Features bei der Compilierung anschalten (bis auf MultiHead). Compiliere sie als Module! Du musst ebenfalls I2C anschalten.

  1. Gehe nach TVout und gib ./compile.sh ein. Installiere TVout/matroxset/matroxset in ein Verzeichnis, das in deinem PATH liegt.

  2. Wenn du fbset nicht installiert hast, installiere TVout/fbset/fbset in ein Verzeichnis, das in deinem PATH liegt.

  3. Wenn du con2fb nicht installiert hast, installiere TVout/con2fb/con2fb in ein Verzeichnis, das in deinem PATH liegt.

  4. Geh jetzt in das Verzeichnis TVout/ in den MPlayer-Quellen und führe dort ./modules als root aus. Deine Textmodusconsole wird danach in den Framebuffermodus umschalten, aus dem es keinen Weg zurück gibt!

  5. Editiere als nächstes das Script ./matroxtv. Es wird dir ein simples Menü präsentieren. Drücke 2 gefolgt von ENTER. Jetzt solltest du auf dem Fernseher das gleiche Bild wie auf dem Monitor sehen. Wenn das TV-Bild (PAL ist die Standardeinstellung) merkwürdige Streifen enthält, dann war das Script nicht in der Lage, die Auflösung richtig zu setzen (per Voreinstellung 640x512). Probiere andere im Menü angebotene Auflösungen aus und/oder experimentiere mit fbset.

  6. So. Die nächste Aufgabe ist es, den Cursor auf tty1 (oder woauchimmer) verschwinden zu lassen, und den Bildschirmschoner auszuschalten. Führ folgende Kommandos aus:

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

    oder

    setterm -cursor off
    setterm -blank 0

    Wahrscheinlich möchtest du das in ein Script packen und dabei gleich den Bildschirm löschen. Um den Cursor wieder anzuschalten:

    echo -e '\033[?25h'

    oder

    setterm -cursor on

  7. Yeah kewl. Starte die Wiedergabe mit

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

    (Wenn du X benutzt, dann wechsle jetzt auf den matroxfb mit z.B. STRG-ALT-F1!) Ändere die 640 und 512, wenn du eine andere Auflösung verwendest.

  8. Genieße die ultra-schnelle und featurereiche Wiedergabe mit dem Matrox-TV-Ausgang (sogar noch besser als Xv)!

Matrox-TV-Ausgangskabel im Eigenbau.  Niemand übernimmt Verantwortung für irgendetwas oder jegliche Schäden, die durch diese Dokumentation entstehen.

Kabel für die G400.  Der vierte Pin des CRTC2-Steckers liefert das Composite Video-Signal. Erde liegt am sechsten, siebten und achten Pin. (Informationen von Balázs Rácz)

Kabel für die G450.  Der erste Pin des CRTC2-Steckers liefert das Composite Video-Signal. Erde liegt am fünften, sechsten, siebten und fünfzehnten (5, 6, 7, 15) Pin. (Information von Balázs Kerekes)

8.20.2. Matrox G450/G550-Karten

Unterstützung für den TV-Ausgang dieser Karten wurde erst kürzlich implementiert und ist noch nicht in den Standardkerneln enthalten. Momentan kann das mga_vid-Modul nicht benutzt werden, wenn ich recht informiert bin, da der G450/G550-Treiber nur in einer Konfiguration arbeitet: Der erste CRTC-Chip (mit den vielen Features) am ersten Display (meistens der Monitor), und der zweite CRTC (kein BES - Erläuterungen zum BES gibts in der G400-Sektion oben) am Fernseher. Somit kannst du momentan nur den fbdev-Ausgabetreiber von MPlayer benutzen.

Der erste CRTC kann momentan nicht an den zweiten Ausgang umgeleitet werden. Der Author des matroxfb-Kernelmoduls, Petr Vandrovec, wird auch das irgendwann unterstützen, indem die Ausgabe des ersten CRTC auf beiden Ausgängen angezeigt wird, wie es momentan auch für die G400 empfohlen wird (siehe oben).

Der dafür benötigte Kernelpatch und eine detaillierte Anleitung kann auf http://www.bglug.ca/matrox_tvout/ gefunden werden.

8.20.3. ATI-Karten

EINLEITUNG.  Momentan möchte ATI keinen einzigen ihrer TV-Ausgabe-Chips unter Linux unterstützen, da sie die Macrovision-Technologie lizensiert haben.

STATUS DER ATI-TV-AUSGABEUNTERSTÜTZUNG UNTER LINUX

  • ATI Mach64: Von GATOS unterstützt.

  • ASIC Radeon VIVO: Von GATOS unterstützt.

  • Radeon und Rage128: Von MPlayer unterstützt! Lies die VESA-Treiber- und VIDIX-Sektionen.

  • Rage Mobility P/M, Radeon, Rage 128, Mobility M3/M4: Von atitvout unterstützt.

Verwende bei anderen Karten einfach den VESA-Treiber ohne VIDIX. Dafür brauchst du aber eine schnelle CPU.

Nur eines musst du tun - das TV-Kabel vor dem Booten eingesteckt haben, da das BIOS sich nur einmal während der POST-Prozedur initialisiert.

8.20.4. nVidia

Zuerst musst du die Closed-Source-Treiber von http://nvidia.com herunterladen. Ich werde Installation und Konfiguration nicht im Detail beschreiben, da dies außerhalb der Aufgabe dieses Dokuments liegt.

Nachdem du sichergestellt hast, dass XFree86, XVideo und die 3D-Beschleunigung funktionieren, ändere die XF86Config, und passe das folgende Beispiel deiner Karte an:

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

Natürlich besteht der wichtige Teil aus den TwinView-Optionen.

8.20.5. NeoMagic

Der NeoMagic-Chip befindet sich auf zahlreichen Laptops, einige von ihnen sind mit einen einfachen analogen TV-Encoder ausgestattet, einige besitzen einen fortschrittlicheren.

  • Analoger Encoder-Chip: Es wurde berichtet, dass ein zuverlässiger TV-Ausgang mittels -vo fbdev oder -vo fbdev2 erreicht werden kann. Du musst vesafb in deinen Kernel compiliert haben und der Kernel-Befehlszeile folgende Parameter übergeben: append="video=vesafb:ywrap,mtrr" vga=791. Du solltest X starten, dann in den Consolen-Modus z.B. mit STRG-ALT-F1 wechseln. Misslingt der Start von X vor dem von MPlayer in der Console, wird das Video langsam und abgehackt (Erklärungen sind willkommen). Logge dich auf deiner Konsole ein und initialisiere dann folgenden Befehl:

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

    Jetzt solltest du den Film im Konsolen-Modus laufen sehen. Er wird etwa die Hälfte des LCD-Bildschirms deines Laptops ausfüllen. Um auf TV zu wechseln, drücke dreimal Fn-F5. Getestet auf einem Tecra 8000, 2.6.15 Kernel mit vesafb, ALSA v1.0.10.

  • Chrontel 70xx Encoder-Chip: Zu finden im IBM Thinkpad 390E und möglicherweise anderen Thinkpads oder Notebooks.

    Du musst -vo vesa:neotv_pal für PAL oder -vo vesa:neotv_ntsc für NTSC verwenden. Es wird eine TV-Output-Funktion in folgenden 16bpp und 8bpp-Modi zur Verfügung stellen:

    • NTSC 320x240, 640x480 und evtl. auch 800x600.

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

    Der Modus 512x384 wird im BIOS nicht unterstützt. Du musst das Bild auf eine andere Auflösung skalieren, um die TV-Ausgabe zu aktivieren. Wenn du auf dem Schirm ein Bild in 640x480 oder in 800x600 siehst, jedoch nicht in 320x240 oder einer kleineren Auflösung, musst du zwei Tabellen in vbelib.c ersetzen. Siehe Funktion vbeSetTV für Details. Bitte kontaktiere in diesem Fall den Autor.

    Bekanntes Problem: Nur VESA, keine weiteren Schalter wie Helligkeit, Kontrast, Blacklevel, Flimmerfilter sind implementiert.