Nvidia Optimus en tu portatil con Linux instalando Bumblebee

Qué es Nvidia Optimus?

Esta tecnología no es nueva, bien se podría decir que es  una mejora de la “antigua” Hybrid SLI e Hybrid Graphics, que permitía gestionar la energía cuando combinabas  una GPU Nvidia con una placa con Chipset Nvidia en un desktop, ahora Optimus nos permite hacer lo mismo en nuestro portátiles con procesadores Intel Sandy Brigde (i3, i5, e i7 ) y Gpu Nvidia. En palabras simples, esta tecnología permite alternar entre la gráfica discreta y la dedicada según la demanda, o sea, si hacemos correr un Videojuego el sistema automáticamente activa la gráfica dedicada en cambio si estamos viendo una película  usara  la gráfica discreta. Y en palabras un poco mas difíciles:

“A diferencia de generaciones anteriores de ordenadores portátiles, las tarjetas gráficas modernas están unidas por un canal de hardware al IGP de los procesadores Intel por lo que no hay forma posible de desactivar la gráfica del procesador para solamente utilizar la tarjeta gráfica dedicada. El procesador actúa como una canal de paso, cuando la tarjeta gráfica dedicada esta en modo reposo se utiliza el chipset gráfico para renderizar los gráficos pasando la información al monitor interno por el conector LVDS del portátil. Sin embargo si se utiliza la tarjeta gráfica dedicada la información también deberá pasar por el chipset gráfico para poder llegar al monitor por esa razón no es posible físicamente desactivar el IGP del procesador y por tanto todo este proceso de activado y desactivado se deberá llevar a cabo mediante software, en este caso por  el controlador.” (Leanuxeros.com )

En Windows esto funciona bien (diría de maravillas, pero sabemos que nada funciona de maravilla con las ventanas) y en Linux, para variar, no hay soporte oficial por parte de Nvidia y según las noticias que he podido leer no tienen intenciones de hacerlo en el corto o mediano plazo, a eso se le suma que en la mayoría de los equipos no existen la opción de activar/desactivar una de las gráficas mediante la Bios, lo que nos deja un escenario muy desalentador pues en el caso de que solo este activa la Integrada la inversión en la GPU dedicada se va al tacho de la basura, en cambio si tienes la Gráfica Nvidia activa (esto es lo habitual) el rendimiento energético nos hará recordar Matrix y mirar con buenos ojos la idea de convertir a un familiar o vecino en una pila, pues, como todos sabemos, desde el Kernel 2.6.38  las baterías de los portátiles están siendo diezmadas y autonomía se ha convertido en una palabra útil para hacer canciones reivindicativas (en mi caso la batería  lo máximo que duraba era dos horas).

Es por eso que en el lado Linux de la fuerza han surgido  proyectos para soportar esta tecnología pero sin mucho éxito, eso hasta Bumblebee. Bumblebee es una herramienta Open Source escrita en lenguaje C , nos permite usar el controlador privativo de Nvidia o la versión libre Nouveau, hace pocos días se lanzo la versión 3.0 que entre otras novedades nos permite activar automáticamente el gestor de energía activando o desactivando la GPU dedicada según las necesidades del caso (que es lo que nos importa).

Podemos instalar Bumblebee desde el archivo fuente que se encuentra en https://github.com/Bumblebee-Project/Bumblebee/downloads

Hay paquetes en los repositorios de Ubuntu, Gentoo, Arch y Debian.
Yo instalé esta aplicación en las dos distros que ocupo: Debian y Arch siguiendo las indicaciones de sus respectivas Wikis.

Instalación en Arch

Instalamos Bumblebee desde los AUR

$ yaourt -S bumblebee

E instalamos bbswitch para poder ocupar el administrador de energía

$ yaourt -S bbswitch

Con driver Nouveau

Si vas a ocupar los driver Nouveau debes instalar los siguientes paquetes:

$ sudo pacman -S xf86-video-nouveau nouveau-dri mesa

Con los privativos de Nvidia

Si ocupas los driver privativos de Nvidia, instalamos desde los AUR estos paquetes.

$ yaourt -S nvidia-utils-bumblebee dkms-nvidia

Configuración

Agregamos nuestro usuario al grupo Bumblebee:

# usermod -a -G bumblebee $USER (reemplazamos $USER por nuestro usuario)

Probamos que todo este bien instalado y funcionando haciendo correr bumblebee a mano:

$ sudo rc.d start bumblebeed

Y magia… la GPU Nvidia se desactiva y quedamos solo con la integrada, de paso le damos un descanso a nuestra batería.

A continuación editamos  /etc/rc.conf

Agregamos Bumblebee en los Daemons

DAEMONS=(... bumblebeed)

Probamos

$ optirun glxspheres

Podemos notar que se activa la integrada y al terminar el proceso esta se apaga dando paso a la dedicada, si quieres correr una aplicación con la GPU Nvidia lo hacemos desde la consola

$ optirun [opciones] <aplicaciones>

Para ver la lista de opciones:

$ optirun --help

Para que la tarjeta dedicada haga el encendido/apagado automáticamente agregamos Bbswitch en la sección Modules:

MODULES=(... bbswitch …)

Editamos  /etc/bumblebee/bumblebee.conf y agregamos la siguiente linea  en la sección de los driver:

[bumblebeed] KeepUnusedXServer=false

Verificamos que PMMethod este en auto:

[driver-nvidia] PMMethod=auto

[driver-nouveau] PMMethod=auto

Reiniciamos el bumblebee:

# rc.d restart bumblebeed

Instalación en Debian (Solo para Testing o Sid)

Primero debes remover cualquier instalación previa de Bumblebee, luego habilitamos los repositorios non-free.
Para correr aplicaciones de 32 bit en sistemas de 64 bit se recomienda instalar los siguientes paquetes:

$ sudo aptitude install virtualgl-libs-ia32 and libgl1-nvidia-glx-ia32

Agregamos estos repositorios en  /etc/apt/sources.list

deb http://suwako.nomanga.net/debian sid main contrib
deb-src http://suwako.nomanga.net/debian sid main

Luego nos bajamos la llave y la agregamos:

# wget -O - http://suwako.nomanga.net/suwako.asc | apt-key add -

Actualizamos:

# aptitude update

Instalamos:

# aptitude install bumblebee bumblebee-nvidia

Agregamos nuestro usuario al grupo Bumblebee:

# adduser $USER bumblebee (reemplazamos $USER por nuestro usuario)

Reiniciamos y probamos que este funcionando con:

$ optirun glxgears

Si queremos correr una aplicación con la GPU dedicada lo hacemos de la siguiente manera en una terminal

$ optirun <aplicación>

Para terminar les puedo comentar que mi experiencia con esta aplicación ha sido bastante buena, algunos amigos de DesdeLinux fueron testigo de como me daba de cabeza tratando infructuosamente de instalar los driver privativos de Nvidia en las distros que ocupo (Debian y Arch), hasta que me topé con Bumblebee, por otro lado, la batería de durar dos horas paso a un promedio de tres horas y media y la temperatura del portátil bajo de 54° a un promedio de 45°.

Me parece que mientras Nvidia no se decida a soportar oficialmente Optimus en Linux, o si no te interesa tener los drivers privativos pero sí hacer funcionar tu GPU Nvidia, Bumblebee es una excelente alternativa.



Vivo en Valparaíso, Chile, usuario de Gnu/Linux desde el 2010 actualmente estoy usando Arch y Debian. Hincha de la Universidad de Chile F.C., todo lo que se de Linux lo he aprendido en los foros y sitios de las comunidades por eso la mejor forma de agradecer es compartir lo aprendido... ah, y no me caen bien los fanboyismo.

17 comentarios

  1.   Diego Urbina dijo

    Excelente trabajo, gracias por compartir tu experiencia y ayudarnos a mejorar.

    1.    moscosov dijo

      Gracias a ti por pasar por acá.

  2.   Perseo dijo

    Excelente articulo amigo 😉 y bienvenido a bordo :D. La mejor de las suertes bro.

  3.   moscosov dijo

    Gracias a ti bro. 😉

  4.   jEsuSdA 8) dijo

    Gran artículo.

    Yo, la verdad, hace poco me compré un portátil nuevo. Quería que la gráfica fuera NVIDIA, porque en todos los equipos que he tenido me ha ido siempre muy bien y con los drivers privativos, en Linux corre genial.

    Me sorprendió comprobar la nueva tecnología de uso de 2 procesadores gráficos, pero más me sorprendió ver que en Linux el soporte era deficiente o nulo.

    Así que me lancé a la piscina y opté por una gráfica Intel y hasta el momento estoy muy contento.

    Es cierto que algunos juegos no se ven del todo bien (pequeños problemas muy concretos o fallos graves en juegos privativos antiguos). Pero en general me parece que es una opción muy válida y buena.

    Los procesadores gráficos Intel vienen soportados por el kernel, eso implica que uno puede instalar su distro de Linux y tener aceleración 3D sin hacer nada. Efectos de escritorio, juegos, etc. sin necesidad de configurar o compilar.

    Además, cuando se actualiza el kernel, con los drivers privativos hay que volver a recompilar, con los libres, todo funciona bien porque también se actualizan los controladores solos.

    Y por último, los drivers se van mejorando versión a versión, así que imagino y espero que en el futuro los pequeños bugs que existen hoy se solucionen.

    No quisiera hacer publicidad de ninguna marca sobre otra, pero el hecho de que la gente de Intel esté colaborando en permitir que los controladores de sus productos sean libres y Linux tenga un soporte aceptable para su hardware es algo que es conveniente que pensemos cuando vayamos a comprar un nuevo equipo.

    A mi, pese a los inconvenientes, el hecho de poder tener soporte 3D “de fábrica” con Linux me compensa.

    Un saludo!

  5.   Plandevida dijo

    Hola:

    ¿Esto afecta a los ordenadores de escritorio?.

    Un saludo.

    1.    moscosov dijo

      Optimus esta solo disponible en portatiles.

  6.   Carlos-Xfce dijo

    Hola, Moscosov. Muchas gracias por este artículo. Tocas un tema muy importante, el de los procesadores. Me gustaría hacerte una consulta. Mira, tengo ganas de comprar un computador de escritorio para la edición de videos y creación de animaciones multimedia con fines educativos, corriendo en GNU/Linux, por supuesto. Quisiera que fuera un procesador de los nuevos i7, que sea una inversión que me dure como mínimo 5 años. Pero yo no sé nada de tarjetas madre, ni de memorias, ni menos de procesadores. ¿Podrías hacer un artículo recomendando algo así? No quisiera comprar el mejor procesador para que resulte que los controladores gráficos no pueden demostrar todo su poder debido a que no están corriendo en Windows. Gracias por tu atención.

    1.    moscosov dijo

      y de cuanto dinero (en dolares) dispones Carlos?

  7.   pandev92 dijo

    Las intel son bastante buenas por lo que dicen pero claro, si vas a tener dual boot para jugar en hasefroch, el rendimiento es pésimo.

  8.   maximiliano dijo

    buenas, le cuento tengo linux mint 12 y una asus k53sc , en mi caso cuando quiero agregar

    $ sudo aptitude install virtualgl-libs-ia32 and libgl1-nvidia-glx-ia32

    me dice que:
    Couldn’t find any package whose name or description matched “virtualgl-libs-ia32”

    el otro lo instala de una.

    aun asi, no entiendo bien como funciona bumbleebe, pregunto hay que activar la placa nvidia antes de instalar el bumblebe ?

  9.   Juan dijo

    Excelente la explicación sobre Bumblebee. Estoy tratando de implemntarlo sobre Centos 5.7. Tienes alguna idea de cómo hacerlo de una forma fácil. Creo que aún no está en elrepo.org.
    Gracias

  10.   taranis dijo

    Hola,
    excelente aporte. Llevo bastante tiempo detrás de algo así aunque esperaba poder cargarlo desde el principio para que el escritorio aprovechase la Nvidia.
    Como puedo saber si una aplicación trabaja aprovechando la Nvidia. Me refiero así por ejemplo, ejecutando algún juego mediante el wine y el wine cargarlo mediante el optirun.
    No sé si me explico bien.

    Muchas gracias por el documento.
    Saludos.

  11.   faster dijo

    muchisimas gracias…. funcionno llevava mucho tiempo tratando de instalar los drivers primativos o los libres nada funcionaba pero esto.. funciono… sos grande…!!

  12.   armandoplc dijo

    Probando.. Gracias.. !!! .. una pregunta, la unica forma de abrir las aplicaciones usando la Nvidia seria entonces desde consola??.. Saludos

    1.    Jorgicio dijo

      Claro, o creando un script para que invoque a optirun cada vez que quieras usar la tarjeta Nvidia. Igual da un excelente rendimiento en gráficos, y la uso más para jugar Minecraft y uno que otro juego que lo requiera 😛

  13.   Dcoy dijo

    Disculpen la ignorancia pero funcionaría con mi nvidia?, haciendo un lspci me sale esto:

    04:00.0 3D controller: NVIDIA Corporation GK107M [GeForce GT 750M] (rev a1)

    Gracias! 😀

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.