Debian su notebook con Bumblebee
Di recente ho acquistato un notebook Dell con cpu intel di ottava generazione e scheda video Nvidia MX150.
Questi notebook hanno due schede video, quella discreta (Nvidia MX150 nel mio caso) e quella integrata nella cpu, questo per ottimizzare le performance; la scheda discreta verrà usata per le elaorazioni e quella intel per l’output. Tale tecnologia si chiama Nvidia Optimus
In Windows funziona tutto molto bene ma su Linux bisogna pastrocchiare un po’. Per Linux esiste il progetto Nvidia Prime che cerca di permettere l’utilizzo delle 2 schede in modalità ibrida. A questo si affianca il progetto Bumblebee che permette lo switch tra le due schede dinamicamente e/o all’occorrenza.
Eccome come ho configurato il tutto su un’installazione pulita di Debian Buster:
sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install bumblebee-nvidia primus primus-libs:i386 libgl1-nvidia-glx:i386 mesa-utils
Ho provato poi a lanciare l’utility che da modo di verificare l’accellerazione grafica:
glxgears -info
Se tutto è andato bene dovrebbe apparire una finestrella con degli ingranaggi che girano. Questa finestrella però è gestita dalla scheda intel e non quella discreta. Per provare quindi la scheda nvidia diciamo esplicitamente a Prime che vogliamo usarla:
optirun --debug glxgears -info
Purtroppo mi sono ritrovato con il seguente errore:
primus: fatal: failed to load any of the libraries: /usr/lib/x86_64-linux-gnu/nvidia/libGL.so.1:/usr/lib/i386-linux-gnu/nvidia/libGL.so.1:/usr/lib/nvidia/libGL.so.1
/usr/lib/x86_64-linux-gnu/nvidia/libGL.so.1: cannot open shared object file: No such file or directory
/usr/lib/i386-linux-gnu/nvidia/libGL.so.1: wrong ELF class: ELFCLASS32
/usr/lib/nvidia/libGL.so.1: cannot open shared object file: No such file or directory
Per fortuna ho risolto grazie a questo post dal quale ho capito di dover verificare l’installazione dei seguenti pacchetti: libgl1-nvidia-glx:i386 (installato sopra) e libgl1-nvidia-glx:amd64 (mancante). Una volta installato ques’ultimo pacchetto, il comando optirun –debug glxgears -info ha iniziato a funzionare.
Ho imparato alcune cose per verificare se Bumblebee “switcha” correttamente. Da una shell pulita iniziate lanciando questi comandi (di seguito vedrete anche l’output). Mettete in watch i seguenti file/comandi
$ watch cat /proc/acpi/bbswitch
0000:01:00.0 OFF
$ watch optirun --status
Bumblebee status: Ready (3.2.1). X inactive. Discrete video card is off.
L’output dovrebbe essere come quello che vi sto mostrando poco sopra e ci fa capire che la scheda discreta non sta lavorando.
Ora aprite una seconda shell e lanciate:
glxgears -info
vedrete che l’output dei due watcher non cambia. Ma se invece lanciate optirun glxgears -info allora dovreste vedere l’output cambiare come segue:
$ cat /proc/acpi/bbswitch
0000:01:00.0 ON
$ optirun --status
Bumblebee status: Ready (3.2.1). X is PID 13486, 2 applications using bumblebeed.
Da qui si capisce che la scheda discreta ora sta lavorando.
Per chi usa kde c’è anche un widget che mostra attraverso un’icona lo stato di Bumblebee: bumblebee-indicator. L’icona sarà grigia quando Bumblebee è disattivato e si colorerà quando invece è attivo. Una volta aggiunto questo widget, ho dovuto installare anche il pacchetto nvidia-smi.
Per lanciare il pannello di controllo Nvidia, usare il seguente comando:
optirun -b none nvidia-settings -c :8
Su github mi è stata consigliata un’ottimizzazione per Bumblebee. Nel file /etc/bumblebee/bumblebee.conf fare la seguente modifica:
PMMethod=bbswitch
Di default è impostato con il valore “auto”
Mentre scrivo questo articolo, un video aggiornato che da molte informazioni è il seguente: Installing Nvidia Optimus in Linux