[Doug Brown] had a problem. He uses a dummy HDMI plug to fool a computer into thinking it has a monitor for when you want to run the computer headless. The dummy plug is a cheap device that fools the computer into thinking it has a monitor and, as such, has to send the Extended Display ID (EDID) to the computer. However, that means the plug pretends to be some kind of monitor. But what if you want it to pretend to be a different monitor?
The EDID is sent via I2C and, as you might expect, you can use the bus to reprogram the EEPROM on the dummy plug. [Doug] points out that you can easily get into trouble if you do this with, for example, a real monitor or if you pick the wrong I2C bus. So be careful.
In [Doug’s] case, he wanted to drop a 4K dummy plug to 1080p, but you could probably just as easily go the other way. After all, the plug itself couldn’t care less what kind of video you send it. It drops it all anyway.
Want to know more about HDMI? We can help out with that.
Note that this is not specific to the RPi. Various Linux GPU drivers expose the HDMI I2C interface as /dev/i2c-X. A comment on the linked blog post also mentions similar functionality on Windows.
This may in the last 10 years or it was a specific case but the 24inch screen I’m watching me currently type on was basically broken when it was rescued from an e-waste trash container.
TLDR: … and “repaired” over the DDC bus connected to a computer.
Turns out Samsung had programmed in a literal death count-down or something.
After a specific runtime the screen would just turn of as soon as it received a signal.
It would gladly display a “no cable” warning when disconnected but any display signal from a computer and the backlight switched off (or something similar).
Samsung was aware of the problem and had released a fix: A tool that re-programmed/flashed the display over the display cable (VGA or DVI I think) via DDC/i2c.
But apparently that only worked reliably with Intel GPUs. I tried it with an AMD one & I don’t remember what the person who rescued the screen used but I only found out this caveat thanks to a comment below a YT video about this display (SynMaster SA450).
So they can’t be used to control a giant robot when the pilot is unavailable or uncooperative?
You know how those teenagers can be, moody, uncooperative, having mental breakdowns…Asuka and Shinji being perfect examples….so I’m not the only one who thought of Evangelion.
Now with 100% less messy orange amino acid goop
Am I missing something? If I need to run a RPi headless, I just do it; no need for extra hardware. Even more, gpu_mem setting can be set to a minimum ( i.e. 16) so to Freeman RAM for applications
Yeah, not sure why one would want a dummy plug at high resolution vs low.
I’m not going to argue over the idea of the dummy plug, there’s enough corner cases that I see some potential value there.
But, I know you can get video out of the pi over Ethernet without a monitor attached anyway, so why not set up a virtual monitor instead?
Reading comprehension. It’s important.
He’s using the RPi to flash the EEPROM on the dummy plug, but he’s using the dummy plug with a different computer.
Ah, this was the missing piece that I was too impatient to spot. I was also confused; I have run a million pis headless, and never needed a fake HDMI adapter. Thanks
There is one use case:
If you run the Pi headless but need to connect a monitor without restarting. At least the old ones would check HDMI once at startup and then never again.
We use them at work for headless windows PCs running as a fleet of test boxes because apparently directx won’t let you use the GPU for graphics acceleration normally unless it thinks it can output to somewhere. (I believe directx can render headless, but the software expects an outputDevice, and rewriting it to not use one would defeat the purpose of testing how it will run on actual users’ PCs)
I think I am missing something too. A friend gave me a plug a couple of years ago now, but I never figured out what in the world I’d ever use it for. I never needed it to RDP/VNC into the RPI, nor do I need it to SSH (headless) into the box. Computer boots fine with or without a display attached.
Some devices get made without a monitor or tv hooked up. In my case when I use to use one, it was because certain parts of my GPU driver didn’t load if there was no monitor hooked up so GPU encoding didn’t work for my plex server. That’s long been fixed,but it’s an example I dealt with.
Some Windows / Mac software apparently doesn’t want to let you run truly headless. So a dummy plug + VNC works for running the software where RDP (even with RemoteFX) would fail. As for why you would want it to identify as supporting a specific resolution, that too can be explained as 1: a mode the software will work with “Your screen is 1280×720? but we designed for 1024×768 as the minimum resolution and we don’t let you size the window.” or the opposite “Your screen resolution is too high, you need to buy the $499 professional license!” etc. I’ve had to do EDID reprogramming on an HDMI to SDI converter because Apple is dumb, won’t let you choose 59.94Hz manually if the “display” says it can do 60Hz, and their OS stopped letting you edit the EDID overrides because “those are protected system files!”.
goughlui[dot]com/2019/06/02/review-teardown-generic-hdmi-cheater-dummy-plug-4k-uhd/
I find this far more comprehensible, due to the entire circuit and an editing suite being discussed.
I had never considered that these might be that easy to change. I have a couple of different flavors, purchased in a quest to get a specific machine to play nice at boot with a specific monitor via a an adapter and a KVM. It never worked, but I suspect that’s just as much because none of them were of an appropriate resolution (hard to find one in 4:3).
I’ll file this idea away for a day when I have the energy to drag the rack out and spend a while poking around behind it.
I thought we were talking about Evangelion dummy plugs lol
great project !
I’ve done this already when using a Steam Deck and it kept defaulting to the highest resolution, which was not available for my capture card, nor would let the system run well. So I cloned my own TV and flashed a few of the dummy plugs I received after backing up the dummy settings.