Publi

Un monitor VGA que a veces no quiere funcionar enchufado a un puerto HDMI… con script chapuza

Todo me sucedió hace algo menos de un año cuando compré un nuevo portátil de la sexta generación de Intel. Estos portátiles ya no traen puerto VGA. Sencillamente los Skylake de Intel no los soportan y no hay mucho que podamos hacer. Y, si nuestro portátil trae ese puerto, o bien la placa base tiene un adaptador integrado (aunque a estas alturas no sé si habrá algún fabricante que meta un puerto así en un portátil de última generación), o no es un Skylake (de ahí en adelante. Tampoco será un Kaby Lake).

Al mismo tiempo, ya le tenía cariño a mi monitor externo. Un Samsung 4:3 con el que llevaba ya 10 años (ya pronto cumplirá 11) y que sigue funcionando como el primer día a pesar de llevar a sus espaldas varias mudanzas, algún que otro golpe y muchísimas horas de vuelo.

Adaptadores HDMI – VGA

Lo primero fue adquirir Adaptador HDMI a VGA

como el que muestro en la foto a continuación. Lo más fácil es buscar a partir del enlace anterior o mirar en un chino. También lo puedes encontrar con salida de audio. Suelen rondar los 7€ sin audio y lo 9-10€ con audio.

Aunque, esto puede ser una solución ideal y muchas veces no es mala solución. Por ejemplo si tienes un Raspberry Pi y lo quieres usar con tu viejo monitor no te queda otra. Y, aunque no lo he probado, dicen por ahí que se portan bien con este tipo de adaptadores. No suelen calentarse mucho, a mí me dio la impresión al principio, hasta que noté que estaba justo delante de la salida de aire del portátil.

El problema

Este tipo de adaptadores suele tener problemas a la hora de comunicar la información del monitor al ordenador. Es decir, toda la información EDID que envía el monitor para identificarse, decir qué resolución soporta, y demás. Y eso provoca que muchas veces enchufemos el monitor y no funcione. Aunque cuando lo tengas un rato enchufado sí que funcione. A veces, la información EDID llega y otras veces no llega. Puede depender del conversor, aunque si lo compras en un chino, la devolución puede llegar a ser odiosa. De todas formas, mirando por Internet, no fui el único que le pasaba esto.

Otro problema es el refresco de la pantalla (cuando funcionaba la pantalla), puede que tras enchufar el conversor, notéis un cierto desfase en la pantalla. Por ejemplo, al reproducir un vídeo, veáis una línea horizontal o varias dividiendo el vídeo. O incluso cuando ponéis una pantalla de terminal o de bloc de notas pase un tiempo perceptible desde que pulsáis la tecla hasta que veis la letra en pantalla. Y no es cosa del ordenador, porque, en el caso del portátil, pude poner la misma ventana en el panel e iba mucho más rápido. Incluso intentar que la misma letra se representara en las dos pantallas a la vez y en la pantalla externa tardaba un poco más.

El problema del refresco

Para solucionar el problema del refresco sólo jugué con los valores de refresco de la pantalla, sincronización vertical y horizontal. Hasta que encontré un punto satisfactorio y que funcionaba siempre. Es cierto que en ocasiones me daba algún bote la pantalla con el driver nvidia, pero cuando pasé del kernel 4.4 a la versión 4.8 todo empezó a ir mucho más fluido.

El problema de la detección

Aunque lo que más me preocupaba es que no me detectaba el monitor a la primera. Para mí no era mucho problema porque apenas apago el ordenador. Lo tengo funcionando todo el día, a todas horas, pero aunque sea una vez al mes lo reinicio. Y es que cuando lo reiniciaba podía estar desde un par de minutos hasta varias horas sin poder utilizar el monitor externo. Por un lado, el problema era del driver de NVIDIA. Al ser un portátil con doble tarjeta gráfica, podía comprobar que con el driver de Intel el monitor lo detectaba mucho antes (a veces no, pero eran las menos). Aunque por otro lado, también era culpa del adaptador, porque cuando enchufo un monitor HDMI en el ordenador todas las ventanas (incluso la configuración de la BIOS) se podían ver por el monitor (cosa que no pasaba cuando tenía el adaptador puesto).

Así que investigando cómo hacerlo podíamos encontrar información útil. Todos los ejemplos los pondré utilizando xrandr porque para mí era mucho más cómodo que hacerlo en xorg.conf

Lo primero será cambiar el proveedor de salida, es decir, quién se encarga de gestionar la salida de vídeo. Podemos obtener una lista de proveedores de:

xrandr --listproviders

Y luego seleccionar el proveedor que deseemos. Este es mi caso, pero tal vez en vuestro sistema sea diferente:

xrandr --setprovideroutputsource 2 0

Tenemos que tener cuidado con esto, ya que si introducimos un valor ilegal en versiones antiguas de Xorg (me pasó con una Ubuntu 16.04), se puede quedar el ordenador congelado. En versiones más nuevas, ya nos avisa del problema y no hace cambios en el sistema.

Por otro lado, debemos insertar el modo de pantalla a mano. Ya que el problema es al comunicar la resolución soportada del monitor al ordenador. El ordenador no la coge bien y no representa nada. Así que digámosle la información del monitor a mano. En mi caso, la resolución era 1280×1024 a 60Hz y, aunque mi ordenador sólo tiene un puerto HDMI, el nombre con el que el sistema lo detecta es HDMI-1-2 (el nuevo driver de NVIDIA tiene nombres muy largos). Además, quiero la pantalla a la derecha de la del panel del portátil. Para eso hacemos lo siguiente:

xrandr --newmode “1280x1024_60.00” 108.88  1280 1360 1496 1712  1024 1025 1028 1060  -HSync +Vsync
xrandr --addmode HDMI-1-2 1280x1024_60.00
xrandr --output HDMI-1-2 --mode 1280x1024_60.00 --right-of eDP-1-1

Y ya tenemos que tener el monitor funcionando.

Kde Plasma 5

Con la llegada de KDESC 5, llega el nuevo escritorio Plasma y un montón de innovaciones y cosas chulas que podemos hacer. Pero la gestión de la pantalla, cuando creamos un modo de vídeo a mano nos empieza a dar problemas. El modo de vídeo se crea, y podemos representar cosas en la pantalla, pero no tenemos fondo de escritorio y algunos efectos se verán un poco raros, porque para KDE es como si no tuviéramos pantalla. Es más, si accedemos a la configuración nos dice disconnected, aunque la pantalla está claramente enchufada y hay imágenes en pantalla. Esto con un monitor HDMI directamente no pasa..
El problema aquí es que KDE le pregunta a su proveedor, xrandr si hay monitor, y como el monitor no manda bien la información (algunos programas existentes para leer la información EDID devuelven error en el checksum), el proveedor devuelve un error y el monitor figurará como desconectado. Dado que algunas veces sí que se envía bien la información y por lo tanto, el monitor aparecerá como conectado, dando el aspecto que tiene que tener la imagen, vamos a intentar pedir la información al monitor hasta que nos la devuelva bien. Con cuidado, porque, aunque nos la devuelva bien, si volvemos a preguntar, tal vez la entregue mal de nuevo y nos toque volver a empezar.

Para ello, tenemos este script:

while [ -n “$(xrandr | grep ‘HDMI-1-2.*disconnected’)” ]; do sleep 1; done

Con esto, estaremos llamando a xrandr, que refrescará la información del monitor, y mirará si junto con el nombre de la salida, HDMI-1-2, figura también el mensaje disconnected. Si es así, espera un segundo y vuelve a intentar. Así, puede que en unos minutos tengamos el monitor detectado. Otra solución es dejarlo enchufado, a veces lo solía coger solo, aunque podía tardar horas.

El caso en Windows

Pero claro, muchos pensaréis que es cosa de GNU/Linux. El caso es que Windows (probé Windows 10) sí que terminaba detectando el monitor y más o menos pronto. Como mucho entre uno y cuatro minutos. El problema, es que tras enchufar el monitor externo con el conversor, el sistema quedaba congelado, y las pantallas parpadeando durante todo ese tiempo, aunque al final el monitor funcionaba sin tener que hacer scripts ni nada raro.

Foto: Caspar Rubin

También podría interesarte...

There are 3 comments left Ir a comentario

  1. Oscar /
    Usando Mozilla Firefox Mozilla Firefox 53.0 en Fedora Linux Fedora Linux

    Esto con Wayland cambia(rá) completamente, ¿no?
    Gracias!

    1. Gaspar Fernández /
      Usando Google Chrome Google Chrome 57.0.2987.98 en Ubuntu Linux Ubuntu Linux

      Pues sí, con Wayland ya es distinto. A ver si evoluciona un poco la interfaz de Kscreen de KDE (aunque sea sólo de KDE). Al menos es una interfaz común que utilizará la API que esté disponible en cada momento.

      De todas formas si tienes una experiencia parecida con Wayland, me encantaría leerte, tengo ganas un día de experimentar 🙂

  2. Pingback: Un monitor VGA que a veces no quiere funcionar enchufado a un puerto HDMI… con script chapuza | PlanetaLibre /

Leave a Reply