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.
17 comentarios, deja el tuyo
Excelente trabajo, gracias por compartir tu experiencia y ayudarnos a mejorar.
Gracias a ti por pasar por acá.
Excelente articulo amigo 😉 y bienvenido a bordo :D. La mejor de las suertes bro.
Gracias a ti bro. 😉
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!
Hola:
¿Esto afecta a los ordenadores de escritorio?.
Un saludo.
Optimus esta solo disponible en portatiles.
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.
y de cuanto dinero (en dolares) dispones Carlos?
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.
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 ?
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
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.
muchisimas gracias…. funcionno llevava mucho tiempo tratando de instalar los drivers primativos o los libres nada funcionaba pero esto.. funciono… sos grande…!!
Probando.. Gracias.. !!! .. una pregunta, la unica forma de abrir las aplicaciones usando la Nvidia seria entonces desde consola??.. Saludos
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 😛
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! 😀