Doug Brown Turns to a Raspberry Pi Zero to Rewrite an HDMI Dummy Plug’s EDID



Developer Doug Brown has dug deep into exactly how a monitor makes its capabilities known — in order, ironically enough, to not use a monitor at all.

“I recently found myself needing to change the monitor that a cheap HDMI ‘dummy plug’ pretended to be,” Brown explains. “It was a random one I had bought on Amazon several years ago that acted as a 4k monitor, and I needed it to be something simpler that didn’t support a 4k resolution.”

So-called “dummy plugs” are tiny and very simple electronic devices thatinsert into a device’s video output and pretend to be a monitor. In the days of analog signals, they might have been something as basic as a few crossed wires and a resistor or two; in these days of digital devices, they’re a little more complex — transmitting a data package known as Extended Display Identification Data, or EDID.

These devices are frequently used for “headless” operation, where a gadget needs to think there is a monitor attached in order to work properly but will be accessed using some form of remote desktop session. In Brown’s case, the HDMI dummy plug he had worked fine — except for the fact that it reported too high a resolution, causing the virtual desktop to exceed his desired resolution. The solution: reprogramming the device to report lower capabilities.

“Conveniently,” Brown explains, “I found that my Raspberry Pi Zero has an I2C controller wired to the correct pins on its HDMI port.” Using this, Brown was able to dump the current EDID from the dummy plug then dump another from a capture card with the capabilities he was attempting to emulate. “Finally, I unplugged the capture device and connected the dummy plug again,” Brown continues, “and wrote the capture device’s EDID to it.”

The result: a dummy plug that no longer reports itself as a 4k-capable monitor, but instead as a clone of Brown’s HDMI capture card. “I want to make it clear that it may be possible to screw up a monitor if you follow these instructions while a real monitor is plugged in and it doesn’t have its EDID protected,” Brown notes. “Also, make sure you are confident you’re on the correct I2C bus! Always read the EDID and parse it first to make sure it actually contains an EDID before you attempt a write.”

The process is documented in full on Brown’s website, complete with a short shell script for carrying out the reprogramming itself.

By admin

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *