SDB:NVIDIA Optimus

Saltar a: navegación, buscar
Esta página explica el procedimiento para instalar el controlador privativo de NVIDIA junto con Bumblebee/bbswitch, que permite el uso de la tecnología Optimus de NVIDIA, en versiones recientes de openSUSE.

Situación

Se dispone de un portátil con tecnología Optimus que usa una tarjeta NVIDIA independiente y otra integrada de bajo consumo (normalmente son Intel). Se quiere ejecutar programas usando la tarjeta independiente pero no se quiere tenerla activada todo el tiempo para reducir el consumo de energía. También se puede querer desactivar por completo la tarjeta independiente en portátiles que no ofrecen dicha opción en su BIOS.

Procedimiento

Preparación

Aunque el proceso es, en general, fiable, pueden aparecer problemas tras el proceso de instalación y configuración. Ya que desde OpenSUSE 13.2 usa el sistema de archivos Btrfs por defecto para la partición raíz, es conveniente crear una instantánea para tenerla como punto de recuperación en caso necesario. Para ello se ejecuta en una consola el siguiente comando:

snapper create -d AntesDeBumblebee

AntesDeBumblebee es el nombre de la instantánea que se va a crear. Solo es un ejemplo, se puede usar cualquier otro siempre que no contenga espacios. Es conveniente que sea descriptivo ya que, en caso de que aparezcan problemas y haya que deshacer los cambios, sirve para identificar el punto al que se quiere devolver el sistema cuando se ejecuta snapper list. De más esta decir que es importante tener actualizado el sistema:

sudo zypper up
sudo zypper in kernel-source

Bumblebee con el controlador libre o propietario

En las ultimas versiones de Bumblebee es necesario utilizar el controlador privativo que se obtiene a través del paquete nvidia-bumblebee.

Instalación y configuración del Bumblebee

Primero hay que añadir el repositorio o bien usando YaST o la consola:

sudo zypper ar -f http://download.opensuse.org/repositories/X11:/Bumblebee/openSUSE_Leap_15.0/ Bumblebee

A continuación se instala Bumblebee:

sudo zypper in bumblebee

Ahora hay que añadir a nuestro usuario a los grupos Bumblebee y video:

sudo gpasswd -a $USER video
sudo gpasswd -a $USER bumblebee

Debemos modificar el archivo de configuración de bumblebee:

sudo nano /etc/bumblebee/bumblebee.conf

En la sección:

[bumblebeed]
TurnCardOffAtExit=true
Driver=nvidia

También puede llegar a ser necesario modificar el archivo de configuración de para el driver de nvidia. Debemos especificar el BusID de la tarjeta grafica de nVidia para obtenerlo se ejecuta:

sudo lspci | egrep 'VGA|3D'

Luego se edita el archivo de configuración de xorg para nvidia:

sudo nano /etc/bumblebee/xorg.conf.nvidia

Quitando el simbolo # de la linea que comienza por BusID dentro de la Section "Device" y nos debería quedar algo así.

BusID "PCI:01:00:0"

Al final del archivo también es recomendable agregar la siguiente sección:

Section "Screen"
    Identifier     "nvidia"
    Device         "DiscreteNvidia"
EndSection

Después de esto hay que habilitar e iniciar bumblebeed y dkms:

sudo systemctl enable bumblebeed
sudo systemctl start bumblebeed

Instalación de los drivers nVidia e Intel

Como se aclaro anteriormente a día de hoy solo se puede utilizar bumblebee con el driver privativo de nvidia. Ademas es necesario tener instalado los drivers para la grafica integrada de intel.

sudo zypper in nvidia-bumblebee xf86-video-intel

A continuación se debe bloquear la carga al inicio del sistema de los drivers de nVidia tanto el libre como el privativo:

sudo echo "blacklist nvidia" | sudo tee -a /etc/modprobe.d/50-blacklist.conf
sudo echo "blacklist nouveau" | sudo tee -a /etc/modprobe.d/50-blacklist.conf

De esta forma solo bbswitch cargara y descargara el controlador. Para finalizar hay que actualizar la configuración de inicio y reiniciar:

sudo mkinitrd
sudo reboot

Paso adicional tras la instalación del controlador

Si desea utilizar programas de 32bit como steam también debería instalar:

sudo zypper in nvidia-bumblebee-32bit
sudo mkinitrd

Errores con los paquetes

Si con los paquetes de los repositorio de Leap 15.0 no funcionan los desarrolladores recomiendan probar los de la versión anterior:

sudo zypper ar -f http://download.opensuse.org/repositories/X11:/Bumblebee/openSUSE_Leap_42.3/ Bumblebee

Error con dkms

Actualmente hay problemas con DKMS y se debe eliminar el modulo de dkms y volver a instalarlo.

sudo dkms remove -m nvidia -v 390.67 --all
sudo zypper in -f nvidia-bumblebee
sudo systemctl restart bumblebeed

Para saber si funciona ejecutamos nuestra tarjeta debería estar en OFF:

optirun --status

Y lo mejor es reiniciar.

Problemas con ACPI

Si después de todo esto el rendimiento de la batería sigue baja, es muy probable que el portátil siga alimentando la GPU dedicada. Dado que cada fabricante tiende a modificar la tabla ACPI genera este problema.

Deshacer la instalación en caso de problemas

Si no puede hacer funcionar el entorno gráfico de ninguna manera, debe realizar una restauración del sistema usando snapper. Si su sistema no usa Btrfs no puede usar este método. Primero encuentre el número de la instantánea que debió crear antes de realizar el proceso.

sudo snapper list

Realice la restauración, sustituyendo xx por el número de la instantánea:

sudo snapper rollback xx
sudo reboot

Verificar la instalación y uso

Después de completar la instalación y reiniciar, compruebe que Bumblebee está funcionando abriendo una terminal y ejecutando el comando:

optirun --status

Si ve el mensaje "Bumblebee status: Ready (3.2.1). X inactive. Discrete video card is off.", entonces debería estar funcionando correctamente. Para iniciar un programa usando la tarjeta independiente debe ejecutar el comando:

optirun nombre_del_programa

Puede hacer una prueba con:

optirun glxspheres

Si ve unas esferas, entonces su tarjeta independiente está funcionando con Bumblebee.

Referencias externas