Sábado, Septiembre 23, 2017

Xrandr: poderosa herramienta para configurar tu monitor

Xrandr: poderosa herramienta para configurar tu monitor

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.

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 1024x768 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 1024x768 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: 1024x768 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 1024x768 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 800x600 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.

 

Fuente: usemoslinux

Compártelo. ¡Gracias!

 
Grupo Digital de Ayuda! Laboratorio Linux! - Linux para todos.

¿Quién está en línea?

Hay 95 invitados y ningún miembro en línea

Contador de Visitas

8965734
Hoy Hoy 317
Ayer Ayer 1146
Esta semana Esta semana 6245
Este mes Este mes 25600
Total de Visitas Total de Visitas 8965734

Día con más
visitantes

07-19-2017 : 1525

Gracias por su visita