Home Wiki > SDB:NVIDIA Bumblebee
Sign up | Login

SDB:NVIDIA Bumblebee

tagline: Aus openSUSE

Dieser Artikel beschäftigt sich mit der Installation von Bumblebee 3.2.1 unter openSUSE
Getestet mit openSUSE Empfohlene Artikel Verwandte Artikel
Icon-checked.png

Icon-manual.png Icon-help.png
bumblebee

NVIDIA-Logo-Large.png

Bumblebee für NVIDIA Optimus

Download für openSUSE:





Situation

Nvidia Optimus ist eine Technologie von Nvidia, mit deren Hilfe bei Notebooks Energie gespart werden soll, um die Akkulaufzeit zu erhöhen. Hierzu wird die Leistungsstärkere Nvidia-Grafikkarte nur zur internen zugeschaltet wenn Bedarf besteht oder dies explizit vom Benuzer gewünscht ist.

Um diese Technologie auch unter Linux nutzen zu können wurde das Bumblebee Projekt ins leben gerufen. Als Alternative kann bei vielen Laptops auch die Nvidia Grafikkarte im BIOS deaktiviert werden. Dann wird nur noch der interne Grafikadapter genutzt.


Vorgehensweise

Vorbereitung

Obwohl die Installation von Bumblebee meißt ohne Probleme verläuft, ist es besser vorher ein Backup seiner openSUSE Installation anzulegen. btrfs ist seit openSUSE 13.2 das Standart FileSystem für /root, welches snapshots unterstützt. Mit dem Befehl:

snapper create -d BeforeBB

wird ein Snapshot Namens "BeforeBB" angelegt, auf welchen man bei Problemen zurückrollen kann.

Bumblebee mit Open Source Treibern einrichten

Um Bumblebee ohne proprietäre Treiber zu nutzen, kann es so eingerichtet werden das nur die Intel Grafikkarte mit den Open Source Treibern verwendet wird. Der proprietäre Nvidia Treiber wird nicht benötigt.

Das Bumblebee Repository muss entweder durch Yast oder per Zypper dem System hinzugefügt werden:

Note: 42.2 ist die Version die hier verwendet wird. Sollte eine andere Version laufen, einfach ersetzen


Jetzt kann Bumblebee installiert werden:

zypper in bumblebee


Als nächstes muss der User der bumblebee und video Gruppe beitreten:

usermod -G video,bumblebee username


Danach wird bbswitch und dkms gestartet:

systemctl enable dkms
systemctl enable bumblebeed


Nun muss in /etc/modprobe.d/50-blacklist.conf noch die Zeile "blacklist nouveau" eingefügt werden (auch wenn der nouveau Treiber genutzt werden soll). Ist die Zeile eingetragen noch ein

mkinitrd

ausführen.

Ein Neustart ist nicht unbedingt nötig, schaden tut es aber auch nicht.


Bumblebee mit Nvidia Treiber installieren

Vorbereitung

Um den Nvidia Treiber zu installieren müssen die Kernel Headers installiert sein. Am besten erst einmal sein System auf den neuesten Stand bringen.

zypper up


Jetzt können die Kernel Headers installiert:

zypper in -t pattern devel_kernel


Installieren

Das Bumblebee Repository muss entweder durch Yast oder per Zypper dem System hinzugefügt werden:

Note: 42.2 ist die Version die hier verwendet wird. Sollte eine andere Version laufen, einfach ersetzen


Jetzt kann Bumblebee installiert werden:

zypper in bbswitch bumblebee dkms nvidia-bumblebee nvidia-bumblebee-32bit primus VirtualGL-devel VirtualGL-32bit
Note: Wenn ein 64-bit System läuft, sollte ebenfalls nvidia-bumblebee-32bit und VirtualGL-32bit installiert werden, damit 32-bit Andwendungen wie Steam ebenfalls funktionieren.

Als nächstes muss der User der bumblebee und video Gruppe beitreten:

usermod -G video,bumblebee username


Danach wird bbswitch und dkms gestartet:

systemctl enable dkms
systemctl enable bumblebeed
Note: Will man die Nvidia Grafikkarte auch für CUDA Programmierung verwenden, ist zu beachten das die Bumblebee Nvidia Treiber meistens neuer sind als die die mit dem CUDA Package kommen. Aus diesem Grund muss erst Bumblebee installiert werden, dann das CUDA 7.0 Package und danach noch einmal Bumblebee installieren, damit alles korrekt funktioniert.

Nun muss in /etc/modprobe.d/50-blacklist.conf noch die Zeile "blacklist nouveau" eingefügt werden (auch wenn der nouveau Treiber genutzt werden soll). Ist die Zeile eingetragen noch ein

mkinitrd

ausführen.

Jetzt muss der Rechner neugestartet werden.

Bumblebee Testen

Mit

optirun --status

kann der Status von Bumblebee abgerufen werden. Ist die Ausgabe "Bumblebee status: Ready (3.2.1). X inactive. Discrete video card is off.", sollte Bumblebee funktionieren.

Um das zu testen kann man "glxspheres" mit optirun starten:

optirun glxspheres

(Note: glxspheres ist im Mesa-demo package zu finden)

Es sollte sich ein neues Fenster mit sich drehenden Kreisen öffnen. Parallel zu den Kreisen sollte folgendes in der Konsole erscheinen:

Polygons in scene: 62464 (61 spheres * 1024 polys/spheres)
Visual ID of window: 0x21
Context is Direct
OpenGL Renderer: GeForce GTX 970M/PCIe/SSE2
213.450051 frames/sec - 238.210257 Mpixels/sec
221.106897 frames/sec - 246.755297 Mpixels/sec

Optional kann anstatt "optirun" auch "primusrun" genutzt werden:

primusrun glxspheres
Polygons in scene: 62464 (61 spheres * 1024 polys/spheres)
Visual ID of window: 0x96
Context is Direct
OpenGL Renderer: GeForce GTX 970M/PCIe/SSE2
61.235767 frames/sec - 68.339115 Mpixels/sec
59.914242 frames/sec - 66.864294 Mpixels/sec

Wie man sieht ergibt primusrun weniger frames/sec. Das liegt daran das primusrun die Framerate der Frequenz des Monitors anpasst (normalerweise 60MHz). Setzt man "vblank_mode=0" vor primusrun, wird die Sperre der Framerate aufgehoben.

vblank_mode=0 primusrun glxspheres

optirun vs primusrun

Der Unterschied zwischen "optirun" und "primusrun" ist folgender: "optirun" erzeugt eine zweite Instanz von X und kopiert dabei den Framebuffer. Diese Lösung ist relativ langsam was man an der Perfomance merkt. Trotzdem ist es hilfreich, da einige Programme nicht mit "primusrun" funktionieren.

Für mehr Performance kann man VSync abschalten:

vblank_mode=0 primusrun <app>

Steam

NOTE: nvidia-bumblebee-32bit muss installiert sein damit Steam funktioniert

Damit Steam gleich beim Start Bumblebee nutzt, muss es wie folgt gestartet werden:

primusrun steam

Als Alternative kann man Steam ohne primusrun starten und bei den Spielen die Nvidia Grafikkarte brauchen, die Startoption "primusrun %command% " in den Eigenschaften setzen.

Manuell zwischen den Karten wechseln

Den Status der Karte abrufen:

cat /proc/acpi/bbswitch

um die Karte abzuschalten:

tee /proc/acpi/bbswitch <<<OFF


Links