2 pontos por GN⁺ 2025-06-16 | 1 comentários | Compartilhar no WhatsApp
  • Apresenta uma forma simples de alterar o EDID de um plugue dummy HDMI usando um Raspberry Pi
  • O plugue dummy serve para fazer o equipamento reconhecer que há um monitor conectado, mesmo sem um dispositivo de saída real
  • É possível copiar as informações de EDID de um dispositivo de captura 1080p, para que o plugue não apareça como um monitor 4K
  • Com apenas o controlador I2C do Raspberry Pi e ferramentas padrão do Linux, é possível ler e gravar a EEPROM do plugue
  • Em todo o processo, é essencial escolher o barramento I2C correto e fazer backup para evitar danos ao dispositivo

Visão geral do plugue dummy e do EDID

  • Um plugue dummy é um pequeno dispositivo em formato de dongle que, ao ser conectado a uma porta HDMI ou DVI, não faz processamento real de vídeo, mas usa um circuito mínimo para que o equipamento detecte a conexão de um monitor
  • Há um circuito com um chip EEPROM que imita o EDID (Extended Display Identification Data) de um monitor, além de resistores pull-up ligados ao +5V
  • É útil em servidores headless, dispositivos sem supervisão e outros cenários em que se deseja que o sistema operacional (SO) considere que há um display presente

Objetivo e abordagem

  • Compartilha a experiência de querer alterar o EDID de um plugue dummy HDMI com suporte a 4K para que fosse reconhecido como um simples dispositivo 1080p
  • O objetivo era substituir o EDID interno do plugue dummy pelas mesmas informações de EDID de um dispositivo de captura HDMI com suporte a 1080p
  • Não havia certeza de que seria possível gravar na EEPROM do plugue dummy, mas valia a tentativa
  • A porta HDMI do Raspberry Pi Zero está conectada ao controlador I2C, o que facilita o acesso

Cuidados de segurança e início do procedimento

  • Se esse processo for feito com um monitor real conectado, há risco de dano em monitores sem proteção de EDID
  • É necessário realizar o procedimento apenas em dispositivos como um plugue dummy, que possam ser danificados sem maiores consequências
  • Além disso, é indispensável usar o barramento I2C correto e, antes de gravar, fazer a leitura e a verificação prévias para confirmar que o EDID está correto

Configuração do ambiente e preparação

  • Após instalar o Raspberry Pi OS Lite, ajustar as configurações com sudo raspi-config
  • Instalar as ferramentas I2C com sudo apt install i2c-tools (no Pi Zero é necessária rede; isso pode ser contornado com um adaptador USB-Ethernet ou chroot no cartão SD)
  • É necessário usar um adaptador HDMI-para-Mini-HDMI

Detecção e backup da EEPROM do EDID

  • No Raspberry Pi Zero, usa-se o barramento I2C 2 (em outros modelos de Pi, o número pode ser diferente)
  • Com o comando i2cdetect, confirmar que o dispositivo é reconhecido no endereço 0x50, que é o endereço padrão da EEPROM de EDID
  • Curiosamente, os endereços 0x51 a 0x57 também respondem, indicando uma forma em que múltiplos blocos de EDID estão armazenados
  • Fazer backup do EDID original do plugue dummy com get-edid, lendo duas vezes e comparando para verificar consistência
  • Exibir o EDID em hexadecimal com od -v -An -txC e validar em edidreader.com

Extração do EDID do dispositivo de captura e gravação no plugue

  • Desconectar o plugue dummy e conectar o dispositivo de captura HDMI ao Pi
  • Extrair o EDID do dispositivo de captura da mesma forma e confirmar novamente sua validade
  • Reconectar o plugue dummy e gravar o EDID do dispositivo de captura na EEPROM
  • A gravação é feita byte a byte com o comando i2cset, algo possível apenas com ferramentas padrão do Linux e bash

Verificação final e resultado

  • Após o término, extrair novamente o EDID do plugue dummy e compará-lo com o arquivo original usando diff para confirmar que o conteúdo corresponde
  • Ao conectar ao computador de teste, ele passa a ser reconhecido não como o monitor 4K original, mas como um dispositivo de captura HDMI
  • A substituição do EDID do plugue dummy foi concluída com sucesso

Encerramento e dicas de uso

  • Com o mesmo procedimento, também é possível transformar um plugue dummy 1080p antigo em um dispositivo com suporte a 4K
  • Recomenda-se fazer a gravação via I2C somente no Raspberry Pi; tentar fazer isso diretamente em um PC comum pode causar danos ao hardware
  • Se você precisa desse tipo de funcionalidade, este procedimento pode ser útil

1 comentários

 
GN⁺ 2025-06-16
Comentários do Hacker News
  • Queria compartilhar uma dica para quem quiser tentar isso em casa: a maioria dos dummy plugs baratos tem apenas EEPROM de 256 bytes, então não há espaço suficiente para armazenar todos os blocos de extensão EDID necessários para alta resolução e alta taxa de atualização. Dá para simular só até 1080p60; por exemplo, é impossível imitar um monitor 4k240. E alguns produtos já vêm com a linha de write-protect conectada, então só dá para gravar dados mexendo fisicamente no hardware, como com solda
  • A desvantagem desses dummy plugs é que eles não lidam com HDCP. São ótimos para forçar saída de vídeo em máquinas headless, mas não servem para testar serviços de streaming que exigem HDCP. Alguém conhece alguma solução de HDMI dummy plug que também negocie HDCP? É trabalhoso usar uma TV como equipamento de teste toda vez. Uma solução que encontrei foi um HDMI multiviewer, que negocia HDCP individualmente em cada porta
    • Eu uso um splitter HDMI: dá para configurar um EDID pré-programado ou aprender o EDID do monitor conectado à HDMI output 1, e, desde que o splitter esteja energizado, ele funciona como se houvesse um monitor conectado mesmo sem um monitor real. O splitter negocia HDCP com o PC ou console e depois envia o sinal ao monitor real sem HDCP; veja amazon.com
    • No Aliexpress também há muitos anúncios de dispositivos que encerram o HDCP e fazem passthrough do HDMI; vale tomar cuidado antes de comprar
    • Remover HDCP não é fácil: a abordagem é fazer downgrade para HDCP 1.4 e conectar um dispositivo “compliant” que suporte a especificação 1.4 para servir como monitor dummy. Se você precisar de HDCP 1.4 ou superior, é praticamente impossível
    • Tenho um sistema embarcado com saída HDMI e quero trocar a tela de boot por outro stream HDMI (até uma imagem estática serve), sem poder mexer no sistema embarcado de jeito nenhum. Preciso de uma forma barata e robusta de trocar apenas o sinal HDMI
    • Recomendo experimentar splitters HDMI da Amazon anunciados, na prática, como “HDCP strippers”
  • Alguém sabe de algum lugar que ofereça uma coleção de arquivos binários de EDID, ou de algum programa que facilite criá-los? Eu uso um plug emulador de EDID programável, mas é difícil ou impossível configurar manualmente certas resoluções ou recursos específicos (por exemplo, resolução 8K com DSC). O github.com/bsdhw/EDID tem poucos dados de monitores mais novos. Também tentei criar EDIDs por conta própria com o AnalogWay EDID Editor, mas esse processo detalhado de diferenças sutis entre modos suportados e definição de prioridades não é nada simples
    • Passei por algo parecido: comprei uma soundbar 5.1ch barata com suporte até Dolby TrueHD, mas a conexão HDMI só funciona com dispositivos com eArc (TVs mais novas). Se conecto ao PC, tenho que usar SPDIF ou aux, o que reduz a qualidade. Em vez de usar extrator/splitter de áudio, estou tentando manipular o valor de EDID do PC para que a soundbar reconheça um dispositivo eArc; pelo visto ainda não existe uma diretriz rígida sobre isso
  • Também dá para comprar dummy plugs com passthrough, o que é útil quando há problemas de compatibilidade entre sistemas antigos e monitores de alta resolução. Por exemplo, meu sistema AMD FX8350 de 2011 tem problemas com saída 4K; se eu colocar um plug inline para forçar 1080p, o monitor faz upscale 2x automaticamente e exibe em 4K de forma limpa
    • Também tenho alguns dispositivos passthrough; eu deveria ter mencionado essa opção no post. O meu é meio peculiar: ele lê e salva o EDID do monitor e depois permite aplicar esse valor como override em outro monitor. Outra coisa curiosa é que ele pode forçar o sistema a achar que o monitor está sempre conectado. Um dos meus monitores causa problemas porque, ao desligá-lo, o sistema entende isso como um desplugue virtual; o dispositivo passthrough resolveu isso perfeitamente. O produto que uso é o HD-EWB da THWT
  • Também é possível modificar por esse método as informações de EDID armazenadas em monitores comuns ou na tela de notebooks. Várias configurações do TCON também podem ser alteradas gravando em outros endereços i2c. Nem precisa de Raspberry Pi; qualquer computador serve
    • O autor do texto recomenda o Pi, mas ele não é obrigatório. Se você seguir o procedimento diretamente no PC, porém, pode acabar gravando por engano não o EDID, mas outro hardware, como a EEPROM SPD de módulos de RAM
    • Chips flash têm pinos separados para habilitar/desabilitar escrita, e a maioria dos monitores ou TVs é cabeada para bloquear gravação no EDID. Suspeito que só os modelos baratos deixam isso solto. Se não houver proteção, até ruído de tensão durante leitura pode disparar uma gravação e corromper a flash
    • O fato de ser possível modificar o EDID na maioria dos monitores indica uma falha dos fabricantes de hardware. O normal é receber EEPROMs pré-programadas e nunca deixar o pino de escrita em high. Não é comum enviar o produto com escrita habilitada, embora na prática apareçam casos inesperados
  • Por que alguém precisaria de um dummy plug? Queria entender se existe algo que o software não consegue resolver; eu uso 18 monitores virtuais por software sem problema algum
    • Um caso é no meu PC, ao usar um software chamado Looking Glass para operar uma máquina virtual Windows. Tenho duas GPUs (AMD e NVidia), e a NVidia é passada para a VM Windows. Com o Looking Glass, a saída da GPU NVidia aparece em uma janela no desktop, então posso usar programas do Windows na VM sem perda de desempenho (desde o Windows 7 ficou difícil usar sem aceleração por GPU). Só que a GPU NVidia só funciona se houver um display real conectado. As GPUs Quadro permitem despejar o arquivo EDID do monitor e fingir que ele está sempre conectado, mas GPUs comuns de consumidor não têm essa função. Nesses casos, o dummy plug é a única alternativa
    • A liberdade para configurar displays virtuais varia muito conforme a combinação de OS / GPU / driver. Para adicionar um display para OBS ou streaming de jogos com Steam/Parsec, o dummy plug é bem mais simples. Em Linux+Xorg+drivers open source ou Windows+Nvidia às vezes funciona, mas em MacOS ou Windows+GPUs AMD/Intel quase nunca
    • Uso um Chromebox modificado com Windows/Linux, e se não houver um dispositivo de vídeo na porta HDMI ele nem inicializa. Sem dummy plug, fica bloqueado
    • Dummy plugs são muito mais fáceis e práticos para o usuário comum. Configurar só por software um monitor virtual 4K para streaming remoto de jogos é absurdamente complicado configurador 4k-sunshine
    • No desktop remoto do Raspberry Pi, a área de trabalho só é renderizada se houver um monitor fisicamente conectado; para um pós-graduando sem muito orçamento nem tempo, um dummy plug é a melhor solução
  • Queria saber se existe algum emulador de EDID DisplayPort barato e decente para resolver problemas com KVM e Linux. Em comparação com a versão HDMI, é tão caro que quase compensa mais comprar outro KVM
    • No DisplayPort, não se trata apenas de gravar uma EEPROM em barramento I2C; ele usa o barramento AUX específico do DisplayPort, que é muito mais complexo. Também é difícil achar documentação pública e, para conseguir referências adequadas, normalmente é preciso se associar à VESA e assinar NDA
  • O resultado do hex dump do USB ibus2 plug está anexado ao EDID