2 puntos por GN⁺ 2025-06-16 | 1 comentarios | Compartir por WhatsApp
  • Presenta una forma sencilla de cambiar el EDID de un plug dummy HDMI usando una Raspberry Pi
  • Un plug dummy se utiliza para que un equipo detecte que hay un monitor conectado aunque no exista un dispositivo de salida real
  • Al copiar la información EDID para que sea igual a la de un dispositivo de captura 1080p, se puede configurar el plug para que no aparezca como un monitor 4K
  • Con el controlador I2C de una Raspberry Pi y solo herramientas estándar de Linux, es posible leer y escribir la EEPROM del plug
  • En todo el proceso es indispensable elegir el bus I2C correcto y hacer respaldos para evitar daños al dispositivo

Descripción general del plug dummy y del EDID

  • Un plug dummy es un pequeño dispositivo tipo dongle que, al conectarse a un puerto HDMI o DVI, no realiza procesamiento de video real y solo usa un circuito mínimo para que el equipo detecte una conexión de monitor
  • Incluye un chip EEPROM que imita el EDID (Extended Display Identification Data) de un monitor, junto con circuitos como resistencias pull-up conectadas a +5V
  • Es útil para hacer que un sistema operativo (OS) determine que existe una pantalla en servidores headless, equipos desatendidos y casos similares

Objetivo y enfoque

  • Comparte la experiencia de querer cambiar el EDID de un plug dummy HDMI con soporte 4K para que fuera reconocido como un dispositivo simple de 1080p
  • El objetivo era reemplazar el EDID interno del plug dummy para que coincidiera con la información EDID de un dispositivo de captura HDMI compatible con 1080p
  • No estaba claro si sería posible escribir en la EEPROM del plug dummy, pero valía la pena intentarlo
  • El puerto HDMI de una Raspberry Pi Zero está conectado al controlador I2C, lo que facilita el acceso

Precauciones de seguridad e inicio del procedimiento

  • Si se realiza este proceso con un monitor real conectado, existe riesgo de daño en monitores sin protección de EDID
  • Es necesario trabajar únicamente con dispositivos como un plug dummy cuyo daño no sea problemático
  • Además, es imprescindible usar el bus I2C correcto y, antes de escribir, leer y verificar previamente que el EDID sea el adecuado

Configuración del entorno y preparación

  • Después de instalar Raspberry Pi OS Lite, ajustar la configuración con sudo raspi-config
  • Instalar las herramientas I2C con sudo apt install i2c-tools (en una Pi Zero se necesita red; se puede resolver con un adaptador USB-Ethernet o mediante chroot en la tarjeta SD)
  • Es necesario usar un adaptador HDMI a Mini-HDMI

Detección y respaldo de la EEPROM del EDID

  • En una Raspberry Pi Zero se usa el bus I2C 2 (en otros modelos de Pi el número puede variar)
  • Con el comando i2cdetect se verifica que el dispositivo responda en la dirección 0x50, que es la dirección estándar de una EEPROM de EDID
  • De forma curiosa, también responden las direcciones 0x51~0x57, como si hubiera múltiples copias del EDID almacenadas
  • Con get-edid se realiza un respaldo del EDID original del plug dummy; se lee dos veces y se comparan los resultados para verificar consistencia
  • Con od -v -An -txC se muestra el EDID en hexadecimal y se valida con edidreader.com

Extracción del EDID del dispositivo de captura y escritura en el plug

  • Después de desconectar el plug dummy, se conecta el dispositivo de captura HDMI a la Pi
  • Se extrae el EDID del dispositivo de captura del mismo modo y se vuelve a comprobar su validez
  • Luego se vuelve a conectar el plug dummy y se escribe en la EEPROM el EDID del dispositivo de captura
  • La escritura se realiza byte por byte mediante el comando i2cset, algo posible usando solo herramientas estándar de Linux y bash

Verificación final y resultado

  • Al terminar, se vuelve a extraer el EDID del plug dummy y se compara con diff contra el archivo original para confirmar que el contenido coincide
  • Al conectarlo a una computadora de prueba, ya no se reconoce como el monitor 4K original sino como un dispositivo de captura HDMI
  • El reemplazo del EDID del plug dummy se completó con éxito

Cierre y consejos de uso

  • Con el mismo procedimiento también es posible convertir un plug dummy 1080p antiguo en un dispositivo con soporte 4K
  • Se recomienda realizar la escritura I2C solo desde una Raspberry Pi; hacerlo directamente desde una PC común puede implicar riesgo de daño de hardware
  • Si se necesita esta funcionalidad, este procedimiento puede ser útil

1 comentarios

 
GN⁺ 2025-06-16
Comentarios en Hacker News
  • Quiero compartir un pequeño tip para quienes quieran intentarlo en casa: la mayoría de los dummy plug baratos solo tienen una EEPROM de 256 bytes, así que no alcanza para guardar todos los bloques de extensión EDID necesarios para alta resolución y alta tasa de refresco. Solo pueden simular hasta 1080p60; por ejemplo, es imposible hacer que se hagan pasar por un monitor 4k240. Además, algunos productos ya traen conectada la línea de protección contra escritura, así que para poder grabar datos hay que intervenirlos físicamente, por ejemplo soldando
  • La desventaja de estos dummy plug es que no manejan HDCP. Son excelentes para forzar salida de video en máquinas headless, pero no sirven para probar servicios de streaming que requieren HDCP. ¿Alguien conoce alguna solución de dummy plug HDMI que también pueda negociar HDCP? Es molesto tener que usar una TV como equipo de prueba cada vez. Una solución que encontré es un multiviewer HDMI, que negocia HDCP por separado en cada puerto
    • Yo uso un splitter HDMI: permite configurar un EDID preprogramado o aprender el EDID del monitor conectado al HDMI output 1, y mientras el splitter tenga alimentación, se comporta como si hubiera un monitor conectado aunque en realidad no lo haya. El splitter negocia HDCP con la PC o la consola y luego envía la señal al monitor real sin HDCP. Ver amazon.com
    • En Aliexpress también hay muchos anuncios de dispositivos que supuestamente terminan HDCP y hacen passthrough de HDMI; conviene tener cuidado antes de comprar
    • Quitar HDCP no es sencillo: básicamente se trata de degradar a HDCP 1.4 y conectar un dispositivo “compliant” que soporte la especificación 1.4 para usarlo como monitor dummy. Si necesitas algo superior a HDCP 1.4, es casi imposible
    • Tengo un sistema embebido con salida HDMI y quiero reemplazar la pantalla de arranque por otro stream HDMI, incluso una imagen estática serviría, pero no puedo tocar en absoluto el sistema embebido. Necesito una forma barata y robusta de cambiar solo la señal HDMI
    • Recomiendo probar un splitter HDMI de Amazon que en la práctica se anuncia como “HDCP stripper”
  • Me pregunto si existe algún lugar que ofrezca una colección de archivos binarios EDID, o algún programa para crearlos fácilmente. Yo uso un plug emulador de EDID programable, pero es difícil o imposible configurar directamente ciertas resoluciones o funciones específicas, por ejemplo resolución 8K con DSC. github.com/bsdhw/EDID tiene pocos datos de monitores nuevos. También intenté crearlos yo mismo con AnalogWay EDID Editor, pero el proceso fino de ajustar pequeñas diferencias entre modos soportados o definir prioridades no es nada fácil
    • Pasé por algo parecido: compré una soundbar 5.1ch barata que incluso soporta Dolby TrueHD, pero la conexión HDMI solo funciona con dispositivos que soportan eArc, es decir, TVs modernas. Si conecto una PC, solo puedo usar SPIDF o aux, con pérdida de calidad de audio. En vez de usar un extractor/splitter de audio, estoy intentando modificar el valor EDID de la PC para que la soundbar la reconozca como dispositivo eArc. Parece que todavía no hay una guía estricta sobre esto
  • También se pueden comprar dummy plug con función de passthrough, y son útiles cuando hay problemas de compatibilidad entre sistemas viejos y monitores de alta resolución. Por ejemplo, mi sistema AMD FX8350 de 2011 tiene problemas para sacar 4K, así que si conecto el plug en línea para forzarlo a 1080p, el monitor hace automáticamente upscale 2x y lo muestra limpio en 4K
    • También tengo algunos dispositivos passthrough; debí haber mencionado esa opción en el post. El mío es algo particular: puede leer y guardar el EDID del monitor y luego aplicarlo como override a otro monitor. Otra cosa interesante es que puede forzar que el monitor siempre aparezca como conectado. Uno de mis monitores causa problemas porque al apagarlo queda virtualmente como si se hubiera desconectado el cable, y el dispositivo passthrough lo resuelve perfectamente. El producto que uso es el HD-EWB de THWT
  • También se puede modificar con este método la información EDID almacenada en monitores comunes o en la pantalla de una laptop. Varias configuraciones del TCON también pueden cambiarse escribiendo en otras direcciones i2c. Ni siquiera hace falta una Raspberry Pi; se puede usar cualquier computadora
    • El autor del post recomienda una Pi, pero no es obligatoria. Si uno sigue el procedimiento tal cual desde una PC, podría terminar flasheando por error no el EDID sino hardware como la EEPROM SPD de un módulo de RAM
    • Los chips flash tienen pines separados para habilitar o deshabilitar escritura, y la mayoría de los monitores o TVs están cableados para bloquear la escritura del EDID. Supongo que solo los equipos baratos lo dejan libre. Si no hubiera protección, incluso ruido de voltaje durante una lectura podría disparar una escritura y arruinar la flash
    • Que se pueda modificar el EDID en la mayoría de los monitores implicaría una falla por parte del fabricante del hardware. Lo normal es recibir EEPROMs preprogramadas y ni siquiera dejar el pin de escritura en alto. No es común despachar equipos con escritura habilitada, aunque en la práctica a veces aparecen casos inesperados
  • ¿Por qué hace falta un dummy plug? Me pregunto si hay algo que no pueda resolverse por software; yo uso 18 pantallas virtuales sin ningún problema
    • Un caso es cuando manejo una máquina virtual de Windows desde mi PC con un software llamado Looking Glass. Tengo dos GPUs (AMD y NVidia), y la NVidia está en passthrough hacia la VM de Windows. Con Looking Glass, la salida de la GPU NVidia se muestra en una ventana del escritorio, así que puedo usar programas de Windows dentro de la VM sin pérdida de rendimiento (desde Windows 7 en adelante, sin aceleración GPU es difícil de usar). Pero la GPU NVidia solo funciona si hay una pantalla real conectada. Las GPUs Quadro permiten volcar el archivo EDID del monitor y usarlo como si siempre estuviera conectado, pero las GPUs de consumo normales no tienen esa función. En ese caso, el dummy plug es la única alternativa
    • Según la combinación de OS / GPU / driver, cambia muchísimo la libertad para configurar pantallas virtuales. Para agregar pantallas para OBS o streaming de juegos con Steam/Parsec, un dummy plug es mucho más simple. A veces funciona en Linux+Xorg+drivers open source o en Windows+Nvidia, pero en MacOS o Windows+GPU AMD/Intel casi nunca funciona
    • Uso un Chromebox modificado con Windows/Linux, y si no hay un dispositivo de video en el puerto HDMI, directamente no arranca. Sin dummy plug, quedo bloqueado
    • Un dummy plug es mucho más fácil y práctico para la gente común. Configurar solo por software un monitor virtual 4K para streaming remoto de juegos es muchísimo más complicado de lo que parece. Ver configurador 4k-sunshine
    • En el escritorio remoto de Raspberry Pi, el escritorio solo se renderiza si hay un monitor conectado físicamente, así que para un estudiante de posgrado con poco presupuesto y poco tiempo, un dummy plug es lo mejor
  • Me pregunto si habrá algún emulador EDID DisplayPort barato y útil para resolver problemas en entornos KVM y Linux. Comparado con la versión HDMI, son muchísimo más caros; casi conviene más comprar otro KVM
    • DisplayPort no usa simplemente una EEPROM sobre bus I2C, sino un bus AUX propio de DisplayPort, que es bastante más complejo. También es difícil encontrar documentación pública y, para conseguir referencias serias, hace falta afiliarse a VESA y firmar un NDA
  • El resultado del hex dump del USB ibus2 plug sigue a continuación con el EDID