Buscar este blog

viernes, 4 de enero de 2013

¿Problemas con la resolución de pantalla en Ubuntu 12.04?

Recién en el mes de octubre del 2012 cambié mi distro por la nueva de Ubuntu, la versión 12.04 LTS. Me encanta esta nueva versión, incluye muchas mejoras respecto a las anteriores. Sin embargo un detalle estaba rondando y que, lamentablemente no había visto.

Sucede que el día de hoy tuve necesidad de conectar un monitor ViewSonic VA2231wm de 22 pulgadas y resolución de 1920x1080 para sacar otro escritorio, aquí en mi trabajo. Lo primero que noté es que la resolución aparecía como de 1024x768. Esto, lo confieso, me intrigó, pues con la distro anterior que usaba (10.10) nunca tuve ese problema, simplemente conectaba el cable VGA a mi laptop y ¡listo! Resolución máxima al instante.

Buscando aquí y allá noté que muchas personas se quejaban de ese problema, tanto en escritorios normales como en monitores extras. Así fue que encontré la siguiente solución. Esta aplica si tu monitor no es reconocido o si simplemente quieres conectar otro monitor, pantalla o proyector y ves que la resolución no es la óptima.

Lo primero que sugiero es que busques en internet cuál es la resolución máxima que te da tu monitor o el equipo que quieres conectar, así como la frecuencia en la que trabaja, etc. Esto será necesario debido a que utilizaremos una herramienta que nos permitirá agregar esos datos como una opción. Simplemente visita la página del fabricante y checa las especificaciones de tu producto.

¿Ya las tienes? Ok. Sigamos adelante. Para corregir este problema utilizaremos una herramienta llamada XANDR.

xandr


Xandr es una herramienta de configuración de gráficos que funciona a bajo nivel, por debajo de la interfaz incluida en la distro.

Abriremos una consola y escribiremos:

xrandr

Entonces nos mostrará el resultado de la consulta.


Screen 0: minimum 320 x 200, current 2390 x 768, maximum 8192 x 8192LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 309mm x 173mm   1366x768       60.1*+   1360x768       59.8     60.0     1024x768       60.0     800x600        60.3     56.2     640x480        59.9  VGA1 connected 1024x768+1366+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  HDMI1 disconnected (normal left inverted right x axis y axis)DP1 disconnected (normal left inverted right x axis y axis)

Como pueden ver, en esta sección me muestra los datos de mi monitor de la laptop así como el del monitor que tengo conectado al puerto VGA (VGA 1). Ahora añadiré la resolución máxima que me permite mi monitor ViewSonic. Como xrandr necesita ciertos parámetros como la horizontalidad, la verticalidad y la frecuencia, necesito calcularlos. No se preocupen, haremos uso de otro comando.

Como quiero agregar la resolución máxima de 1920 x 1080 a 60 Hz, escribiré:

cvt 1920 1080 60

Esto le indica a GNU/Linux que quiero calcular los datos para una resolución de 1920x1080 con una frecuencia de 60 Hz. Entonces me devolverá la siguiente información:


# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHzModeline "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync


Ahora, veamos que me indica todos los parámetros que necesito para agregar esta resolución al sistema. Recordemos que quiero agregárselos a mi monitor externo, reconocido por Linux como VGA1. Para agregarlos usaré de nuevo el comando xrandr.

Agregaremos el modo nuevo utilizando los datos obtenidos por el comando cvt de la siguiente manera:

xrandr --newmode "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync

Ahora agregaremos el modo al sistema.


xrandr --addmode VGA1 1920x1080_60.00


Al usar el parámetro "addmode" le indico que lo agregue al identificador VGA1 (mi monitor externo) identificándolo como 1920x1080 a 60 Hz. Se producirá un leve parpadeo y el modo estará agregado, pero aún no activado.

Para activar el nuevo modo escribiré:


xrandr --output VGA1 --mode 1920x1080_60.00

Le pasamos como parámetros que va hacia la salida (output), al monitor externo (VGA1) y le indicamos el modo que queremos activar (1920x1080). Con esto la pantalla parpadeará y ¡listo! Ahora mi monitor funciona a la resolución que quiero y que necesito.

Compruebo que exista el nuevo modo escribiendo:

xrandr

Y mi Linux me muestra ahora todos los modos existentes en mi equipo:

Screen 0: minimum 320 x 200, current 3286 x 1080, maximum 8192 x 8192LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 309mm x 173mm   1366x768       60.1*+   1360x768       59.8     60.0     1024x768       60.0     800x600        60.3     56.2     640x480        59.9  VGA1 connected 1920x1080+1366+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     1920x1080_60.00   60.0* HDMI1 disconnected (normal left inverted right x axis y axis)DP1 disconnected (normal left inverted right x axis y axis)


Con * me indica cuál es el modo activo.

Pero ahora supongamos que no queremos tener tantos modos activos en nuestra computadora. Para borrar un modo de video, haremos uso otra vez de nuestro amado comando xrandr.

xrandr --rmmode 848x480_60.00

Nótese cómo es que identifico el modelo a borrar. Chequen un poco arriba para que lo encuentren. Le digo que elimine el modo de video 848x480 que trabaja a 60 Hz.

Vuelvo a ejecutar el comand

xrandr

Y Linux me muestra los modos existentes:


Screen 0: minimum 320 x 200, current 3286 x 1080, maximum 8192 x 8192LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 309mm x 173mm   1366x768       60.1*+   1360x768       59.8     60.0     1024x768       60.0     800x600        60.3     56.2     640x480        59.9  VGA1 connected 1920x1080+1366+0 (normal left inverted right x axis y axis) 0mm x 0mm   1024x768       60.0     800x600        60.3     56.2     640x480        59.9     1920x1080_60.00   60.0* HDMI1 disconnected (normal left inverted right x axis y axis)DP1 disconnected (normal left inverted right x axis y axis)


Nótese cómo ya no aparece el modo en cuestión.


Consideraciones finales


Como verán, tener el control de tu equipo es algo que, simplemente no puedes hacer con Mac o con Windows. Sin embargo, con un gran poder viene una gran responsabilidad, como bien lo dijo Ben Parker. Tengan cuidado al usar estas herramientas, pues puede ocasionar que tu monitor no se vea como lo deseas. Como dije al inicio, primero chequen las especificaciones del fabricante.

Happy Hacking!!!



ACTUALIZACION 10 DE ABRIL 2013


Acabo de subir el script que creé, por si a alguien más le puede servir. Descárguenlo desde este enlace.

Happy Hacking!!!

16 comentarios:

  1. Hola gracias por el post. Tengo una duda y es que al ejecutar xrandr no me sale nada referente a VGA. Tengo un PC de sobre mesa con una tarjeta gráfica NVIDIA Geforce 7300 y un monitor HP w1907v
    La salida del comando xrandr:
    root@os:~# xrandr
    xrandr: Failed to get size of gamma for output default
    Screen 0: minimum 320 x 240, current 1440 x 900, maximum 1440 x 900
    default connected 1440x900+0+0 0mm x 0mm
    1440x900 50.0*
    1360x768 51.0 52.0
    1152x864 53.0 54.0 55.0 56.0
    1152x720 57.0
    1024x768 58.0 59.0 60.0
    960x600 61.0
    960x540 62.0
    896x672 63.0
    840x525 64.0 65.0 66.0 67.0
    832x624 68.0
    800x600 69.0 70.0 71.0 72.0 73.0 74.0
    800x512 75.0
    720x450 76.0
    680x384 77.0 78.0
    640x512 79.0 80.0
    640x480 81.0 82.0 83.0 84.0 85.0
    576x432 86.0 87.0 88.0 89.0
    512x384 90.0 91.0 92.0
    416x312 93.0
    400x300 94.0 95.0 96.0 97.0
    320x240 98.0 99.0 100.0
    root@os:~#
    Quiero solucionar esto porque no puedo entrar al modo TTY (CTRL + ALT + F1) y tampoco puedo jugar al "NJam" (Pacman - like) Porque me sale un mensaje que dice "Señal de entrada fuera de límites, cambiar a configuración 1440 x 900 a 60 HZ" Muchas gracias.

    ResponderEliminar
    Respuestas
    1. Por cierto, ¿qué distro estás usando? La salida de datos puede ser distinta entre un ubuntu y un fedora, por ejemplo.

      Eliminar
  2. Hola. De acuerdo a lo que escribes entiendo que el único problema es que tu monitor aparece con frecuencia a 50 hz y no te da los 60 que te pide el juego. ¿Ya intentaste meterle la configuración tu mismo como explica el post? Los datos que publicas son para obtener la información actualmente en el sistema. Pero, puedes crear tu propia configuración usando las demás utilerías que te describo en el post.

    ResponderEliminar
  3. Hola Alejandro... Primero muchas gracias por tu post, acabo de instalar ubuntu 12.04 hace 2 días y no se aun usarlo al 100%... había buscado por toda la red como solucionar este problema que resolviste acá de manera tan sencilla.
    Lo que si tengo una duda... después de hacer todo lo que aparece, efectivamente pude poner mi monitor externo a la resolución deseada, pero una vez que inicie nuevamente el notebook me salio una ventana diciendo que el modo no era soportado... como hago para que lo reconozca automáticamente? que archivo se modifica para que no me aparezca esa ventana?

    ResponderEliminar
    Respuestas
    1. Este comentario ha sido eliminado por el autor.

      Eliminar
    2. en realidad es un pequeño bug que tiene la 12.04. Cuando reinicies o conectes un monitor extra, te cambiará la resolución. Solamente vuelve a ejecutar el script y listo. No he probado la nueva versión, creo que la 12.04.4 ya viene con eso corregido. Prueba a hacer:

      sudo apt-get update && sudo apt-get upgrade

      y reinicia el equipo. A ver como se comporta.

      Happy Hacking!!!

      Eliminar
  4. Gracias por tu post...

    Yo recién instalé el Ubuntu 12.04, y estoy usando una TV de 32" marca Phillips. Estoy usando un puerto HDMI.

    El problema que tengo es que mi escritorio se ve recortado...es decir no sale completamente el escritorio. Ya intente cambiar los parámetros de la TV pero no lo permite. Y también intente cambiar la resolución de ubuntu, pero tampoco pude hacerlo. Mi duda es si con un puerto HDMI es posible realizar el tutorial que escribiste? pues en el se menciona VGA.

    Muchos saludos

    Rolando Paz

    ResponderEliminar
    Respuestas
    1. Hola Rolando. Mira, checa los parámetros que te envía el comando xrandr para que veas el identificador de HDMI, puesto que generalmente te envía los relacionados con el puerto VGA. Ya que los tengas, solamente cambia el identificador por el que te indica el comando.

      Saludos.

      Eliminar
  5. Hola, a mi me sale este error al querer cambiar "xrandr --newmode" por la resolucion de mi monitor
    X Error of failed request: BadName (named color or font does not exist)
    ah y otra de las cosas que note es que en lugar de Vga a mi me aparece asi
    "DVI-I-0 connected 1440x900+0+0" Muy raro la verdad...
    Agradesco la ayuda! hasta luego!

    ResponderEliminar
  6. Muchas gracias. Me funciona correctamente. El problema! Cuando reinicio el portátil, los cambios que efectuado no los mantiene y debo de nuevo a volver introducir los pasos reseñados.

    ResponderEliminar
  7. yo ingreso:
    xrandr --addmode CRT1 1280x768_60.00

    y me devuelve estos datos

    X Error of failed request: BadMatch (invalid parameter attributes)
    Major opcode of failed request: 141 (RANDR)
    Minor opcode of failed request: 18 (RRAddOutputMode)
    Serial number of failed request: 39
    Current serial number in output stream: 40

    prosegui a ver si no era nada pero no, no se que es, suy hardcore en cualquier windows pero linux lo use por primera ves ase 2 dias y toy aprendiendo :3

    ahora ejecuto: xrandr

    y me devuelve esto:

    Screen 0: minimum 320 x 200, current 1024 x 768, maximum 1024 x 1024
    DFP1 disconnected (normal left inverted right x axis y axis)
    DFP2 disconnected (normal left inverted right x axis y axis)
    CRT1 connected 1024x768+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
    1024x768 61.4*+
    800x600 61.4
    640x480 61.4
    1280x768_60.00 (0xda) 79.5MHz
    h: width 1280 start 1344 end 1472 total 1664 skew 0 clock 47.8KHz
    v: height 768 start 771 end 781 total 798 clock 59.9Hz

    yo quiero configurar la resolucion 1280x768, (el lcd parese que va a 1080p pero realmente no, se ve opaco)

    espero me ayudes!!
    a y muy buen post, muchas grasias ^^

    ResponderEliminar
    Respuestas
    1. pd: yo con windows, tenia el driver de la placa que me permitia ponerlo a 1280x768 y ahi se vio BIEN! si le dava mas se veia opaco, y menos se veia feo, con las letras gordas y todo estirado (como ahora)

      Eliminar
  8. Muchas Gracias Alejandro por este Post tan bueno, muy útil y perfectamente explicado, de nuevo gracias.

    ResponderEliminar
  9. Hola...!!!
    tengo problema con la resolucion de la pantalla. Tengo un monitor PHiLIPS 104S y no logro ver la pantalla completa. trate de configurar con los botones que trae el monitor pero es imposible de ver los botones de la parte izquierda del ubuntu 12.04.
    siceramente espero que me puedan ayudar...
    muchisimas gracias...!!!
    les dejo mi correo: diego.numb2014@gmail.com

    ResponderEliminar
  10. Gracias por el post, muy útil, siguiendo tal cual las instrucciones se consigue que el monitor que conectes funcione correctamente. Yo he conectado un Philips PRO 3CM9609 a 640x480 y funciona perfectamente con VGA. Durante la instalación me dió el mismo error BadName que el usuario metalpower, pero ignorando y siguiendo las instrucciones, he conseguido que funcione. Ahora lo uso como editor de texto o para ver algún video en pantalla extendida. Magnífico post. Muchas gracias, has conseguido que una pantalla crt que ya daba por perdida vuelva a tener un buen uso.
    He leído que hay que volver a dar los mismos pasos para que el monitor auxiliar funcione cada vez que arranque el ordenador. Si alguien supiera que instrucción hay que decirle para que lo arranque cada vez que se inicia ubuntu, le estaría agradecido.

    ResponderEliminar

Tus comentarios son muy importantes. Gracias por tomarte tu tiempo.

Happy Hacking!!!