= ATI Radeon Grafikkarten =

In meinem Sony Laptop (siehe LaptopLinux) ist eine Radeon Grafikkarte verbaut. Diese wurde von meinem Debian Linux ordungsgemäß erkannt. Allerdings habe ich immer mal wieder beim Abspielen von Filmen, die ein bisschen ruckelten, gedacht: Muss das denn sein auf einem extra als Fernseh-Ersatz beworbenen Gerät? Ausserdem möchte ich gerne einen zweiten Monitor anschliessen, um mehr Spass mit [Eclipse] zu bekommen. Also habe ich mich entschlossen, mir das Ding mal näher anzusehen.

== Identifikation ==

Mit ''lspci'' bzw. ''lspci -n'' ergibt sich:

  01:00.0 VGA compatible controller: ATI Technologies Inc Mobility Radeon HD 3400 Series  
  01:00.0 0300: 1002:95c4

Daraus wird erstmal grundsätzlich klar, um was für ein Gerät es sich handelt bzw. welche PCI-ID es hat.

Ein Blick in  ''/var/log/Xorg.0.log'' ergibt (u.a.) folgendes:

  (II) Loading extension XFree86-DRI
  (II) Matched radeon from file name radeon.ids in autoconfig
  (II) Matched radeonhd from file name radeonhd.ids in autoconfig
  (==) Matched radeon for the autoconfigured driver
  (==) Assigned the driver to the xf86ConfigLayout
  (II) LoadModule: "radeon"
  (II) Loading /usr/lib/xorg/modules/drivers//radeon_drv.so
  (II) Module radeon: vendor="X.Org Foundation"

Es gibt also offensichtlich einen '''radeon''' und einen '''radeonhd''' Treiber. Aus irgendeinem Grund hat der X-Server sich für den ersteren entschieden.

Da ich das so verstanden habe, daß die Anzeige von Videos auf '''DRI''' basiert, habe ich da auch mal nach gesehen:

  # xdriinfo
  Xlib:  extension "XFree86-DRI" missing on display ":0.0".
  Screen 0: not direct rendering capable.

Daher könnten meine ruckeligen und schlecht skalierbaren Videos kommen (ohne, daß ich bwhaupten will, ich hätte dass wirklich verstanden).



== Links zusammentragen ==

* Die [Wikipedia-Seite über Radeon|http://en.wikipedia.org/wiki/Radeon] erklärt ein bisschen was zu einem proprietären Treiber [fglrx|http://en.wikipedia.org/wiki/Fglrx] und dem freien reverse-engineered ''radeon''-Treiber sowie dem neuen freien - von ATI unterstützten - Treiber ''radeonhd''.

* Im [Wikipedia-Eintrag zur HD 3400|http://en.wikipedia.org/wiki/Radeon_R600#Radeon_HD_3400] steht noch etwas zu den beiden von ATI unterstützten Treibern.
* Natürlich gibt es auch auf der ATI Webseite eine [Seite zur HD 3400|http://ati.amd.com/de/products/radeonhd3400/index.html].
* Es gibt ein [unofficial ATI Linux Driver Wiki|http://wiki.cchtml.com/index.php/Main_Page].
* Im [Thinkwiki|http://www.thinkwiki.org/wiki/Fglrx] steht auch was, insbesondere zum Thema Display Switching (mit dem fglrx-Treiber).
* offizielle Seite zum [radeonhd-Treiber|http://www.x.org/wiki/radeonhd]

Zum Thema ~XRandR gibt es noch mehr:

* [ThinkWiki-Artikel|http://www.thinkwiki.org/wiki/Xorg_RandR_1.2] über ~RandR
* guter [Einsteiger-Artikel|http://www.phoronix.com/scan.php?page=article&item=927&num=1] zu ~RandR


== mögliche Treiber ==

Mir geht es um das Ansehen von Videos. Wie nennt man das? Ist das DRI? Ich glaube ja. Außerdem geht es mir um mehrere Monitore. Beides wird offensichtlich vom proprietären '''fglrx'''-Treiber unterstützt. Andererseits ist der '''radeonhd''' ganz frei und damit natürlichviel politisch korrekter. Im übrigen zeigt meine Erfahrung, daß proprietärer Code in Debian oft Ärger macht, wenn man z.B. mal den Kernel wechselt oder sonst irgendwie herumbastelt.

Mein erster Versuch war, den '''radenonhd'''-Treiber zu benutzen. Allerdings unterstützt dieser in der Version, die bei Debian Lenny dabei ist, offensichtlich nicht die neueren Autokonfigurationsmethoden (ich rate mal, kein RandR). Das führte dazu, daß ich mit meiner ''xorg.conf'', in der eigentlich überhaupt nichts konfiguriert ist, nicht weit gekommen bin.

Ich benutze öfters das KDE-Miniprogramm zum Umschalten der Bildschirmauflösung. Dieses zeigte mir bisher automatisch alle möglichen Auflösungen an. Auf diesen Luxus wollte ich nur ungern verzichten, auch hatte ich vorerst keine Lust, alle Bildschirmmodi von Hand in der xorg.conf einzugeben. Dies insbesondere, da ja mein Ziel ist, einen zweiten Monitor anzuschliessen. Da dies an verschiedenen Arbeitsplätzen immer auch verschiedene Geräte sein können, wäre es schon besser, wenn deren Auflösung automatisch konfiguriert würde. :-(

Also den proprietären '''fglrx'''-Treiber ausprobiert. Das entsprechende Debian-Paket forderte mich jedoch auf, meinen Kernel zu downgraden. Da fiel mir ein, daß ich einen Kernel aus "Testing" benutze, damit mein WLAN funktioniert. Da solche Kernel-Abhängigkeiten genau das sind, weshalb ich proprietäre Treiber hasse, war ich nicht glücklich. :-(

Nach ein bisschen Lesen habe ich festgestellt, daß der radeonhd-Treiber eigentlich können sollte, was ich brauche. Also habe ich kurzerhand mein ganzes System auf '''Debian Squeeze''' geupgradet. Das das den Umstieg von KDE3 auf KDE4 bedeuten würde, war mir in dem Moment zwar nicht so klar, aber nach einigen Kämpfen lief mein aktualisiertes System (irgendwann wäre das ja eh fällig gewesen...).

Und siehe da: Ich habe den '''radeonhd'''-Treinber in die ''xorg.conf'' eingetragen und dieser lief sofort. Mit ''xrandr'' habe ich dann auch Informationen über alle angeschlossenen Bildschirme erhalten. Ich war da, wo ich hinwollte.



== Konfiguration ==

Die einzige Einstellung in der ''xorg.conf'', die nötig ist, ist das "Virtual", um den maximalen Framebuffer einzustellen. Dessen Größe ist normalerweise auf 2048x2048 eingestellt, was mit zwei Bildschirmen nebeneinander schnell übertroffen werden kann.

Mit dem Konmandozeilentool '''xrandr''' kann man nun alle Aspekte des Dual Mode ansehen und einstellen. Da hatte ich gedacht, ich hätte es geschafft...

Nun hätte ich aber gerne gehabt, daß sich das Ding von alleine bzw. über das KRandR-Miniprogramm in der Kontrolleiste konfigurieren lässt. Leider habe ich das nicht hinbekommen. Wenn ich in der ''xorg.conf'' Xinerama einschalte oder mehrere Monitore mit "rightof" einstelle, bekomme ich einen Segmentation Fault. :-( 

Auf der [Thinkwiki-Seite über RandR|http://www.thinkwiki.org/wiki/Xorg_RandR_1.2] ist ein Skript, das beim Start des X-Servers alle xrandr-Einstellungen richtig einstellt. Soweit so gut. Leider führt das dazu, daß ich beim Login ein geklontes Display habe (ist beim Login ja vielleicht auch sinnvoll), dann (wohl durch das Skript) beim hochfahren zwei verschiedene Screens aufgehen. In diesen werden dann auch zwei unterschiedliche (von mir per KDE eingestellte) Hintergrundbilder angezeigt. Während sich dann der Desktop aufbaut (so ca. 1-2 Sekunden später) verschwindet der eine Screen dann wieder und ich bekomme wieder einen geklonten Bildschirm. Für mich heisst das, daß KDE4 die Einstellung des Skripts wieder überschreibt.

Der Versuch, dann eben mit KDE4 alles richtig einzustellen, misslang, weil im entsprechenden Dialog für den Multi-Monitor-Mode lapidar ausgegeben wird, daß mein Rechner dafür ja wohl nicht eingestellt wäre. Auf der anderen Seite kann ich dort sehr wohl für beide Monitore die Auflösung angeben (aber eben nur für eine geklonte Ausgabe...). :-(

Die Lösung, die ich dann genommen habe, ist ein Button, der den Befehl 

  xrandr --output VGA_1 --auto --right-of PANEL

startet. Diesen drücke ich dann von Hand, wenn ich einen Monitor angeschlossen habe. Wer weiss, wie man das mit KDE einstellen kann, möge sich bitte bei mir melden. -- ThomasBayen


----
[{Tag X11}]