11.19.2010

Añadir resolución de pantalla específica

Puede pasar que en algún momento las X no nos detecte la resolución más óptima para nuestro monitor, ya sea por problemas con el driver de la tarjeta de video o que la resolución nativa que el monitor indica no es la que deseamos.

En estos casos podemos añadir manualmente la resolución deseada con unos comandos útiles. Una vez que la resolución funciona correctamente podemos hacer que sea cargada en al inicio del sistema. Por ahora solo voy a indicar como generar una resolución y como probarla.



Para mantener la consistencia del ejemplo se trabajará con la resolución 1360x768 a 59.80Hz. Es importante conocer la frecuencia exacta de la resolución que queremos añadir ya que si no es soportada por el monitor puede llegar a causar daños físicos irreparables. Así que primero consultar el manual del monitor y verificar los datos :)

Obteniendo la Modeline
El primer dato a obtener es la llamada Modeline, esta contiene valores de refresco horizontal y vertical adecuados para que el monitor funcione de la mejor manera. Para obtener la Modeline ejecutamos: cvt hres vres freq. Por lo que para nuestro ejemplo quedaría así:
cvt 1360 768 59.80
Y nos muestra en la salida algo como esto:
# 1360x768 59.62 Hz (CVT) hsync: 47.58 kHz; pclk: 84.50 MHz
Modeline "1360x768_59.80"   84.50  1360 1432 1568 1776  768 771 781 798 -hsync +vsync
Activando la nueva resolución
Ahora mediante la utilidad xrandr vamos a crear esa nueva Modeline, añadirla y activarla. Así que primero la creamos con la opción --newmode , donde representa todo lo que viene luego de Modeline en la salida del comando cvt, es decir:
xrandr --newmode "1360x768_59.80"   84.50  1360 1432 1568 1776  768 771 781 798 -hsync +vsync
Con eso la hemos creado, ahora debemos añadirla a las resoluciones soportadas con la opción --addmode , sería como lo siguiente:
xrandr --addmode "1360x768_59.80"
Para comprobar que la resolución ha sido añadida ejecutamos xrandr sin argumentos y nos mostrará la lista de resoluciones y un dato importante, la salida con la que se está trabajando, generalmente será VGA pero según el fabricante y la salida a usar puede ser VGA1 por ejemplo, consulten el manual (man xrandr) para más información sobre este y muchos otros aspectos.

Ahora que sabemos que la resolución fue añadida y que conocemos la salida actual, activamos la nueva resolución para empezar a usarla, esto mediante el siguiente comando:
xrandr --output VGA --mode "1360x768_59.80"
Al dar enter el monitor pasará a la nueva resolución, si todo ha salido bien podemos hacer que esta sea la resolución siempre que iniciemos las X. Si algo a fallado podemos ir a un tty con CTRL+ALT+F# (entre 1 y 4) generalmente y reiniciar el servidor gráfico, el cual regresará a la resolución en la cual funcionaba anteriormente.

La mayoría de los casos la falla se debe a que la frecuencia no es la correcta, por ejemplo en mi caso al ver información génerica por le web, leía que para mi monitor la gente teni¡ía 58Hz o 60Hz de frecuencia, pero estos valores no eran los exactos, a veces las aplicaciones redondean el valor. Leyendo el manual técnico del monitor vi que la frecuencia exacta para la resolución de 1360x768 es de 59.80Hz, esto hizo que funcionara correctamente.

Si se desea hacer permanente la nueva resolución, dependerá más que todo de la manera como levantamos el servidor gráfico, pero la mayoría de las veces lo mejor será crear las secciones necesarias en el archivo xorg.conf o en un archivo .conf dentro de /etc/X11/xorg.conf.d/ Pero eso está fuera de este post..hay mucha documentación en la web sobre como configurar las X.

Espero que sea de utilidad!

Saludos