intel + Nvidia + bumblebee

Hi Leute,

ich habe hier eine Tumbleweed installation auf meinem Laptop mit dem ich bisher sehr zufrieden bin. Einziges Problem: ich kann die Nvidia-Karte nicht nutzen. Zum spielen muss ich daher (Steam installation mit mehreren Spielen die Linux+Windows können) immer wieder auf Windows wechseln.

Der Intel Treiber (i915) wird geladen und funktioniert tadellos. Zum Spielen zwar nicht optimal aber Plasma 5 läuft sauber ohne ruckler oder zuckler. Da dies ein Laptop ist würde ich es bevorzugen die nvidia Karte “händisch” hinzuzuschalten und den Plasma (sofern ich quasi hier Office betreibe) auf der energiesparenden Intelgrafik laufen zu lassen. Damit bleibe ich weiterhin mobil.

Bumblebee scheint hier das richtige Stichwort zu sein, läuft aber wohl nur mit dem originalen nvidia Treiber. Da ich eine Maxwell Grafikkarte habe scheint der nouveau Treiber sowieso nicht zu funktionieren (habs probiert - nouveau wirft auch Fehler- nv117 wird wohl nicht unterstützt).

**Problembeschreibung:
**So nun zum Problem. Ich hab nun den nvidia Treiber (manuell runtergeladen und installiert) und natürlich auch bumblebee (aus den Paketquellen) installiert.
Ergebnis: Schwarzer Bildschirm wo eigentlich der KDE Login angezeigt werden sollte. Ich habe nun verschieden Dinge probiert und die letzten Tage viel über das Problem gegoogelt. Ich bin schon ein ganzes Stück weiter als zu Anfangs.
Anfangs hagelte es Fehler in der xorg.0.log. Inzwischen habe ich alles auf eine handvoll eingegrenzt. Diese bekomme ich allerdings mit meinem beschränkten knowhow nicht alleine gehandelt, weshalb ich mich hier melde.

**Wichtige Punkte:
**- soweit möglich nouveau deinstallieren

  • /etc/default/grub -> GRUB_CMDLINE_LINUX_DEFAULT
    anstelle von
nomodeset
nvidia.nomodeset

Nomodeset scheint also nicht für hybrid Karten die Lösung zu sein sondern nur wenn mann die Nvidia Karte haben möchte.

  • Bei der Nvidia Treiberinstallation nicht die xorg-conf automatisch erzeugen lassen. Das System scheint beim Booten automatisch zu erkennen was gebraucht wird.

relevante Hardware:
Core i7 6700HQ
Nvidia Geforce GTX 950M
Laptopbildschirm + über hdmi ein weiterer Monitor (beide 1920x1080). Wenn der Externe Bildschirm angeschlossen ist wird der Laptopbildschirm abgeschaltet.

**Software:
**OS: Tumbleweed
Nvidia-Treiber: 367.57

**Aktuelles Problem:
**So nun folgendes. Wenn ich den Nvidia Treiber installiere und neu starte bekomme ich grundsätzlich egal was ich auch tue einen Schwarzen Bildschirm anstelle des KDE-Loginscreens.
In der Xorg gibt es jetzt eine Fehlermeldung das die GLX Extension von Nvidia ist aber kein passendes Modul geladen wurde. Außerdem bekomme ich nun über den journalctl einen Fehler vom Plasma angezeigt, das die GLX extension nicht verfügbar ist.

Deinstalliere ich (nvidia-uninstall) den Treiber kann ich mich direkt mit einem Neustart des XServer wieder ins System einloggen.

Mir ist dabei aufgefallen das der Pfad der geladenen GLX Extension “usr/lib64/xorg/modules/extensions” recht allgemein ist. Also habe ich nach der Installation des Nvidia Treibers mal hineingesehen. Hier zeigt nun die libglx.so als Softlink auf eine nvidia libglx.so im gleichen Ordner. Deinstalliere ich den Treiber zeigt die libglx.so in auf xorg/xorg-libglx.so. Also habe ich den Treiber wieder installiert und habe den Softlink wieder ausgetauscht auf die xorg-libglx.so.
Nun rauschen andere Fehler in die Xorg.log hinein.

AIGLX error dlopen  of /usr/lib/xorg/modules/dri/i965_dri.so undefined symbol ..]

Allerdings bleibt das Problem (logischerweise) bestehen, da er weiterhin nicht die GLX extension zum laufen bringt. → Schwarzer Bildschirm.
Wenn ich nun absichtlich in der Xorg einen fehler reinschreibe (damit Xorg mit einem Fehler beendet wird) und ich (nach beheben des absichtlichen Fehlers) den xserver manuell Starte bekomme ich eine Meldung angezeigt, das opengl mindestens in der Version 2 benötigt wird.

lspci:

00:02.0 **VGA** compatible controller: Intel Corporation HD Graphics 530 (rev 06)
01:00.0 **3D** controller: NVIDIA Corporation GM107M [GeForce GTX 950M] (rev a2)

xrandr --listproviders (natürlich mit laufender grafischer Oberfläche, ansonsten wird dieser befehl mit einem Fehler quittiert)

Providers: number : 1
Provider 0: id: 0x46 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 4 outputs: 3 associated 
providers: 0 name:Intel

Ich bitte vielmals um Entschuldigung aber aufgrund der Tatsache das ich entweder eine grafische Oberfläche habe (um hier ins Forum zu schreiben) oder eben auf dem Terminal stehe, kann ich die Fehlermeldungen nur sinnhaftig wiedergeben, bzw von meinen Handy abschreiben (damit google ich wärend ich auf dem Terminal herumhacke). Das macht es für euch natürlich alles andere als angenehm aber ich hoffe darauf das das Problem das ich habe eigentlich 40cm vor dem Bildschirm sitzt. Benötigt ihr die genauen Fehlermeldungen kann ich diese natürlich nachreichen.

Du kannst auf einem Optimus System nicht einfach den normalen nvidia Treiber installieren.
Der ersetzt bestimmte Systembibliotheken (Xorg’s libglx und Mesa’s libGl1 z.B.) mit eigenen Versionen, wodurch der Intel Treiber/Mesa’s OpenGL nicht mehr funktioniert.
Und bei Optimus läuft das System (und insbesondere der Anmeldebildschirm und der Desktop) normalerweise auf dem Intel Chip.

Also, deinstalliere den Treiber wieder (sollte mit “nvidia-installer --uninstall” gehen), und folge dieser Anleitung:
https://en.opensuse.org/SDB:NVIDIA_Bumblebee
(die deutsche Seite ist scheinbar leider veraltet)

Oder, wenn es möglich ist die Intel-Grafik im BIOS abzuschalten, sollte eigentlich auch der normale nvidia Treiber funktionieren.

Eine Alternative zu Bumblebee um den nvidia Chip zu nutzen wäre auch PRIME:
https://forums.opensuse.org/showthread.php/512260-Leap-42-1-Optimus-system-with-nvidia-prime-instead-of-bumblebee

Das ist mir auch schon aufgefallen.

So das habe ich getan und habe auch alle meine blacklists und modesettings wieder rausgenommen.

Und…was soll ich sagen…das Problem scheint wirklich vor dem Bildschirm zu sein.

glxspheres

OpenGL Renderer: Mesa DRI Intel(R) HD Graphics 530 (Skylake GT2)

optirun glxspheres

OpenGL Renderer: GeForce GTX 950M/PCIe/SSE2

Nein diese Möglichkeit bietet mein Laptop nicht.

Interessanterweise wird bei der Installation von Bumblebee auch automatisch das Paket Primus mit installiert. sage ich nun

primusrun glxspheres

bekomme ich allerdings nur den Intel Skylake als Ausgabe.
Was mich etwas stutzig macht, ist die Tatsache das glxspheres über die Intel Grafiklösung genausoviel Frames schafft wie über Nvidia (selbstverstänlich beide mit vblank_mode=0)

optirun nvidia-settings             
nvidia-settings: error while loading shared libraries: libnvidia-ml.so.1: cannot open shared object fil
e: No such file or directory

Ich werde mal den zweiten Link von dir durchlesen vermutlich liegt hier die Lösung.

Aufjedenfall schon mal vielen Dank. Ich habe nun den intel Chip als Standard und kann die NVIDIA - Grafikkarte händisch hinzuschalten. Genau das was ich wollte. Jetzt muss ich nur herausfinden warum die Performance identisch ist.

Ok

Prime lässt sich nutzen wenn ich dies in optirun einstelle:

/etc/bumblebee/bumblebee.conf

Bridge=primus

Das gibt auch gleich noch einen Performance schub von vorher ca 250fps auf 350fps. Allerdings mit glxspheres die sich zum Benchmarken nicht wirklich eignen.

So nun habe ich mir Stellaris gestartet. Um das Spiel geht es mir Primär.
Alles Hoch, alles an, auf Full HD. Startoptionen spiel:

vblank_mode=0 optirun %command%

Im folgenden immer den gleichen Spielstand geladen. Konsole öffnen und 3dstats eintippen.

FPS:
intel (ohne optirun) ca 40
Nvidia (mit optirun) ca 100

Viel wichtigert ist aber das die Grafikfehler des Spiels (kaputte Border, keine Border Farben) verschwunden sind.
So ich würde behaupten das Ganze war ein voller Erfolg. Ich danke nochmals wolfi323.