Hybrid Graphics – Solución a dos placas de video en linux (vga_switcheroo)

Existe un grave problema para los usuario linux que posean notebooks con procesadores intel core i3, core i5 y core i7. Dichos equipos tienen dos placas de video para lograr un mejor rendimiento, una llamada “integrada” que está dentro del procesador para manejo de gráficos estándar como dibujo de la interfaz y cosas simples. La otra placa de video llamada “discreta” es alguna placa poderosa que puede ser usada en casos donde sea necesario utilizar gráficos de alto rendimiento como por ejemplo los requeridos por juegos.

En mi caso particular el procesador es un Intel Core i5-2430M Dual-Core 2.40GHz en el que dentro posee la placa de video “integrada” y la placa de video “discreta” es una AMD Radeon HD 6630 with 1GB DDR3 SDRAM Dedicated.

Dos problemas eran causados por el mal manejo actual, por parte del kernel, de esta característica “Hybrid Graphics”. El primero es que el sistema arranca con ambas placas de video encendidas y el ventilador de la placa “discreta” trabajando al 100%. Esto provoca que haya un consumo de energía extremadamente donde la duración de la batería se hace muy corta. El segundo problema se da a causa del recién mencionado, se genera mucho calor, que hasta calienta el teclado y parte de la estructura de la notebook.

Para solucionar este tema recorrí varios sitios, blogs y foros en español y en inglés donde pude recoger experiencias de unos cuantos usuarios que por sí solas no solucionaban el problema pero en conjunto sí lo hacen. Les dejo la solución a todo esto se logra con el flag vga_switcheroo:

Antes de comenzar, asegúrense de tener instalados los paquetes debug del kernel y con debugfs. En algunas distrosno viene por default. Para comprobar que todo está ok y poder avanzar con los pasos pueden probar ver el contenido del siguiente archivo /sys/kernel/debug/vgaswitcheroo/switch si no lo tienen en su sistema no podrán modificar la configuración.

Lista de instrucciones:

Habilitar permisos para realizar el switch:

  sudo su
  chown -R nombreDeUsuario:nombreDeUsuario /sys/kernel/debug
  chown nombreDeUsuario:nombreDeUsuario /sys/kernel/debug/vgaswitcheroo/switch
  exit

Encender la placa de video que está apagada (no está generando salida de video actualmente), no realiza el switch, solo la enciende.

  echo ON > /sys/kernel/debug/vgaswitcheroo/switch

Conectar la salida de video a la placa integrada.

  echo IGD > /sys/kernel/debug/vgaswitcheroo/switch

Conectar la salida de video a la placa discreta.

  echo DIS > /sys/kernel/debug/vgaswitcheroo/switch

Apagar la placa de video que está “desconectada” actualmente.

  echo OFF > /sys/kernel/debug/vgaswitcheroo/switch

Ver el estado actual de la confiuración de vga_switcheroo:

  cat /sys/kernel/debug/vgaswitcheroo/switch

Generará una salida como esta:

  0:IGD:+:Pwr:0000:00:02.0 --> placa integrada encendida (Pwr) y utilizándose (+).
  1:DIS: :Off:0000:01:00.0 --> placa discreta apagada (Off)

Y con ese set de instrucciones podremos realizar todos los cambios que necesitemos para lograr un mejor consumo de energía, menos cantidad de calor, y poder seleccionar que placa de video utilizar a gusto. Espero que sea de utilidad para alguien que se encuentre con este problema.


		
Anuncios

24 comentarios en “Hybrid Graphics – Solución a dos placas de video en linux (vga_switcheroo)

  1. hola tengo ubuntu 11.10 y no tengo instalado los paquetes de debug. como hago para instalarlos?
    buscando por alguna pagina lei que este mecanismo funciona si se usa opensource driver y no funciona si se usa uno propietario.
    luego de hacer la modificacion hay q recompilar el kernel?
    espero tu ayuda! gracias!

  2. El kernel en Ubuntu 10.10 soporta hybrid graphics que incluye el flag vga_switcheroo, ese es el necesario para realizar el cambio entre las placas de video integrada y discreta.

    vga_switcheroo es el mecanismo del kernel que permite el switch entre las GPUs. Este método no es soportado por todas las máquinasy solo funciona si estás usando el driver libre (nouveau, radeon) y no los propietarios (nvidia, fglrx).

    Para chequear si tu kernel está compilado con la opción correcta, puedes examinar el archivo config-2.6.nn-mm-generic en /boot
    grep -i switcheroo /boot/config-2.6.*

    El mecanismo vga_switcheroo solo estará activo cuando el kernel bootea con la opción “modeset=1”.
    Para comprobar si vga_switcheroo está habilitado, mira este archivo:

    ls -l /sys/kernel/debug/vgaswitcheroo/switch

  3. Esta tarde voy a hacer la prueba sobre mi laptop a ver si funciona, porque anoche probé y me pasaba eso, que las dos gráficas se encendían pero no conseguí apagarlas porque no entendía los tutoriales que encontraba.

    Gracias por la información en español, intentaré pasarme luego cuando lo intente y comento si funciona o no.

    • Básicamente para decirle a ubuntu cual tarjeta usar tenemos que seguir los siguientes pasos:
      Si lo que queremos es conectar la salida de video a la placa integrada(INTEL).
      echo IGD > /sys/kernel/debug/vgaswitcheroo/switch

      En cambio si lo que queremos es conectar la salida de video a la placa discreta (ATI/AMD).
      echo DIS > /sys/kernel/debug/vgaswitcheroo/switch

      Para apagar la placa de video que está “desconectada”.
      echo OFF > /sys/kernel/debug/vgaswitcheroo/switch

      Y finalmente podemos consultar el estado en que ha quedado la configuración de vga_switcheroo haciendo:
      cat /sys/kernel/debug/vgaswitcheroo/switch

  4. Hola, muchísimas gracias por esta entrada. Llevaba tiempo buscando e indagando acerca del problema… probando con diferentes configuraciones de bios y/o drivers y no había conseguido aún dar con la tecla. Me ha resultado muy útil.
    Un saludo!!

  5. Una cosa… me funciona el comando para apagar la discreta. Pero al intentar activar la discreta (estando encendida) con el comando ‘echo DIS > /sys/kernel/debug/vgaswitcheroo/switch’ me sigue saliendo el (+) en la integrada. He intentado reiniciar X con ctrl+alt+backspace pero sigue saliendo como que está activada la de la placa.
    Uso Fedora16 con kernel 3.3.1-3.fc16.x86_64 y el portátil tiene una intel GM45 y una ATI Radeon Mobility HD 4300 series. El switchable graphics está activado en la BIOS y puedo ver que tengo ambas tarjetas encendidas con el widget del ‘Hardware Info’ de KDE-4.8.
    Tengo instalados los controladores libres, ya que con los privativos de ATI no puedo arranca en modo ‘switchable graphics’, únicamente puedo arrancar en modo ‘discrete’.
    También he añadidio a la línea del kernel ‘modeset=1’ en el fichero /etc/default/grub
    Si pudieses echarme una mano te estaría muuuuy agradecido.
    Saludos.

    • Hola DaviD, creo entender tu duda, veamos…
      Cuando utilizas el comando:

      echo DIS > /sys/kernel/debug/vgaswitcheroo/switch

      no le estás indicando que quieres apagar la placa integrada, con este comando solo indicamos que queremos que la salida de video sea utilizando la placa discreta ATI.
      Para indicar que queremos “apagar” la placa integrada (que no aparezca +) debemos además utilizar este otro comando a continuación del que acabamos de comentar:

      echo OFF > /sys/kernel/debug/vgaswitcheroo/switch

      ahora sí la placa integrada debería apagarse de modo que haciendo:

      cat /sys/kernel/debug/vgaswitcheroo/switch

      obtendríamos una salida similar a esta:

      0:IGD:-:Off:0000:00:02.0
      1:DIS:+:Pwr:0000:01:00.0

      Espero que con esto se haya aclarado un poco la situación, si así no fuese no dudes en continuar con las consultas.

      Saludos.

  6. Hola:

    Éste es el único sitio donde me he enterado realmente como funciona este sistema. En mi caso las tarjetas gráficas son:

    01:05.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI RS880M [Mobility Radeon HD 4200 Series] [1002:9712] (prog-if 00 [VGA controller])
    02:00.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI Madison [Radeon HD 5000M Series] [1002:68c1] (rev ff) (prog-if ff)

    Y el PC la verdad es que se calienta bastante, cuando le instalo el driver privativo menos, pero se calienta excesivamente para mí. Entonces probé vgaswitcheroo y cuando desactivo la tarjeta dedicada para que consuma menos energía y haga menos calor, el PC se pone ardiendo… no lo entiendo la verdad.

    ¿Me podríais echar una mano?

    Muchas gracias

    • Hola Ginés, estás seguro que es una arquitectura Hybrid Graphics? Para serlo una de las placas de video debe estar integrada dentro del microprocesador y la otra placa de video está fuera y es de mayor potencia. Pregunto esto porque no conozco modelos de procesadores Intel que vengan con placas ATI integradas y dudo que existan.
      La solución aquí planteada solo aplica a la arquitectura Hybrid Graphics.

      Saludos!

      • Gracias por todas tus respuestas. Pues yo supuse que era una arquitectura Hybrid Graphics por haber dos tarjetas gráficas. Pero la verdad es que no entiendo muy bien como podría ser una ATI integrada, quizá porque ya forma parte de AMD (el procesador es un AMD Quad). Si no fuese esta tecnología, ¿qué podría ser? :S

        ¡Saludos y gracias de nuevo por tus respuestas!

      • Hybrid Graphics es el caso que te mencioné anteriormente, el hecho de tener dos placas de video nada tiene que ver con esto. En ese otro escenario te toca investigar para encontrar la solución, como me pasó a mí con este Hybrid Graphics.

        Saludos!

  7. Una cosa más que se me ha olvidado. Lo que le comentas a DavidD para apagar la integrada en mi caso no me funciona. :S Es decir sigue el símbolo “+” en la integrada y por supuesto no se apaga, si después de introducir el “echo DIS”, introduzco el “echo OFF”, se vuelve a apagar la dedicada. ;(

    • Hola Ginés, me alegra saber que ahora si has entendido como funciona este sistema.
      En la respuesta a DavidD lo que intento remarcar es que para apagar la placa dedicada (la mas potente y de mayor consumo) primero tenemos que indicar un cambio en la salida de video, y luego procedemos a apagar la placa que no está generando la salida de video en este momento. Si tengo dos placas de video A y B en caso de querer apagar la placa B tengo que dirigir la salida de video hacia la placa A y luego apagar la placa B.
      Espero haber podido aclarar algo más el tema.

  8. Y por último, y a riesgo de ser pesado, en el caso de los que tienen la tecnología Optimus de Nvidia, ¿es mejor utilizar Bumblebee que este sistema?

    ¡Gracias por todo!

    • En este tema no podré ayudarte, me encontré en este problema usando placas de video integradas en procesadores INTEL combinadas con placas de video dedicadas ATI, solo ese es el caso que he investigado.
      Sobre cual es mejor Optimus o Bumblebee habría que hacer algunas pruebas sobre ese hardware.

      Saludos!

  9. Hola que tal? una consulta tengo una notebook hp con un i7 3010qm hibryd bridge y una nvidia gforce gt 630m instale ubuntu 12.10 y ahora esta andando con la placa de video intel! quiero seguir el tutorial pero no tengo los paquetes que decis para empesar! ayuda porfavor! decime como puedo configurarlo… gracias mils gracias… e intentado de todo…

  10. Con http://bumblebee-project.org/ a mi me fue bien, uso la laptop para trabajar en ubuntu y no necesito la placa y con eso la bateria y la vida util en todo sentido mejora notablemente. El tema es que aparentemente es solo para nvidia. Es muy facil, yo me decidi por esa solucion porque al momento de usar el vga_switcheroo la version del kernel de linux aun no era compatible (o ese mensaje de error me tiraba).
    Una vez mas para los de nvidia, el bumblebee va como piña, y googleando un poco se instala muy facil.
    Exitos!

    • Hola me anduvo 3 dias..! me tiro error al iniciar! seguramente entra en conflicto el video integrado y la placa de video al iniciar el sistema no se… lo que se es que me tira toda la pantalla en negro y me tira un cartel feo asi sin colores en un tono gris diciendo cosas en ingles y apreto aceptar con cualquiera de las opciones y me manda al mismo cartel…. no se que puede ser! decime si tenes algun precentimiento y te copio lo que me dice el cartel. La maquina es la que te habia descripto en el comentario anterior es una hp dv7 con un i7 3010qm y una nvidia gforce gt 630M. La verdad me estoy desilusionando porque soy un gran amante de ubuntu pero no soy muy experto con el sistema pero me manejo bastante bien.. pero esto ya me supera.. no se que hacer.. ya hice mil y una cosas… si me podes ayudar te lo voy a agradecer…

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s