Vgaswitcheroo en distribuciones basadas en Debian

Como algunos de vosotros habéis podido leer en el foro, me había propuesto instalar mis gráficos híbridos (ATI/Intel) en alguna de las muchas distribuciones que existen, ya que los que conozcáis este mal, sabréis que el sistema deja encendidas ambas gráficas aunque sólo use una de las dos, reduciendo así la duración de la batería de forma notable, y dotando a tu PC de un nuevo super poder, el de freír huevos encima de él.

Muy a mi pesar, tuve que renunciar a ese fin, ya que, en ninguna de las distribuciones que probé (Debian, OpenSuse, Xubuntu y Linux Mint) obtuve unos buenos resultados. Esto llevo a otro planteamiento del problema:

¿Cómo conseguir que una de las dos gráficas, en mi caso la ATI, permanezca apagada?

La solución, como a continuación veréis, viene implementada en el propio núcleo de nuestra distribución favorita y se llama vgaswitcheroo. Y a continuación tenéis el proceso, en el que asumimos que el paquete firmware-linux-nonfree está instalado, para uso y disfrute:

En primer lugar debemos averiguar si nuestro núcleo dispone de la opción de usar vgaswitcheroo:

$ grep -i switcheroo /boot/config-*

Lo que nos devolverá una línea en nuestra terminal como esta:

CONFIG_VGA_SWITCHEROO=y

Si la salida es diferente, hay que recompilar el núcleo para añadir la opción de vgaswitcheroo. En segundo lugar, vemos si el archivo «/sys/kernel/debug/vgaswitcheroo/switch» existe. En este punto hay que hacer una distinción:

En distribuciones basadas en Ubuntu este archivo es accesible o debería serlo por defecto. Mientras que en distribuciones como Debian, la carpeta debug no dispone de otra llamada vgaswitcheroo y habrá que hacer un par de pasos más.

Para tener siempre accesible la carpeta y poder acceder al archivo switch, debemos montar la carpeta debug como sigue (siempre desde superusuario):

  1. # mountpoint -q /sys/kernel/debug
  2. # mount -t debugfs none /sys/kernel/debug
  3. # echo "none /sys/kernel/debug debugfs defaults 0 0" >> /etc/fstab

El paso 3 podemos hacerlo manualmente. Se trata de añadir la linea none /sys/kernel/debug debugfs defaults 0 0 al archivo /etc/fstab para que la carpeta de vgaswitcheroo esté siempre accesible incluso después de un reinicio.

Una vez hecho esto podemos comprobar nuestro fichero switch dentro de la carpeta de vgaswitcheroo, mediante:

# cat /sys/kernel/debug/vgaswitcheroo/switch

y ello nos devuelve una salida como la de la imagen:

vgaswitcheroo


Vuestra salida puede ser diferente (que todas estén en modo Pwr, por ejemplo). En este archivo tenemos varias cosas a comentar. El término DIS corresponde a la gráfica dedicada (en mi caso, la ATI). El término IGD corresponde a la gráfica integrada en la CPU (la Intel). La cruz, +, marca la gráfica que se esta usando en el momento. Y por último, el termino Pwr o Off, hacen referencia al estado de las gráficas.

Con esto ya podemos desactivar o activar la gráfica que queramos mediante algunos comandos :

  • Apagar la gráfica dedicada:
# echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
  • Encender la gráfica dedicada:
# echo ON > /sys/kernel/debug/vgaswitcheroo/switch
  • Cambiar entre la integrada y la dedicada:
# echo DIGD > /sys/kernel/debug/vgaswitcheroo/switch 
# echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch

Por último, para otorgar permisos a nuestra usuario habitual y así poder ejecutar scripts al inicio, por ejemplo, habrá que ejecutar:

# chmod -R 705 /sys/kernel/debug
# chown -R usuario:usuario /sys/kernel/debug/vgaswitcheroo
Modificar los permisos de alguna carpeta del sistema puede conllevar cierto riesgo. Recomiendo hacerlo bajo vuestra propia responsabilidad. En el caso de esta guía, el proceso está hecho sobre Debian Testing, por lo que algún paso puede ser diferente aquí que en otras distribuciones.

Espero que os sirva para exprimir un poco mejor el rendimiento de vuestros portátiles o como mínimo reducir el calor que desprenden.

Un saludo!

Fuentes: Lista de Correo de Debian | LinuxQuestion


23 comentarios, deja el tuyo

Deja tu 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.

  1.   Iván Barra dijo

    Excelente dato, al menos, para las Nvidia (mi caso), existe el proyecto Bumblebee, que anda de maravilla en OpenSUSE 12.3, Fedora 1x y otras distros basadas en RPM, en Ubuntu anda de maravilla, pero en otras basadas en .deb, a veces se cuelga y hay que entrar a reiniciar.

    Saludos y Gracias por compartir.

    1.    carlos saldaña dijo

      disculpa, sabes si funciona para debian 7 64bits??

      1.    Iván Barra dijo

        Si, si funciona, lo he probado con debian y funciona bien.

        http://wiki.debian.org/Bumblebee

        Aunque te recomiendo usar los drivers privativos si o si. Los opensource dan fallos.

        Saludos.

        1.    carlos saldaña dijo

          gracias por el dato

  2.   oxigenante dijo

    Te quiero tesla, en ubuntu conseguí usar vgaswitcheroo pero en debian me dice que no lo tengo instalado, lo probaré esta tarde

    1.    Tesla dijo

      Espero que haya suerte.

      Creo que a partir del kernel 3.2 ya viene activado. Pero de todas formas si no lo tienes activado siempre puedes compilar el núcleo y activarlo.

      1.    oxigenante dijo

        Ya estoy en debian y probando el tutorial hay contradicciones, en el primer paso me da la salida de que tengo vgaswicheroo activado, pero cuando voy a usarlo me lanza el mensaje

        bash: /sys/kernel/debug/vgaswitcheroo/switch: No existe el fichero o el directorio

        He hecho el paso para solucionar esto de las dos formas manual y con el comando (iba ha realizarlo manual pero al ver el archivo ya lo tenía con la linea, pero en ese archivo solo ten´ia la linea)

        Y después de hacer el paso me lanza el mismo error

        1.    Tesla dijo

          Me autorespondo, no deja editar el post, ya que da un fatal error y demás cosas que no llego a entender. Quizá algún admin pueda echarnos una mano.

          Por lo referente al PASO 3: EDITAR EL ARCHIVO MANUALMENTE Y NO COMO DICE CON EL COMANDO echo!!!!

          Disculpad las molestias que os pueda haber causado. De todas formas, siempre es recomendable cuando se modifican archivos importantes hacer una copia por si las moscas!

          1.    oxigenante dijo

            Con el comando se crea la línea. El problema fue mio, ya que fui directamente a la obra y se me olvidó instalar el firmware-linux-nonfree ya demás de eso en la 3º parte hay que añadir una linea en el archivo rc.local

            # chown your_user:your_user /sys/kernel/debug/vgaswitcheroo/switch

            Me he instalado los drivers privativos de amd y me funciona a las mil maravillas mejor que en windows que se me bloqueaba constantemente el flash

            Muchas gracias

          2.    Tesla dijo

            Me alegro de que te vaya todo perfecto! 🙂

            En cuanto a lo del archivo rc.local, no lo he puesto ya que no estoy seguro del riesgo que ello conlleva. Y además, confio en que cada persona actuará según su criterio y sus preferencias. Algunos pueden preferir rc.local y otros asignar los permisos en cada sesion. Eso es a gusto de cada persona!

            Un saludo y a disfrutar de tu pc!

  3.   Rots87 dijo

    0.0 interesante articulo aunque a mi no me funciona la tendre en cuenta para cuando compre una ATI (las nvidia me cuestan un ojo de la cara)

    1.    Yukiteru dijo

      Es preferible un millon de veces una NVIDIA en Linux que una ATI, y la hay más baratas. Una GT 210, no es muy cara que digamos, y es buena para jugar y ver cosas con buena calidad y resolución.

  4.   carlos saldaña dijo

    yo tengo una xps 15 i7 con una nvidia de 2gb de video optimos getforce GT 640m y en la parte que dice que tiene el super poder de freir huevos, me pasa exactamente lo mismo, tengo debian 7 de 64 bits.. voy a probar con este tuto haber como me va

    1.    Tesla dijo

      Para Nvidia existe, como bien ha dicho Iván Barra, Bumblebee. Los que useis Nvidia deberiais antes de probar esto intentar hacer funcionar Bumblebee que tengo amigos que lo han conseguido.

      Este post es como último recurso si todo lo demás falla. Aún así, sois libres de escoger vuestro metodo anti-freidora de huevos! 😉

  5.   eliotime3000 dijo

    Buen post. Espero que cuando instale Debian 7 en una PC con vídeo de NVIDIA, no se convierta en una freidora de huevos.

  6.   Jacob dijo

    Pues yo hice lo anterior y me borro los datos del «fstab» ahora tengo que montar las particiones /home y swap de forma manual. Bueno eso me ayudo a aprender algo nuevo como el «mkswap» y «swapon». Ahora a restaurar el fichero antes mencionado.

    1.    Tesla dijo

      No entiendo por que se te borraron los datos del fstab. De todas formas, creo que voy a editar el paso 3 y que se haga de forma manual, ya que me da que el fallo podria estar ahi!

      1.    Jacob dijo

        Yo tampoco y me paso lo mismo que a oxigenante. creo que mi error fue seguir los pasos al pie de la letra y olvidar el básico renombra-miento «fichero.old» pero me sirvió por que ahora se que existen los comandos anteriores!!!

      2.    adrian15 dijo

        Está claro :).

        El > ha de ser un >> .

        1.    Tesla dijo

          Gracias por la aclaración.

          No obstante no puedo editar el post debido a un fallo en el blog. Quizá se arregle en los proximos dias o quiza no, si se arregla lo cambiaré.

          Un saludo y gracias!

  7.   dakar dijo

    Me sigue saliendo «/sys/kernel/debug/vgaswitcheroo/switch: No existe el fichero o el directorio»
    Lei los comentarios e intente hacer lo que señalan, pero no, sigue lo mismo…
    He buscado en todos lados, pero no encuentro solucion D:

    1.    Tesla dijo

      Tienes instalado el paquete firmware-linux-nonfree? Qué te devuelve el comando: grep -i switcheroo /boot/config-*??

      1.    Rigel Ricardo Valladares Méndez dijo

        hola buenos días, tarde o noche me pasa lo mismo coma dakar y cuando ejecuto el comando me sale esto espero que todavía atiendas estas dudas
        root@Rigel-PC:~# grep -i switcheroo /boot/config-*
        /boot/config-3.16.0-4-amd64:CONFIG_VGA_SWITCHEROO=y
        /boot/config-3.16.0-5-amd64:CONFIG_VGA_SWITCHEROO=y