Ein komplett vorkonfiguriertes System (A GNU/LINUX ARCADE DISTRIBUTION) für 15 khz gibts hier.
-------------------------------------------
15 khz linux howto - connecting an arcade monitor or a rgb tv set to a pc
-------------------------------------------
Im folgenden geht es um den Test der vorhandenen Grafikkarte unter Linux via VGA 2 SCART Kabel am TV/Arcade Monitor ohne das installierte System zu verändern. Die Festplatte bleibt also unangetastet. Linux wird (noch) nicht installiert! Zum Test der propritären Treiber muss Linux auf die Festplatte. Klappt gar nichts, hilft es evtl. die Monitorkabel an den Ports (Grafikkartenausgängen) zu tauschen.
Bei einigen passiv gekühlten ATI Karten kann es zu Temperaturproblem kommen, weil beim "radeon" Treiber das PowerPlay nicht automatisch aktiviert wird. Die Karten werden ohne zusätzliche Kühlung extrem heiß, da sie immer mit der höchsten Spannung und dem höchsten Takt arbeiten.
Abhilfe schafft später ein Eintrag in die xorg.conf oder z.B. das Skript PowerPlaySwitcher.py.
# /etc/X11/xorg.conf
# ..
# enable (partial) PowerPlay features
Option "DynamicClocks" "on"
# ..
Alles ohne Gewähr und auf eigenes Risiko!
Los geht!
- Aktuelle Linux CD/DVD mit Live Funktion (zum Testen, ohne Installation!) besorgen (z.B. Lubuntu)
- Testdateien und Skripte hier aus der Anteitung auf einen USB-Stick kopieren.
- Rechner von CD booten, Sprache auswählen und "Linux ausprobieren"
Nach erfolgreichem Booten:
- Programme nachinstallieren. Terminal (z.B. xterm, hier lxterminal) öffnen und
linux@linux > sudo apt-get update
linux@linux > sudo apt-get install mesa-utils hwinfo grandr joe
- Terminal öffnen und die folgenden Befehle ausführen, um Information zur Grafikhardware und den verwendeten Treiber zu ermitteln.
linux@linux > sudo hwinfo --gfxcard | grep Model
Model: "ATI Radeon HD 3870"
linux@linux > sudo hwinfo --gfxcard | grep Driver
Driver Info #0:
Driver Status: radeon is active
Driver Activation Cmd: "modprobe radeon"
Verwendeter Treiber: "radeon"
- 3D Fähigkeiten testen (falls Mesa vorinstalliert ist)
linux@linux > glxgears
18550 frames in 5.0 seconds
21045 frames in 5.0 seconds
21071 frames in 5.0 seconds
21064 frames in 5.0 seconds
21047 frames in 5.0 seconds
- Herrausfinden, welche Ports (Grafikkartenausgänge) erkannt wurden:
linux@linux > sudo xrandr
xrandr: Output DVI-1 is not disconnected but has no modes
Screen 0: minimum 320 x 200, current 1680 x 1050, maximum 1680 x 1680
DVI-1 connected (normal left inverted right x axis y axis)
DVI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 474mm x 296mm
1680x1050 59.9*+ 60.0
1280x1024 75.0 60.0
1440x900 59.9
1280x960 60.0
1152x864 75.0
1024x768 75.0 60.0
832x624 74.6
800x600 75.0 60.3 56.2
640x480 75.0 59.9
720x400 70.1
Hier sind zwei vorhanden: DVI-0, DVI-1 (andere Bezeichnungen: VGA, CRT, DVN usw.)
Anmerkung: Nicht jede Grafikkarte, die über zwei Ausgänge verfügt kann automatisch mit zwei unterschiedlichen Screens arbeiten. Schaltet man den zweiten Port ab "sudo xrandr --output DVI-1 --off" und hat immer noch ein Bild ist das wahrscheinlich der Fall.
- USB Stick einstecken (Dialog öffnet sich) und Terminal im Pfad des Sticks öffnen (z.B. /media/sdb1). Dann in das Verzeichnis scripts wechseln. "cd scripts"
- Skripte ausführbar machen
linux@linux > sudo chmod 755 xrand*
- Modelines einlesen (Ports anpassen, hier DVI-0, DVI-1)
linux@linux > sudo ./xrandr-read-modelines-with-args.sh DVI-0 DVI-1
- Eingelesene/akzeptierte Modelines:
linux@linux > sudo xrandr
root@linux:~/Desktop/xorg-15-khz/15-khz-hardware-testen/scripts# xrandr
Screen 0: minimum 320 x 200, current 1680 x 1050, maximum 1680 x 1680
DVI-1 connected (normal left inverted right x axis y axis)
648x480x60.00-1525-1570 29.7
648x480x60.00-1575 29.5
648x480x60.00-h91101526-1667 29.7
648x480x59.95-15734-ntsc 29.5
768x576x50.00-15625-pal 23.9
800x576pali 24.4
800x288pal-half 48.7
768x576pali 23.7
768x288pal-half 47.4
720x576pali 23.4
usw.
DVI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 474mm x 296mm
1680x1050 59.9*+ 60.0
1280x1024 75.0 60.0
1440x900 59.9
1280x960 60.0
1152x864 75.0
1024x768 75.0 60.0
832x624 74.6
800x600 75.0 60.3 56.2
640x480 75.0 59.9
720x400 70.1
648x480x60.00-1525-1570 29.7
648x480x60.00-1575 29.5
648x480x60.00-h91101526-1667 29.7
648x480x59.95-15734-ntsc 29.5
usw.
- Auflösungen testen:
Am besten immer mit einem Finger auf der Fernbedienung bleiben und sofort "umschalten", wenn kein normales Bild erscheint. Monitore können durch "falsche" Frequenzen zerstört werden.
Als Desktophintergrund benutze ich zusätzlich noch ein TV-Testbild.
a.) Manuell
linux@linux > sudo xrandr --output DVI-0 --mode "648x480x59.95-15734-ntsc"
... wenn an DVI-0 der TV/Arcade Monitor angeschlossen ist.
oder per Oberfläche
linux@linux > sudo grandr
oder, wenn die Grafikkarte nur einen Port hat bzw. nur mit einem Screen arbeitet.
linux@linux > sudo xrandr --output DVI-0 --mode "648x480x59.95-15734-ntsc" && sleep 5 && sudo xrandr --output DVI-0 --auto
bzw.
linux@linux > sudo xrandr --output DVI-0 --mode "648x480x59.95-15734-ntsc" && sleep 5 && sudo xrandr --output DVI-0 --mode "Standardauflösung hier eintragen"
Diese Zeile schaltet auf die Modeline "648x480x59.95-15734-ntsc", wartet 5 Sekunden und schaltet dann auf die Standardardauflösung zurück.
b.) Skripte
Benutzung auf eigene Gefahr (wie alles hier).
Im entsprechenden Skript müssen im Texteditor die Variablen "output1" und "standardresolution", ggf. noch "output2" dem entsprechenden Port bzw. Wert zugewiesen werden.
Die Skripte arbeiten alle nach dem gleichem Schema. Nach dem Start wird der erste Modeline-Name aus der Datei modeline.dat eingelesen und an den oder die Ports angelegt. Nach 5 Sekunden schaltet das Skript wieder auf die Standardauflösung zurück. Mit der Leertaste geht es zur nächsten Modeline. Jede andere Taste führt zum Abbruch. Das Skript kann nicht erkennen, ob eine Modeline erfolgreich mit xrandr (vorheriger Schritt) eingelesen wurde. Deswegen kann es vorkommen, das Modelines aufgerufen werden, die nicht vorhanden sind - es erscheint eine Fehlermeldung, was man ignorieren kann.
Am besten notierten, welche Auflösungen funktionieren und hier posten - Beispielformat:
Card: ATI Radeon HD 3870 (hwinfo --gfxcard | grep Model)
Driver: radeon (hwinfo --gfxcard | grep Driver)
TV/Arcade Monitor: Sony KV M2101 D
Linux Kernel: 2.6.32-35-generic-pae (uname -rv)
CPU: Intel(R) Core(TM)2 Duo CPU E8400@3.00GHz (cat /proc/cpuinfo | grep model)
GL_RENDERER: Mesa DRI R600 (RV670 9501) 20090101 x86/MMX/SSE2 TCL (glxinfo | grep "renderer string")
GL_VERSION: 1.5 Mesa 7.7.1 (glxinfo | grep "OpenGL version string")
GL_VENDOR: Advanced Micro Devices, Inc. (glxinfo | grep "OpenGL vendor string")
glxgears: 21064 frames in 5.0 seconds (glxgears)
Darunter die Modelines (xrandr -q)
khz/Hz
648x480x60.00-1525-1570 29.7 ok 15,5/30
648x480x60.00-1575 29.5 ok 15,5/30
usw.
Für Grafikkarten, die zwei getrennte Screens unterstützen:
xrandr-reso-test-15-khz-both-ports.sh - An beiden Ports wird das 15 khz Signal angelegt
# ..
standardresolution="1680x1050" # Standardauflösung des TFTs
output1="DVI-0" # VGA-0, DVI-0, CRT-0, DFP2, default,
output2="DVI-1"
# ..
xrandr-reso-test-15-khz-analog-monitor-only.sh - 15 khz nur für den TV/Arcade Monitor
# ..
standardresolution="" #
output1="DVI-1" # VGA-0, DVI-0, CRT-0, DFP2, default,
# ..
xrandr-reso-test-15-khz-TFT-only.sh - 15 khz nur für den TFT
Für TFTs, die bei out of range, die aktuellen Frequenzen anzeigen, ohne abzurauchen.
# ..
standardresolution="1680x1050" #
output1="DVI-0" # VGA-0, DVI-0, CRT-0, DFP2, default,
output2="DVI-1"
# ..
Für Grafikkarten mit einem Screen an mehreren Ports:
xrandr-reso-test-two-ports-one-screen.sh
# ..
standardresolution="1680x1050" #
output1="VGA-1" # VGA-0, DVI-0, CRT-0, DFP2, default,
output2="DVI-D-1"
# ..
- Linux installieren
- Die Modelines hinzufügen
Am einfachsten ist es die funktionierenden Modelines in die Bootskripte des Display Managers einzutragen (gdm, lxdm, kdm o.ä.). Nachteil: Das Booten kann dadurch länger dauern.
GDM:
# /etc/gdm/Init/Default
#!/bin/sh
# Stolen from the debian kdm setup, aren't I sneaky
# Plus a lot of fun stuff added
# -George
PATH="/usr/bin:$PATH"
OLD_IFS=$IFS
xrandr --newmode "1024x600@50,201" 20,9 1024 1072 1176 1328 600 607 610 627 interlace -hsync -vsync
xrandr --newmode "800x600@50,546" 16,48 800 840 920 1040 600 602 605 627 interlace -hsync -vsync
xrandr --newmode "640x480@59,536" 13,09 640 672 736 836 480 481 483 526 interlace -hsync -vsync
#xrandr --newmode usw.
xrandr --addmode DVI-1 "1024x600@50,201"
xrandr --addmode DVI-1 "800x600@50,546"
xrandr --addmode DVI-1 "640x480@59,536"
xrandr --output DVI-0 --off # TFT
xrandr --output DVI-1 --primary # TV/Arcade monitor
xrandr --output DVI-1 --mode 800x600@50,546 # Standardauflösung hier eintragen
LXDM:
# /etc/lxdm/PostLogin
xrandr --newmode "1024x600@50,201" 20,9 1024 1072 1176 1328 600 607 610 627 interlace -hsync -vsync
xrandr --newmode "800x600@50,546" 16,48 800 840 920 1040 600 602 605 627 interlace -hsync -vsync
usw.
Xsessions (unabhängig vom Display Manager, ungetestet):
# /etc/X11/Xsessions
xrandr --newmode "1024x600@50,201" 20,9 1024 1072 1176 1328 600 607 610 627 interlace -hsync -vsync
xrandr --newmode "800x600@50,546" 16,48 800 840 920 1040 600 602 605 627 interlace -hsync -vsync
usw.
Es gibt auch die Möglichkeit die Modelines erstmal in der /etc/X11/xorg.conf einzutragen, um zu schauen, welche nicht akzeptiert werden (/var/log/Xorg.0.log) und anschließend nur diese in die Bootskripte von gdm, lxdm o.ä aufnehmen.
Nach dem Neustart erscheint der Login Screen auf dem TV/Arcade Monitor!
Was jetzt noch fehlt:
- Automatisches Login
Hier mit dem gdm für den User mame:
# /etc/gdm/custom.conf
[daemon]
TimedLoginEnable=false
AutomaticLoginEnable=true
TimedLogin=mame
AutomaticLogin=mame
TimedLoginDelay=30
DefaultSession=trinity # Window Manager
- Autostart des Emulator-Frontends (Wahcade o.ä.)
Der Autostart-Mechanismus hängt vom Window-Manager ab (gnome, kde, blackbox etc.)
fluxbox: Das Startprogramm einfach in de Datei ~/.fluxbox/startup eintragen: wahcade &
trinity und KDE: Skript (Name ist egal) in das Verzeichnis ~/.trinity/Autostart bzw. ~/.kde/Autostart kopieren.
Gnome: Das Startprogramm gehört hier in das Verzeichnis ~/.config/autostart
usw.
~/ steht für das Homeverzeichnis des Users.
Damit bootet der Rechner vom Einschalten bis zum Frontend in eins durch.
Have fun
Dateien/Skripte:
15-khz-hardware-test.tar.gz
Links:
Arcade Info
Groovy Arcade
Supermodel: A Sega Model 3 Arcade Emulator
The Nexus
TV / Arcade Modelines
Wah!cade
X11 VGA to PAL scart
How to use a SCART TV as a Monitor for MAME
RGB via SCART
PowerPlaySwitcher.py