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



22 comentarios en “Vgaswitcheroo en distribuciones basadas en Debian

Deja un comentario

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

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Current ye@r *

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

    1/22
    • 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.

      3/22
      • 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

        12/22
      • 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!

        15/22
      • 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

        17/22
      • 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!

        20/22
  2. 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)

    2/22
    • 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.

      9/22
  3. 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.

    4/22
  4. Google Chrome 28.0.1500.71GNU/Linux x64
    carlos saldaña

    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

    5/22
    • 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! ;)

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

    10/22
  6. 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.

    13/22
    • 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!

      14/22
      • 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!!!

        16/22
      • Está claro :).

        El > ha de ser un >> .

        18/22
      • 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!

        19/22
  7. 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:

    21/22

Deja un comentario

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

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Current ye@r *