Die Nvidia-Grafik unter Linux macht Fortschritte

Wer hätte das gedacht: Das Update auf Ubuntu 12.10 (genauer gesagt Xubuntu 12.10, ich bevorzuge einen altmodischen Desktop) bringt endlich einmal spürbare Fortschritte für Anwender mit Nvidia-Grafikkarten. “Schuld” daran ist der aktuelle Linux-Treiber des Grafikkarten-Herstellers mit der Versions-Bezeichnung 304.51.really.304.43-0ubuntu1. Das bedeutet:

  • Bildschirm-Setup mit Linux-Bordmitteln (RandR) – ohne die umständlichen nvidia-settings.
  • Keine xorg.conf mehr nötig.
  • Keine bläulichen YouTube-Flash-Videos mehr.
  • Flash-Videos mit Hardware-Beschleunigung – oder besser doch nicht.

Der Treiber läuft natürlich auch unter anderen Linuxen, und offenbar wurden die Änderungen schon mit einem Beta-Treiber im Mai eingeführt. Alle braven Ubuntu-User, die keine Experimente machen, sind mit der jüngst veröffentlichten Distributions-Version “Quantal Quetzal” ebenfalls in den Genuss des Updates gekommen. Wer hingegen die LTS-Variante Ubuntu 12.04 mit den Standard-Paketquellen nutzt, sitzt offenbar immer noch auf einer alten Treiber-Version und sollte auf eine PPA-Paketquelle umsteigen (auf eigene Gefahr – ich habe es nicht probiert), um in den Genuss der verbesserten Treiber zu kommen.

Standardmäßig installiert Ubuntu auf Systemen mit Nvidia-Grafikkarten zunächst einmal den Nouveau-Treiber. Der ist Open Source, mangels Unterstützung von Nvidia aber auf Reverse Engeneering angewiesen und deshalb leider ziemlich lahm. Echte 3D-Beschleunigung und Video-Dekodierung gibt’s nur mit Nvidias eigenem Closed-Source-Treiber und nur für die von der Software unterstützten Karten (siehe Supported Products). Um diesen Treiber unter Ubuntu bereitzustellen, installiert man das Paket nvidia-current:

$ sudo apt-get install nvidia-current

Die Installation sorgt dafür, dass der nvidia-Treiber heruntergeladen und eingerichtet wird. Nach einem Neustart (Abmelden/wieder Anmelden sollte genügen) steht er zur Verfügung. Routinemäßig habe ich dann die Datei /etc/X11/xorg.conf aufrufen wollen, um dort ein Multimonitor-Setup mit Twinview einzurichten; mein Notebook Toshiba Tecra R10 sitzt in einer Dockingstation mit per DVI angebundenem externen 23”-Monitor. Doch – oh Wunder! – es gibt keine xorg.conf mehr. Kaum zu glauben, aber wahr: Während Systeme mit Intel-Grafik schon seit Ewigkeiten ohne die Konfigurationsdatei des Xorg-Grafikservers, der bei Linux (noch) für das Fensterln verantwortlich ist, auskommen, haben die nvidia-Entwickler das jetzt auch geschafft.

Der Screenshot aus den nvidia-settings (oben) zeigt, dass die Grafik einen virtuellen X-Screen 0 eingerichtet hat, der das Notebook-Display (DFP-0) und den externen Monitor (DFP-1) umfasst. Nvidia verwendet hier eigene Bezeichnungen. Nun kann man in den verbesserten nvidia-Settings anfangen, das setup zu modifizieren und die Bildschirme anzuordnen (sogar per Drag and Drop, aber hallo!). Doch man kann es auch lassen. Denn der upgedatete nvidia-Treiber arbeitet endlich auch ordentlich mit Linux-Bordmitteln zusammen, nämlich der “Resize and Rotate extension” für den X.Org-Server, bekannter unter dem Kürzel RandR.

Das bedeutet, dass man die Grafikeinstellungen auch über die Distributions-eigenen Tools vornehmen kann – bei Xubuntu ist das die “Anzeige” in den XFCE-Einstellungen. Experten können das Grafikverhalten auch skripten, nämlich mit Hilfe des Konsolen-Befehls

$ xrandr

Der spruckt ohne Beigabe weiterer Attribute die aktuelle Grafik-Konfiguration aus. Auf meinem Computer heißen die Monitore dann LVDS-0 und DVI-D-0. Wer es ganz unkompliziert mag (wie ich), installiert das Tool Jupiter aus einem PPA. Es taucht als Blitz-Symbol im Panel auf. Ein Mausklick darauf öffnet ein Menü, mit dem man ganz einfach das Monitor-Setup (beide Monitore, nur ein Monitor), die Grafikauflösung und die Ausrichtung (Monitor drehen, Pivot-Funktion) ändern kann. Eigentlich ist Jupiter ein Stromspar-Tool, aber das würde jetzt zu weit führen.

Wer sein System so weit eingerichtet hat, darf zur Entspannung auch mal ein YouTube-Video aufrufen. Dort sieht man, dass der mit der früheren nvidia-Treiberversion aufgetauchte Blauschleier über den Flash-Videos wieder verschwunden ist. Schön. Nur die Hardware-Beschleunigung für Flash-Videos funktioniert immer noch nicht out of the box, obwohl beim Rechts-Klick auf das YouTube-Filmchen unter Einstellungen die Option “Hardware-Beschleunigung aktivieren” angekreuzt ist. Die fehlende Unterstützung äußert sich derart, dass in meinem Notebook der Lüfter aufheult und dass

$ top

anzeigt, dass der plugin container des Firefox’ bei der Wiedergabe eines 720p-Videos 98% der CPU-Ressourcen konsumiert.

Offenbar hat Flash-Hersteller Adobe mangels Vertrauen in die Stabilität der Hardware-Dekodierung unter Linux immer noch keine Lust, diese von vornherein freizuschalten. In den Release Notes für den Flash-Player verrät Adobe allerdings einen kleinen Hack zur Abhilfe: Man nehme eine Konfigurationsdatei /etc/adobe/mms.cfg und lege darin folgende Zeile nieder:

EnableLinuxHWVideoDecode=1

Auf meinem System gab es diese Datei und auch den Ordner noch nicht; ich habe beide also mit Root-Rechten neu angelegt. Danach reichte ein Neustart des Browsers, und siehe da: Der plugin container konsumiert nur noch 15,6 Prozent. Der Lüfter verhält sich unauffällig.

Warum Adobe die Hardware-Unterstützung nur als experimentell bezeichnet, merkt man dann dummerweise doch sehr bald: Flash stürzt wieder häufiger ab  (was dank der Arbeit der Firefox-Entwickler anders als früher nicht mehr den gesamten Browser in den Abgrund reißt); auch eine Vollbild-Ansicht wollte bei mir nicht gelingen. Im Chromium-Browser ist es nicht anders.

Vermutlich trifft Adobe daran die geringste Schuld. Für die Video-Dekodierung hat nvidia unter Linux eine Software-Bibliothek namens VDPAU bereitgestellt, die wiederum mit dem proprietären nvidia-Treiber zusammenarbeitet. Die Bibliothek sollte Ubuntu bei der Installation von nvidia current automatisch auf die Platte geholt haben. Die Ausgabe von

$ vdpauinfo

zeigt an, welche Funktionen die verbaute Hardware unterstützt. Doch die Praxis sieht oft anders aus. Selbst mit dem für solche Fälle oft empfohlenen Mplayer (Ubuntu 12.10 installiert den Fork Mplayer2) ist die Wiedergabe von HD-Videos per Hardware-Dekodierung nach wie vor hakelig, zumal bei einem Multimonitor-Setup. Mal geht’s, mal geht’s nicht, mal bricht’s bei der Umschaltung auf Vollbild-Wiedergabe ab. Tatsächlich habe ich noch kein Player-Programm gefunden, dass absturzsicher über die VDPAU-Bibliothek HD-Videos zeigt.

Übrigens: Wer ein Notebook mit Nvidias Optimus-Technologie (Intel Chipsatz-Grafik mit zuschaltbarer Nvidia Grafikkarte) sein Eigen nennt, dem bringt auch der neue nvidia-Treiber nichts. An einer Abhilfe arbeitet das Bumblebee-Projekt. Nvidia selbst lässt Linux-User bei dieser immerhin schon seit zwei Jahren verbauten Doppelgrafik weiter im Regen stehen.

Wie sagte noch Linux-Erfinder Linus Torvalds? Nvidia, f*ck you! Sicher bringt der aktuelle Treiber Fortschritte für Linux-Nutzer. Das Grundproblem bleibt allerdings: Weil der Hersteller den Source-Code seines Treibers streng unter Verschluss hält und dabei – laut Torvalds – so unkooperativ wie kein anderer agiert, ist man seiner Produktpflege auf Gedeih und Verderb ausgeliefert.

6 comments on “Die Nvidia-Grafik unter Linux macht Fortschritte”

  1. Klappt das mit den “besseren” Teibern auch für 12.04? Gibt es eine .deb dafür? Danke schon mal.

  2. Hallo Berend, versuch mal sudo apt-get install nvidia-experimental-304. Scheint so, als ob es dieses Paket für 12.04 gibt, jedenfalls steht es so in den offiziellen Paketlisten von Ubuntu. Siehe http://packages.ubuntu.com/search?keywords=nvidia-experimental-304 unter “Precise updates”. “Precice Pangolin” ist der Name für Ubuntu 12.04 LTS. Ansonsten im xorg-edgers PPA via sudo apt-add-repository ppa:xorg-edgers/ppa mit den allerneuesten Treibern bedienen.

  3. Ich kann nvidia-319 wärmstens empfehlen. Er bietet zumindest grundlegenden Optimus-Support und läuft auf einem Lenovo Thinkpad mit Quadro K2000M vollkommen stabil. Weder im Dock mit 3 Monitoren noch mobil hatte ich damit bisher Probleme. Das automatische Umschalten bzw. aktivieren von Optimus klappt aber leider immer noch nicht. Multi-Monitor-Betrieb ist nur mit der Einstellung ‘discrete’ möglich.

  4. @Stefan: Genau, der 319er wird auch von Nvidia als aktuelle Version im “Long Lived Branch” empfohlen. Zu blöd, dass Ubuntu ihn noch nicht in den offiziellen Paketquellen hat. Man muss sich also mit dem xorg-edgers ppa behelfen … oder auch nicht. Zumindest bei meinem Notebook (kein Nvidia Optimus) läuft’s auch mit dem von Ubuntu installierten Closed-Source-Treiber rund.

    Schön ist auch, dass inzwischen das Zusammenspiel der Video-Beschleunigung mit Gstreamer (gstreamer-plugins-bad) funktioniert, so dass der bisweilen zickige Mplayer nicht mehr die einzige Option für HD-Videos ist – wenngleich die CPU-Auslastung mit Mplayer und VDPAU noch ein paar Prozentpunkte niedriger liegt. Auch das Flash-Plugin mit aktivierter Hardware-Beschleunigung stürzt bei mir in Ubuntu 13.04 nicht mehr ab.

    Was Optimus angeht: Ich dachte, mit dem Kernel 3.9 läuft das Umschalten zwischen Nvidia- und Intel-Grafik endlich?

  5. Der Name des Unternehmens ist schon cool gewählt. Er bedeutet Menschlichkeit gegenüber Anderen. Mit Menschlichkeit ist wohl im übertragenen Sinne ein angenehmeres Arbeiten am PC gemeint. Die Linux Distribution bzw. Betriebssystem lässt sich auch gut handeln, wenn man erst einmal den Einstieg geschafft hat. Das Problem ist, dass der Mensch ein Gewohnheitstier ist und krasse Umstellungen nur schwer umsetzten kann oder will. Wenn man sich einmal an die ersten Wochen und Monate mit Windows erinnert, waren diese bestimmt auch nicht ganz einfach. Wer den Einstieg in Ubuntu wagt, wird kurzfristig zweimal überlegen müssen, welchen Schritt er im System als nächstes tut, doch seit dem Start des Systems hat sich einiges verbessert, was den Umstieg wesentlich erleichtert. Mit den neuen Funktionen, die verbaute Hardware unterstützt, geht alles viel einfacherer.

Schreibe einen Kommentar