Xrandr: poderosa herramienta para configurar tu monitor

38
37692

En esta oportunidad, explicamos cómo usar xrandr, una herramienta del terminal que sirve para corregir la resolución de tu monitor, sus tasas de refresco, etc. e incluso sirve para manipular más de un monitor.

Miguel Suárez Patiño es otro de los ganadores de nuestra competencia semanal: “Compartí lo que sabés sobre Linux“. ¡Felicitaciones Miguel!

El usuario normal, principalmente de Windows o Apple, no entienden muy bien a la gente que le apasiona Linux y que se pasan mucho tiempo en la consola de comandos escribiendo “cosas raras”.


Esto que voy a contar hoy, es uno de esos días en que te sientes especialmente orgulloso de Linux. Esta es la historia:

Mi querido y viejo monitor CRT de marca HP pavilion mx70, me ofrece un amplio rango de resoluciones, pero mi Linux Mint LXDE no lo reconoce y me muestra una buena resolución de 1024×768 pero con sólo 60 hz de refresco, lo cual no es muy bueno para la vista. En teoría el monitor puede llegar a 85 hz con esa resolución.

¿Y que hago ahora? Pues lo de siempre, ir a la línea de comandos y ¡A JUGAR!

Usando xrandr

Para modificar las resoluciones existe el comando “xrandr” (X Resize & Rotate). Con este comando se configura la resolución de pantalla, pero además se pueden añadir nuevas resoluciones siempre que las soporte el monitor.

Comentar que existen varias interfaces gráficas: grandr, arandr.

Para ver las resoluciones detectadas por el sistema basta con llamar a este comando y ver el resultado, en mi caso:

informiguel ~ $ xrandr

Screen 0: minimum 320 x 200, current 1024 x 768, maximum 4096 x 4096
VGA-0 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1024x768 60.0
800x600 60.3 56.2
848x480 60.0
640x480 59.9
S-video disconnected (normal left inverted right x axis y axis)

Como se puede ver, para una resolución de 1024×768 sólo ofrece 60.0 Hz.

Bueno, voy a añadir la resolución en la que mejor me encuentro y que ofrece mi monitor: 1024×768 a 85 Hz. Evidentemente cada monitor tiene sus propias características que hay que consultar.

El problema está en que para crear una nueva resolución se necesitan unos datos “muy extraños” como son la frecuencia vertical, horizontal, máxima, mínima, total, … Pero Linux también tiene la solución con el comando “cvt”, una utilidad para calcular los modos VESA necesarios para alcanzar una resolución. Bueno, si yo quiero 1024×768 a 85 hz escribo:

informiguel ~ $ cvt 1024 768 85

# 1024x768 84.89 Hz (CVT 0.79M3) hsync: 68.68 kHz; pclk: 94.50 Mhz
Modeline "1024x768_85.00" 94.50 1024 1096 1200 1376 768 771 775 809 -hsync +vsync

También puedes probar con “gtf” que hace más o menos lo mismo:

informiguel ~ $ gtf 1024 768 85
# 1024x768 @ 85.00 Hz (GTF) hsync: 68.60 kHz; pclk: 94.39 MHz
Modeline "1024x768_85.00" 94.39 1024 1088 1200 1376 768 769 772 807 -HSync +Vsync

Y de esta forma aparece el “Modeline” que tengo que utilizar con “xrandr”. No te asustes si los hz no coinciden del todo (94.50 en lugar de 85).

Paso a añadir esa resolución copiando el “modeline” obtenido: (un detalle, cuando se pone una opción con su nombre largo como “newmode” va precedido de 2 guiones, tal vez no se noten mucho, mientras que otras veces sólo va 1 guíón como en el caso de “hsync”)

informiguel ~ $ xrandr --newmode "1024x768_85.00" 94.50 1024 1096 1200 1376 768 771 775 809 -hsync +vsync

Si comprobamos el resultado:

informiguel ~ $ xrandr

Screen 0: minimum 320 x 200, current 1024 x 768, maximum 4096 x 4096
VGA-0 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1024x768 60.0*
800x600 60.3 56.2
848x480 60.0
640x480 59.9
S-video disconnected (normal left inverted right x axis y axis)
1024x768_85.00 (0x137) 94.5Mhz
h: width 1024 start 1096 end 1200 total 1376 skew 0 clock 68.7KHz
v: height 768 start 771 end 775 total 809 clock 84.9Hz

Se ve el nuevo “Modeline” creado. ¡Me gusta como suena “Modeline”! Si un día tengo un gato lo llamaré así.

Bueno, seguimos, ahora tengo que añadir este nuevo modo a la lista de modos disponibles:

informiguel ~ $ xrandr –addmode VGA-0 1024x768_85.00

Lo de “VGA-0”, si te fijas en los resultados de “xrandr”, es como se llama mi tarjeta gráfica. Vemos el resultado, ¡Perfecto!

informiguel ~ $ xrandr

Screen 0: minimum 320 x 200, current 1024 x 768, maximum 4096 x 4096
VGA-0 connected 1024x768+0+0 (normal left inverted right
1024x768 60.0*
800x600 60.3 56.2
848x480 60.0
640x480 59.9
1024x768_85.00 84.9
S-video disconnected (normal left inverted right x axis y axis)

Ahora sólo queda aplicar esa resolución al monitor:

informiguel ~ $ xrandr --output VGA-0 --mode 1024x768_85.00

Un parpadeo y el monitor se pone más guapo que nunca.

¿Y si quiero poner una resolución de 800×600 con un tasa de refresco de 60 hz (veo que hay 2 refrescos disponibles en este modo, 60.3 y 56.2)? Se puede hacer de esta manera:

informiguel ~ $ xrandr -s 800x600 -r 60

Fijarse que en el refresco se uso 60 en lugar de 60.3, ya que este último no lo admitía. Ahora vamos a volver a la resolución guapa:

informiguel ~ $ xrandr -s 1024x768_85.00

Si tomase por defecto el refresco a 60 hz, entonces escrbimos:

informiguel ~ $ xrandr -s 1024x768_85.00 -r 85

¿Y si me equivoco y quiero quitarlo todo? Pues nada, vamos allá. Para borrar esta resolución de la lista de modos disponibles:

informiguel ~ $ xrandr --delmode VGA-0 1024x768_85.00

Si visualizo el resultado:

informiguel ~ $ xrandr

Screen 0: minimum 320 x 200, current 1024 x 768, maximum 4096 x 4096
VGA-0 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1024x768 60.0*
800x600 60.3 56.2
848x480 60.0
640x480 59.9
S-video disconnected (normal left inverted right x axis y axis)
1024x768_85.00 (0x136) 94.5Mhz
h: width 1024 start 1096 end 1200 total 1376 skew 0 clock 68.7KHz
v: height 768 start 771 end 775 total 809 clock 84.9Hz

Ya está borrado de la lista, pero ahora aparecen los datos del modo como se había creado (–newmode) anteriormente. Para borrar esto también:

informiguel ~ $ xrandr --rmmode 1024x768_85.00

Vemos el resultado:

informiguel ~ $ xrandr

Screen 0: minimum 320 x 200, current 1024 x 768, maximum 4096 x 4096
VGA-0 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1024x768 60.0*
800x600 60.3 56.2
848x480 60.0
640x480 59.9
S-video disconnected (normal left inverted right x axis y axis)

Todo quedo como al principio del artículo…

Y para finalizar, yo se que eres un bromista, así que prueba esto:
En primer lugar escribe esto, que no hace cambios en este momento:

informiguel ~ $ xrandr --output VGA-0 --rotate normal

Y ahora prueba lo siguiente teniendo en cuenta que para quitar la broma tienes que repetir la instrucción anterior (basta con seleccionarla usando las teclas de cursor):

informiguel ~ $ xrandr --output VGA-0 --rotate left

Hasta aquí todo muy bonito pero hay un problema, al reiniciar el equipo las configuraciones se pierden. No me parece buena idea ajustar el refresco de pantalla cada vez que entramos en el equipo, tiene que haber una forma de dejarlo fijo. Vamos a ello.

En Linux hay un fichero de configuración que poco a poco y a medida que el hardware fue mejor reconocido por las distribuciones, fue quedando en el olvido. Su nombre con ruta completa es «/etc/X11/xorg.conf». El fichero de configuración de todos los parámetros que hacen que el entorno gráfico funcione.

En LXDE (entorno de escritorio X11 ligero) el fichero no existe, con lo cual hay que crearlo, cosa que no es fácil. Una posible solución es hacer lo siguiente:

Nos salimos del entorno gráfico, vamos a una terminal pulsando CTRL + ALT + F1, recordar que el entorno gráfico es CTRL + ALT + F7). Nos validamos y “apagamos” el entorno gráfico:

informiguel ~ $ sudo /etc/init.d/lxdm stop

A continuación ejecutamos la configuración de X:

informiguel ~ $ sudo X -configure

Se crea un fichero de nombre “xorg.conf.new” el cual es el que debemos mover a su sitio y modificar:

informiguel ~ $ mv xorg.conf.new /etc/X11/xorg.conf

Si todo está correcto y queremos volver a arrancar el entorno gráfico:

informiguel ~ $ sudo /etc/init.d/lxdm start

Existe otra solución que puede ser mejor, arrancas con una ditribución de Linux en “CD Live” y copias el fichero cuya ruta completa es “/etc/X11/xorg.conf” y lo pegas tu distribución. Si esa distribución detectó bien el monitor se acabaron los problemas, en caso contrario hay que retocar el fichero con los datos del refresco de pantalla y resolución que quieras. Como ejemplo, yo tuve que añadir lo siguiente para que el refresco fuese el adecuado:

Section "Monitor"
  Identifier "Monitor genérico"
  Option "DPMS"
  HorizSync 30-70
  VertRefresh 50-120
  Modeline "1024x768_85.00" 94.39 1024 1088 1200 1376 768 769 772 807    -HSync +Vsync
  Option "PreferredMode" "1024x768_85.00"
EndSection

Section "Screen"
  Identifier "Default Screen"
  Device "ATI Technologies, Inc. Radeon RV250 If [Radeon 9000 Pro]"
  Monitor "Monitor genérico"
  DefaultDepth 24
  Option "AddARGBGLXVisuals" "True"
  Option "Metamode" "1024x768_85.00 +0+0"
  Option "UseEdid" "False"
  SubSection "Display"
       Depth 1
       Modes "1024x768" "800x600" "640x480"
  EndSubSec...................etc

Muy importante, buscar las características técnicas del monitor para conocer la sincronización vertical y horizontal. Como se ve en la imagen el “Modeline” es el que se calculó con el comando “cvt”.

Una vez realizados los cambios necesarios  ya queda todo listo para ejecutarse automáticamente la próxima vez que arranques el equipo. Problema resuelto.

Ahora ¿Como le explicas a uno de Windows o de Mac, la emoción que se siente al sentir el “control” sobre la máquina (y no al revés)?

Me parece que somos una especie en extinción…  🙁

Aquellos que quieran seguir profundizando sus conocimientos de xrandr, no dejen de leer estos viejos artículos publicados en este blog.

¡Gracias Miguel Suárez Patiño!
¿Querés participar en nuestra competencia mensual y hacer un aporte a la comunidad?
Sólo tenés que enviarnos un correo incluyendo el truco o mini-tutorial de tu autoría.

↓↓↓¿Te sirvió este artículo?, Vota por nosotros en los OpenAwards↓↓↓

38 COMENTARIOS

  1. hola amigo como estas gracias por el tutorial esta muy bien explicado pero de verdad no me funciona.

    Te explico, en la parte donde uno agraga la pantalla y coloca vga, a mi no me funciona pues en la lista de configuracion de al principio no me sale monitor vga, soloalgo de default y no consigo como hacer pues creo que el SO no esta reconociendo el driver de video, en este caso linux maint 10 lts, no coloque el mas nuevo pues el sistema operativo da error con el procesador de la pc, una minilaptoc utech

  2. quise ajustar la resolucion de un monitor/tv de 32 en una instalacion nueva de solusOS tu articulo muy explicito y claro, ademas la solucion fue la que diste a una pregunta (autoajuste del monitor)
    te felicito.

    saludos

  3. Muchisimo ROLLO para configurar la resolución de pantalla y los herzios!!!… En Windows con tres clicks lo resuelvo!!!… y también tengo control sobre la “Máquina”!!!!…

    • ERROR: En windows si no te reconoce el monitor por falta de drivers NO puedes hacer nada.
      En Linux si te lo reconoce el driver, tampoco hace falta hacer esto.

      Lo siento, pero tu intento de dar un “me gusta” a Windows en este caso ha fracasado…

  4. ERROR. En Windows, como en Linux, desde una aplicación gráfica de configuración de la pantalla puedes hacer algunas cosas generales, pero cuando quieres sacar todo el jugo a un monitor o el SO no lo detecta bien en su totalidad, desde windows no podrás hacer nada, desde Linux aún te queda otra oportunidad si físicamente es posible. De hecho, en Windows, el monitor con el que se hizo este artículo sólo funcionaba bien con Windows 98 con los drivers del fabricante. A partir de versiones superiores se iba a refrescos de pantalla muy pobres.

  5. muy buen tutorial, pero te hago una consulta. En el caso de aplicar todos los comandos y que la pantalla quede en la resolución querida, pero desplazada hacia un costado qué se debe hacer?

    • Eso se soluciona con los botones del monitor. Suele haber un botón con un menú donde se puede “mover” la pantalla para ajustarla.

      Un saludo

  6. Es una buena pregunta. No estoy seguro de que haya alguna forma de corregir eso utilizando un software. En general, me parece recordar que se puede corregir usando los botones del monitor.
    Abrazo! Pablo.

  7. He seguido todos los pasos. Y de ningún modo de me guarda nada. Siempre que reinicio el PC está en la configuración anterior, y tengo que volver a ponerlo todo manualmente. Por favor…. Un ayudita…

  8. Saca de apuros esta herramienta recomendada cuando tenes una resolucion pobre y no encontras manera de cambiarla ,con un xrandr -s 0 basta!

  9. Mil gracias,
    llevaba muchos dias intentando solucionar le problema, i en 5 minutos solucionado, muy bien explicado

    GRACIAS por compartir tus conocimientos, gente como tu hacen el Software Libre más accesible i grande

    un fuerte abrazo

  10. me da un error me dice que no puede encontrar vga puse vga-1 vga-2 vga-0 y ninguno funciona puse VGA tampoco me dice que no se encuentra que hago

  11. Muy buena y completa explicación del comando xrandr. En gnome cada vez que inicio sesión se altera la configuración del archivo “xorg.conf” y así puedo crear un script para que en cada reinicio se ponga correctamente.

    ¡Saludos!

  12. Despues de mucho tiempo buscando e investigan en la red pude solucionar mi problema con este tutoria, muy bien explicado y claro.

    Gracias

  13. Pues yo siempre he usado Debian y cero dramas para configurar cosas, sin necesidad de llegar a ese nivel de detalle.

    Pero ahora en Mint no hallaba la forma de regresar a la normalidad mi monitor y con “xrandr -s 0” en la consola funcionó muy bien.

    El caso es que sí, mucha vaina como dice Donatien, sobre todo cuando te cambias de distro para hacer las cosas “más fáciles”.

    Bueh…

    .

  14. me funciono perfecto solo que en vez de VGA a mi me aparecia LVDS, por lo que copie todo igual pero cambiando el VGA-0 por LVDS y todo funciono perfecto

  15. Hola, me pueden ayudar, mi monitor no esta centrado y me da una resolucion de 1920×1080 de 60.1*+ lo cual no es lo correcto ya que la no esta centrada, la resolucion de mi equipo es de 1600×900 pero no se a cuantos Hz la tengo que poner, al hacer cvt me entrega lo siguiente, a cuantos Hz la tengo que poner ?
    drakkpac drakk # cvt 1600 900 60
    # 1600×900 59.95 Hz (CVT 1.44M9) hsync: 55.99 kHz; pclk: 118.25 MHz
    Modeline “1600x900_60.00” 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync

  16. Muchas gracias funciono perfecto. El problema es que no se como editar el fichero (ni que fichero editar) para que me quede configurado asi para siempre alguien me podria ayudar? estoy usando ubuntu studio 14.04 (si no me equivoco usa xfce)

  17. al hacer este paso”informiguel ~ $ xrandr –newmode “1024x768_85.00” 94.50 1024 1096 1200 1376 768 771 775 809 -hsync +vsync”sale el error “xrandr: Failed to get size of gamma for output default”

  18. Buenas tardes amigo,

    Excelente tutorial lo logre hasta el punto que me aparecio la resolucion y todo, sin embargo cuando la selecciono me da un error como de espacio virtual insuficiente, mi monitor esta dandome una resolucion de 1920×1080 y quiero reducir esta resolucion sin embargo cuando hago un xrendr me aparece minimo actual y maximo la misma es decir 1920×1080, probe los comandos que me indiscan si el video esta funcionando correctamente y es asi, me aparecen los engranajes y el mensaje me indica YES!.

    quisier saber si hay una manera de colocar que la resolucion minima sea otra no esta misma para de esta manera entrar en los valores que deseo, a porcierto la frecuencia de la pantalla con la reolucion que tengo me dice que es 0.

  19. Hola, que tal, muy buena explicación, pero tengo un problema, para crear el archivo de configuracion permanente decis que necesito esto (estoy en KaliLinux y no existe el archivo xorg.conf

    informiguel ~ $ sudo /etc/init.d/lxdm stop

    pero el archivo lxdm no existe, y cuando continuo me dice que debo detener el servidor para poder crear el archivo xorg.conf… así que cual es el archivo que debo detener?????

  20. muy buen articulo pude agregar la resolución q deseaba (1360×768) pero no me permite seleccionar esa resolución me da los siguientes errores:

    la imagen donde pude agregar la resolción:

    Screen 0: minimum 640 x 480, current 1024 x 768, maximum 1360 x 768
    default connected 1024×768+0+0 0mm x 0mm
    1024×768 0.00*
    800×600 0.00
    640×480 0.00
    1360x768_60.00 60.00

    error al intentar seleccionar dicha resolución
    :~$ xrandr –output default –mode 1360x768_60.00 –primary
    xrandr: Failed to get size of gamma for output default
    xrandr: Configure crtc 0 failed

    error como sudo:

    sudo xrandr –output default –mode 1360x768_60.00 –primary
    No protocol specified
    Can’t open display :0

    alguien sabe q puede ser? la verdad lei muchos foros y trate muchas cosas pero no consigo arreglarlo y lo peor q no puedo cerrar el servidos X (o apretar ctrl +alt+f1) porq por la resolución q esta puesta se me pixela toda la pantalla en cuadrados de colores.

    desde ya muchas gracias

  21. Hola, muchas gracias por este tipo de tutoriales, pero tengo un problemita.

    Al aplicar el comando ~$ xrandr -addmode 1336x768_85.00 la terminal me dice

    xrandr: unrecognized option ‘-addmode’

    ¿qué puede pasar aquí?, ya intenté addmode sin el guión y me dice lo mismo. Aclaro que tengo Debian 8.5 y todos los pasos anteriores a ese funcionaron bien.

    Gracias de antemano.

  22. hermano eres un Genio, muchas gracias por el tutorial, me canse de buscar como conseguir la resolucion 1280×960 a 60 hz y me era imposible en xubuntu hasta que llegue googleando a este tutorial, enormes gracias

Dejar una respuesta