miércoles, octubre 17, 2018

Macbook Pro 2018 y múltiples monitores: problemas de imagen

Durante estos últimos cinco años he estado usando un Macbook Pro de finales de 2013. Lo tenía conectado a dos monitores Dell modelos U2415 uno usando el puerto HDMI y otro con el Display Port. En estos años de uso intensivo no he tenido ningún tipo de problemas de imagen con los monitores.

Recientemente, me han cambiado el ordenador del trabajo a un Macbook Pro de última generación. Este ordenador utiliza puertos USB-C para conectarse con periféricos, incluido los monitores. Con dos cables USB-C a DisplayPort puedo conectar ambos monitores al Macbook y seguir trabajando como hacía con el ordenador viejo. Sólo que de serie, la calidad de imagen deja bastante que desear: halos en el renderizado de las letras, trazas azules en las mismas. Una calidad de imagen pésima.

Tras buscar un rato por Internet encontré este artículo donde explica el porqué del problema y cómo se soluciona.

Los monitores actuales pueden comunicarse con los dispositivos a los que están conectados. Esto se consigue transmitiendo la información definida en el Extended Display Identification Data a la tarjeta gráfica del ordenador por un bus. Por desgracia, los monitores no siempre transmiten esa información de manera correcta a los ordenadores, y pueden aparecer algunos artefactos como los que ocurren entre el Macbook Pro y esos monitores Dell. Concretamente, en el caso del U2415 está transmitiendo mal la manera de codificar el color, diciendo que soporta el espacio de color YCrCb cuando realmente debe ser RGB. El Mac prefiere usar el primer sistema - se supone que el monitor le ha dicho que soporta ambos - y la calidad de imagen se degrada.

¿Cómo puede solucionarse ese problema?. Bien, pues es necesario sobrescribir la información EDID que ha mandado el monitor con una configuración que desactive el espacio de color YCrCb para ese monitor. Es necesario leer la información que nos da el monitor, parchearla y posteriormente hacer que el Mac la utilice en vez de la que le está proporcionando el monitor. Para ello es necesario generar unos ficheros de configuración que se deben de instalar (al menos en High Sierra) en:

/System/Library/Displays/Contents/Resources/Overrides

Este directorio se encuentra protegido por el sistema, con lo cual será necesario arrancar en modo de recuperación (cmd - r), ejecutar un terminal y copiar la información a dicho directorio.

¿Cómo generamos los archivos de configuración necesarios?. Con ayuda de este script. Lo bajamos, lo ejecutamos en nuestro ordenador y nos generará unos directorios y ficheros con la información EDID de los monitores que tengamos conectados, parcheando la misma para que use sólo el espacio de color RGB. Por ejemplo, en el caso de mi ordenador me genera la siguiente estructura

DisplayVendorID-10ac
  DisplayProductID-a0b8
  DisplayProductID-a0bc

Arrancando el sistema en modo de recuperación y copiando ese directorio:

cp -r DisplayVendorID-10ac /System/Library/Displays/Contents/Resources/Overrides

Sólo debe de copiarse la configuración generada para aquellos monitores que tengamos problemas. Una vez copiada la configuración, reseteamos el ordenador para que tenga efecto.

No hay comentarios: