Durante años he tenido mi monitor LG 29UB67 ultrawide (2560x1080@75Hz) conectado a un switch KVM HDMI sin ningún problema. A través de él alternaba entre tres equipos: el portátil del trabajo, un miniPC y mi portátil personal. Todo funcionaba perfectamente... hasta que llegó una actualización de Arch Linux.

Con la llegada de Wayland como compositor por defecto en KDE Plasma, de repente mi monitor ultrawide dejó de funcionar correctamente a través del KVM. En lugar de la resolución nativa 2560x1080, solo detectaba 1920x1080 o resoluciones estándar inferiores.
Lo curioso es que el problema no era del KVM (que llevaba años funcionando perfectamente), sino de cómo Wayland gestiona la información EDID (Extended Display Identification Data) del monitor. Mientras X11 era más "permisivo" con EDIDs incompletos o incorrectos, Wayland es más estricto y necesita información precisa.

Consulté con varias IAs buscando una solución. Todas me dieron la misma respuesta: comprar un KVM nuevo con mejor soporte, preferiblemente con DisplayPort. El problema es que esos switches de calidad cuestan un pastón (200-400€ fácilmente).
Hasta que probé con Claude.ai, que me dio la solución definitiva: un par de líneas de código y un EDID override. Sin gastar un euro.
La solución consiste en extraer el EDID correcto cuando el monitor está conectado directamente, guardarlo en el sistema, y forzar al kernel de Linux a usar ese EDID aunque el KVM envíe información incorrecta o incompleta.
Este método funciona perfectamente en Arch Linux con KDE Plasma Wayland y systemd-boot como bootloader.
Primero necesitas conectar el monitor directamente al PC por el cable que funcione correctamente (en mi caso, DisplayPort). Luego extrae la información EDID:
# Identifica tu salida de vídeo
ls /sys/class/drm/
# En mi caso: card1-DP-1 (DisplayPort 1)
# Extrae el EDID
sudo cat /sys/class/drm/card1-DP-1/edid > ~/monitor_ultrawide.edidVerifica que el archivo se creó correctamente:
ls -lh ~/monitor_ultrawide.edidDebería mostrar un archivo de aproximadamente 256-512 bytes.
Copia el archivo EDID extraído al directorio de firmware del sistema:
# Crear directorio si no existe
sudo mkdir -p /lib/firmware/edid
# Copiar EDID
sudo cp ~/monitor_ultrawide.edid /lib/firmware/edid/
# Verificar
ls -lh /lib/firmware/edid/Ahora debes añadir un parámetro al kernel para que use este EDID cuando detecte tu salida HDMI.
# Listar entradas de boot
sudo ls /efi/loader/entries/Esto mostrará archivos con nombres como 299de72a50974f37b6a874f195dcb3d7-6.18.6-arch1-1.conf. Identifica el archivo sin el sufijo -fallback.
# Edita tu entrada principal (ajusta el nombre según tu sistema)
sudo nano /efi/loader/entries/TU-ENTRADA-AQUI.confBusca la línea que empieza con options y añade al final (separado por un espacio):
drm.edid_firmware=HDMI-A-1:edid/monitor_ultrawide.edidImportante: Cambia HDMI-A-1 por tu salida correcta. Para identificarla:
# Con el monitor conectado al KVM por HDMI, ejecuta:
kscreen-doctor -oBusca el nombre de la salida (ej: HDMI-A-1, HDMI-1, etc.).
La línea options completa debería quedar algo como:
options root=PARTUUID=xxxxx rw quiet drm.edid_firmware=HDMI-A-1:edid/monitor_ultrawide.edidGuarda el archivo (Ctrl+O, Enter, Ctrl+X).
sudo rebootDespués del reinicio:
kscreen-doctor -oDeberías ver ahora tu resolución nativa (2560x1080 en mi caso) entre las opciones disponibles.
Si quieres confirmar que el override está funcionando:
# Ver logs del kernel relacionados con EDID
sudo dmesg | grep -i edidDeberías ver tu resolución nativa activa (marcada con *!).
Nota sobre dmesg con drivers NVIDIA: Si usas drivers propietarios de NVIDIA con dracut, es posible que dmesg | grep -i edid muestre errores como failed with error -2 aunque la resolución funcione perfectamente. Esto ocurre porque el driver de NVIDIA intenta cargar el EDID antes de que esté disponible en el initramfs. Sin embargo, el kernel parameter drm.edid_firmware sigue forzando la resolución correcta posteriormente. Si tu monitor muestra la resolución nativa correctamente, la solución está funcionando aunque aparezcan estos mensajes en los logs.
Si algo sale mal o quieres revertir los cambios:
# Edita la entrada de boot
sudo nano /efi/loader/entries/TU-ENTRADA-AQUI.conf
# Elimina la parte: drm.edid_firmware=HDMI-A-1:edid/monitor_ultrawide.edid
# Guarda y reiniciaTambién puedes arrancar con la entrada fallback desde el menú de systemd-boot, que no tendrá el parámetro modificado.
Con este método puedes usar switches KVM económicos sin perder resolución en monitores ultrawide u otras configuraciones no estándar. El kernel de Linux usa la información EDID correcta que extrajiste, ignorando la información incorrecta que envía el KVM.
Esta solución es especialmente útil cuando:
El método es seguro, reversible, y funciona perfectamente en Arch Linux con KDE Wayland. También debería funcionar en otras distribuciones y entornos, ajustando las rutas según el bootloader que uses (GRUB, rEFInd, etc.).
Nota: Con drivers NVIDIA y dracut, aunque dmesg muestre errores al cargar el firmware EDID, la solución funciona correctamente y la resolución se aplica sin problemas. ¿Te ha sido útil esta guía? Déjame un comentario si tienes dudas o si te funcionó con tu configuración.