Konfiguration des ATI-fglrx-Treibers
Verfasst: 11.04.2010, 01:52
Damit ich mir das endlich auch selbst mal merke
schreibe ich jetzt hier mal hin, wie man den Closed-Source-Treiber fglrx
richtig konfiguriert.
Wobei ich mir da nicht so sicher bin, wieviele Leute bei AMD/ATI da eigentlich selbst
noch durchblicken.
Der fglrx verwendet neben der üblichen Datei /etc/X11/xorg.conf auch noch eine Datei
/etc/ati/amdpcsdb in Form einer Pseudo-Registry, die vom Aufbau her der Registry eines
Konsolen-Betriebssystems ähnelt, aber nur eine Textdatei ist.
Genau genommen liest der fglrx beim Start des X-Servers gar nichts aus der xorg.conf aus.
Der Treiber wird nur in der Section "Devices" aufgerufen mit:
Alle weiteren Optionen, die man in der xorg.conf in den Sections "Devices", "Monitor" und "Modes"
setzen kann, liest der fglrx zur Laufzeit aus der /etc/ati/amdpcsdb.
Wenn man dem fglrx weitere Optionen oder auch benutzerdefinierte ModeLines mitteilen will,
dann hat man 2 Möglichkeiten:
1. Man schreibt das gewünschte in die xorg.conf
---------------------------------------------------------
Dann muss man die xorg.conf mittels
parsen lassen. Der Xserver sollte dabei nicht laufen und auch das Kernelmodul
des fglrx sollte nicht geladen sein.
Dabei überträgt aticonfig z.B. Einträge der Form
Die alte xorg.conf dient als Vorlage für eine durch aticonfig erstellte neue
Version. Wobei die alten Inhalte normalerweise übernommen werden, wenn sie denn
für aticonfig richtig erscheinen. Das ganze wird einmal kräftig durcheinandergerührt - insbesondere
Kommentarzeilen, und alle Einrückungen mit Leerzeichen werden durch Tabs ersetzt
.
Wenn aticonfig keine Fehler gemeldet hat, kann man ja anschließend die durchgewürfelte
xorg.conf wieder durch seine alte gutsortierte und wohlgepflegte Version ersetzen.
Wichtig:
Optionen, werden durch weglassen in der xorg.conf nicht aus der /etc/ati/amdpcsdb
gelöscht! Man sollte also entweder den Wert der Option ändern, also aus
Oder man muss die weggelassene Option auch aus der amdpcsdb löschen, was nur geht,
wenn der Xserver nicht läuft.
2. Man benutzt das Tool aticonfig zur Laufzeit des XServers
----------------------------------------------------------------------
Damit kann man eigentlich alle Optionen des Treibers auch permanent setzen, was
normalerweise auch zur Laufzeit des XServers funktionieren sollte.
Geschrieben wird direkt in die /etc/ati/amdpcsdb. Welche Optionen es gibt und
ob die Änderungen temporär für die aktuelle XSession oder dauerhaft gelten, verrät
die Hilfe:
Wobei die Optionen -wer hätte es auch anders erwartet- mitnichten den gleichen Namen
haben wie die, die man in der xorg.conf setzen kann. z.B.
Außerdem werden einige Funktionen, die in der Hilfe von aticonfig beschrieben sind,
inzwischen von xrandr übernommen. So ergibt folgendes nur
Das betrifft das Ein- und Ausschalten von Eingängen, das dynamische Ändern von
Auflösungen und das Hinzufügen von weiteren Modelines.
Die /etc/ati/amdpcsdb enthält auch Optionen, für die es keine Entsprechung
in der xorg.conf gibt. Natürlich fehlt auch jede Dokumentation, so dass man nur raten
kann, was
Ändern kann man alle Schlüsselwerte mit aticonfig in der Form
--set-pcs-u32=PREFIX,KEY,VALUE oder --set-pcs-str=PREFIX,KEY,STRING
also z.B:
Löschen mit --del-pcs-key=PREFIX,KEY .
Wenn man mit der aktuellen /etc/ati/amdpcsdb gar nicht mehr klarkommt, liegt
in dem Verzeichnis immer auch eine Vorlage als amdpcsdb.default, die man an die
Stelle der alten Datei kopieren kann -> den Xserver vorher beenden. Dann
sollte natürlich die xorg.conf mit aticonfig neu geparst werden.
Eine vollkommen neue xorg.conf für fglrx erzeugt:
Wenn eine alte xorg.conf mit einem anderem Treiber als Vorlage dienen soll:
Benutzerdefinierte Modelines werden beim parsen mit aticonfig aus der xorg.conf in
die /etc/ati/amdpcsdb übertragen. Der fglrx verwendet sie aber nur, wenn sie ihm auch "gefallen",
also z.B. zu den vom Monitor gelieferten EDID-Daten passen.
Ein überschreiben einer vom Monitor falsch per EDID gemeldeten Auflösung ist also
nicht möglich, dann kommt nur sowas:
Die Optionen "IgnoreEDID" und "IgnoreDDC", die andere Treiber kennen, gibt es beim
fglrx nicht, falsche Angaben, die ein Monitor über sich selbst macht, lassen sich
also kaum korrigieren.

schreibe ich jetzt hier mal hin, wie man den Closed-Source-Treiber fglrx
richtig konfiguriert.
Wobei ich mir da nicht so sicher bin, wieviele Leute bei AMD/ATI da eigentlich selbst
noch durchblicken.
Der fglrx verwendet neben der üblichen Datei /etc/X11/xorg.conf auch noch eine Datei
/etc/ati/amdpcsdb in Form einer Pseudo-Registry, die vom Aufbau her der Registry eines
Konsolen-Betriebssystems ähnelt, aber nur eine Textdatei ist.
Genau genommen liest der fglrx beim Start des X-Servers gar nichts aus der xorg.conf aus.
Der Treiber wird nur in der Section "Devices" aufgerufen mit:
Code: Alles auswählen
Section "Device"
Identifier "card0"
Driver "fglrx"
BusID "PCI:1:5:0" # optional, sinnvoll falls man mehrere Grafikkarten hat
EndSection
setzen kann, liest der fglrx zur Laufzeit aus der /etc/ati/amdpcsdb.
Wenn man dem fglrx weitere Optionen oder auch benutzerdefinierte ModeLines mitteilen will,
dann hat man 2 Möglichkeiten:
1. Man schreibt das gewünschte in die xorg.conf
---------------------------------------------------------
Dann muss man die xorg.conf mittels
Code: Alles auswählen
aticonfig --input /etc/X11/xorg.conf
des fglrx sollte nicht geladen sein.
Dabei überträgt aticonfig z.B. Einträge der Form
- Option "NoDRI" "off"
- [AMDPCSROOT/SYSTEM/DDX]
- NoDRI=Soff
Die alte xorg.conf dient als Vorlage für eine durch aticonfig erstellte neue
Version. Wobei die alten Inhalte normalerweise übernommen werden, wenn sie denn
für aticonfig richtig erscheinen. Das ganze wird einmal kräftig durcheinandergerührt - insbesondere
Kommentarzeilen, und alle Einrückungen mit Leerzeichen werden durch Tabs ersetzt

Wenn aticonfig keine Fehler gemeldet hat, kann man ja anschließend die durchgewürfelte
xorg.conf wieder durch seine alte gutsortierte und wohlgepflegte Version ersetzen.
Code: Alles auswählen
cp /etc/X11/xorg.conf.fglrx-0 /etc/x11/xorg.conf
Optionen, werden durch weglassen in der xorg.conf nicht aus der /etc/ati/amdpcsdb
gelöscht! Man sollte also entweder den Wert der Option ändern, also aus
- Option "NoDRI" "off"
- Option "NoDRI" "on"
Oder man muss die weggelassene Option auch aus der amdpcsdb löschen, was nur geht,
wenn der Xserver nicht läuft.
2. Man benutzt das Tool aticonfig zur Laufzeit des XServers
----------------------------------------------------------------------
Damit kann man eigentlich alle Optionen des Treibers auch permanent setzen, was
normalerweise auch zur Laufzeit des XServers funktionieren sollte.
Geschrieben wird direkt in die /etc/ati/amdpcsdb. Welche Optionen es gibt und
ob die Änderungen temporär für die aktuelle XSession oder dauerhaft gelten, verrät
die Hilfe:
Code: Alles auswählen
aticonfig -h
haben wie die, die man in der xorg.conf setzen kann. z.B.
- Option "UseFastTLS" "0"
Code: Alles auswählen
aticonfig --tls=on
inzwischen von xrandr übernommen. So ergibt folgendes nur
Code: Alles auswählen
aticonfig --query-monitor
Error: option --query-monitor is not supported when RandR 1.2 is enabled!
Auflösungen und das Hinzufügen von weiteren Modelines.
Die /etc/ati/amdpcsdb enthält auch Optionen, für die es keine Entsprechung
in der xorg.conf gibt. Natürlich fehlt auch jede Dokumentation, so dass man nur raten
kann, was
- [AMDPCSROOT/SYSTEM/MCIL]
- DALRULE_ADDNATIVEMODESTOMODETABLE=V1
Ändern kann man alle Schlüsselwerte mit aticonfig in der Form
--set-pcs-u32=PREFIX,KEY,VALUE oder --set-pcs-str=PREFIX,KEY,STRING
also z.B:
Code: Alles auswählen
aticonfig --set-pcs-u32=MCIL,DALRULE_ADDNATIVEMODESTOMODETABLE,0
Wenn man mit der aktuellen /etc/ati/amdpcsdb gar nicht mehr klarkommt, liegt
in dem Verzeichnis immer auch eine Vorlage als amdpcsdb.default, die man an die
Stelle der alten Datei kopieren kann -> den Xserver vorher beenden. Dann
sollte natürlich die xorg.conf mit aticonfig neu geparst werden.
Eine vollkommen neue xorg.conf für fglrx erzeugt:
Code: Alles auswählen
aticonfig --initial
Code: Alles auswählen
aticonfig --initial --input=/etc/X11/xorg.conf
die /etc/ati/amdpcsdb übertragen. Der fglrx verwendet sie aber nur, wenn sie ihm auch "gefallen",
also z.B. zu den vom Monitor gelieferten EDID-Daten passen.
Ein überschreiben einer vom Monitor falsch per EDID gemeldeten Auflösung ist also
nicht möglich, dann kommt nur sowas:
Code: Alles auswählen
(EE) fglrx(0): Add Customize Mode failed: 7
(II) fglrx(0): Not using mode "1920x1080x50++" (unknown reason)
(II) fglrx(0): Not using mode "1920x1080x60++" (unknown reason)
fglrx nicht, falsche Angaben, die ein Monitor über sich selbst macht, lassen sich
also kaum korrigieren.