NVIDIA-Treiber 310.xx mit Bumblebee unter Ubuntu 12.10 / Linux Mint 14
Ja die lieben Hybrid-Grafikkarten sind so ein Problemkind auf dem Notebook. Mit NVIDIA und Bumblebee (optirun) funktioniert das eigentlich recht gut und es lassen sich sowohl die Intel-, als auch die NVIDIA-Grafikkarte nutzen. Allerdings mag Bumblebee zunächst nur mit nvidia-current funktionieren und das ist Treiber 304.xx.
Wer ein Notebook mit Optimus-Technologie hat, hier kurz zur Erinnerung, wie man Bumblebee ans Laufen bekommen:
sudo add-apt-repository ppa:bumblebee/stable
- (Für Ubuntu 12.04 musst Du dieses Repository ebenfalls einpflegen:
sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
) sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia linux-headers-generic
Danach kannst Du via optirun <Applikation> oder /usr/bin/optirun <Applikation> die Software aufrufen, die mit der NVIDIA-Karte betrieben werden soll. Damit läuft dann glxspheres doch schon mal deutlich schneller, als mit der Intel-Grafikkarte. Unten im Bild links ist glxspheres mit optirun liegt bei 175 Frames pro Sekunde und ohne kommt die Software gerade mal auf knapp 60.
Nun hat allerdings NVIDIA mit Treiber 310.xx einen ziemlichen Geschwindigkeits-Schub versprochen. Dieser Treiber befindet sich auch als nvidia-experimental-310 im Ubuntu-Repository (sudo apt-get install nvidia-experimental-310 nvidia-settings-experimental-310
). Installiert man diesen, funktioniert allerdings Bumblebee / optirun nicht mehr. Das ist ärgerlich.
Ich wollte aber wissen, wie viel schneller der Treiber ist und habe ein bisschen im Internet gestöbert. So schwer ist es gar nicht, den Treiber mit Bumblebee lauffähig zu machen.
Öffne mit dem Editor Deiner Wahl als root die Datei /etc/bumblebee/bumblebee.conf. Hier musst Du 4 Zeilen verändern. Vielleicht solltest Du eine Kopie der Datei machen – Backup ist zwar was für Feiglinge, aber sicher ist sicher. Finde danach einfach die entsprechenden Parameter, die dann wie folgt aussehen müssen (bis auf die erste Zeile ist es im Prinzip nvidia-current durch nvidia-experimental-310 ersetzen)
- Driver=nvidia
- KernelDriver=nvidia-experimental-310
- LibraryPath=/usr/lib/nvidia-experimental-310:/usr/lib32/nvidia-experimental-310
- XorgModulePath=/usr/lib/nvidia-experimental-310/xorg,/usr/lib/xorg/modules
Nach Abspeichern der Datei kannst Du den Bumblebee-Dienst neu starten: sudo service bumblebeed restart
. Und versuch jetzt noch einmal optirun glxspheres
– da ist gleich mehr Dampf dahinter. Im Screenshot siehst Du 190 Frames pro Sekunde. Das schwankte aber – 185 war am niedrigsten und 226 am höchsten.
Nun hatte ich bei der dritten Zeile der Datei bumblebee.conf übersehen, dass man hier nvidia-current zweimal ersetzen muss und glxspheres startete mit einem Fehler. Ich bin auf nachfolgendes Script gestoßen, welches man in eine Datei wie postinst.sh speichern und danach so aufrufen soll (als root): sh postinst.sh configure
. Ich hatte das vor meinem Fehler gemacht und weiß nicht, ob es etwas hilft. Sollten die Schritte oben keinen Erfolg bringen, kannst Du das optional ausprobieren.
Update: Das Ganze geht noch schneller! NVIDIA-Karte unter Linux: primusrun – optirun auf Speed (mit Benchmark)
#!/bin/sh
# postinst script for bumblebee-nvidia
#
# see: dh_installdeb(1)
set -e
case "$1" in
configure)
# Repair GL on the intel display
for arch in x86_64-linux-gnu i386-linux-gnu; do
update-alternatives --force --set \
${arch}_gl_conf /usr/lib/$arch/mesa/ld.so.conf 2>/dev/null || true
done
# versions before Oneiric without multiarch
update-alternatives --force --set \
gl_conf /usr/lib/mesa/ld.so.conf 2>/dev/null || true
ldconfig
# this has a chance of crashing the machine with mainline kernels...
grep -q '^nouveau ' /proc/modules && rmmod nouveau || true
if [ -e "/etc/init/bumblebeed.conf" ]; then
invoke-rc.d bumblebeed restart || true
fi
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
exit 0
Wem das alles nicht geheuer ist und wieder auf nvidia-current oder 304.xx setzen möchte, kann so eine Rolle rückwärts machen: sudo apt-get purge nvidia-current nvidia-current-updates nvidia-experimental-* bumblebee-nvidia && sudo apt-get install bumblebee-nvidia
Es geht noch ein wenig einfacher mit dem Repository ppa:xorg-edgers/ppa bekommst du sogar die Treiber 313.18 als nvidia-current installiert. Da brauchst du dann nichts an der Konfiguration von Bumblebee ändern.
Gruß
Volker
Aber bekomme ich da nicht auch noch andere Komponenten aktualisiert? Ich wollte nur den Treiber haben ...
Das ist sicher richtig. X-Server und ein paar andere Komponenten werden auch aktualisiert.
Gruß
Volker
"glxspheres" → ergibt bei mir ebenfalls verdächtige 59-60fps (Intel HD4000).
"vblank_mode=0 glxspheres" → allerdings ca. 145fps!!
"optirun glxspheres" → (mit oder ohne vblank_mode=0) ca. 125fps (weiss nicht genau welcher nvidia Treiber)
"primusrun glxspheres" → ebenfalls auf Bildschirmwiederholrate beschränkte 60fps
"vblank_mode=0 primusrun glxspheres" → ca. 155fps
Mehr zu primusrun findet man im Ubuntuusers.de-Wiki http://wiki.ubuntuusers.de/Hybrid-Grafikkarten/primus
Ich habe nicht schlecht gestaunt, als die Intel HD4000 mehr als doppelt so viele fps lieferte mit "vblank_mode=0". Erst der Wiki-Artikel hatte mich darauf gebracht, dass diese 60fps eben verdächtig sind 🙂
übrigens mit Ubuntu 12.10
Mir deucht das ganze glxspheres ist denkbar ungeeignet für Benchmarks. Ich habe nun auch noch mal getestet und nicht schlecht gestaunt:
“vblank_mode=0 primusrun glxspheres” → ca. 400fps
“optirun glxspheres” → ca. 190fps
“vblank_mode=0 glxspheres” → ca. 195fps
also bei mir ist die Intel schneller als die NVIDIA mit optirun ?!?! ... ich mach mich mal auf die Suche nach einem echten Benchmark-Programm ... 🙂
vielleicht noch ein Hinweis zu primusrun und NVIDIA 310.xx ... ist erst mal auf die Nase gefallen, weil es nvidia-current nicht gefunden hat. Man muss das Script /usr/bin/primusrun anpassen. Hier auch nvidia-current mit nvidia-experimental-310 tauschen - an 3 Stellen!
ja, das denke ich auch. Hoffentlich findest du etwas besseres, etwas das aber immer noch "handlich" ist 🙂
Schon passiert ... 🙂 -> klick
Statt Editieren von Konfigurationsdateien genügen 2 Softlinks:
sudo ln -s /usr/lib/nvidia-experimental-310/ /usr/lib/nvidia-current
sudo ln -s /usr/lib32/nvidia-experimental-310/ /usr/lib32/nvidia-current