7 ms·
Modifying an HDMI dummy plug's EDID using a Raspberry Pi
- zdw 1y agoYou can also buy these with a passthrough, which is useful for older systems that balk at higher resolution monitors. I have a 2011 era AMD FX8350 system where the onboard 880G northbridge+video chipset doesn't output video over HDMI correctly with a 4k display. Hooking up one of these inline to tell it to send a 1080p image works great, which the monitor does a 2x integer upscale to 4k.
- dougg3 1y agoI also have a couple of passthroughs -- I probably should have mentioned them in the post as another option. The one I have is fancy -- it can read the EDID from a monitor, save it, and use it as an override for another monitor. Another awesome thing is it can force the monitor to always be detected. One of my monitors virtually unplugs itself when I shut it off, which causes a bunch of issues for me, and the passthrough completely solved it. The one I use is the HD-EWB by THWT.
- gadiyar 1y agoDoug, thanks for mentioning this. I didn’t realize pass-through ones existed. I’ll check out the one you have. Nice article btw.
- dougg3 1y agoThank you! Hopefully it works for you. I guess I should reword the way I said something in the previous message: when I said "it can force the monitor to always be detected", I really should have said "it forces the monitor to always be detected".
- avidiax 1y agoOne caveat of these dummy plugs is that they don't do HDCP. They handle the typical use case of forcing a specific resolution output for headless machines rather well, but fail for the use case that you need to run something that expects HDCP. This seems a good place to ask: does anyone know of a good solution like this HDMI dummy plug, but that negotiates HDCP? I need to test video streaming apps that require HDCP to play at full resolution, but it is inconvenient to have a full TV for every test. The one solution I've found is an HDMI multiviewer, which seems to negotiate HDCP to each port individually.
- mschuster91 1y agoTry one of these HDMI splitters that are more or less openly advertised as "HDCP strippers" on Amazon.
- deleted 1y ago[deleted]
- crazysim 1y agoI think multiviewer might have been a synonym for that. I wonder if the chips on these dummy plugs are powerful enough to hack in HDCP support though.
- aappleby 1y agoThe dummy plugs are literally just a 256-byte eeprom hooked to the I2C lines, there's nothing else inside the shell.
- dcan 1y agoTerminating HDCP is difficult, you’d have to downgrade it to HDCP 1.4 and then have a 1.4 ‘compliant’ (see: device on the end for it to be a dummy monitor. If you need anything newer than HDCP 1.4, it’s likely not possible.
- tverbeure 1y ago
- dishsoap 1y agoFun tip: the same process works to modify the edid stored on a typical monitor or laptop screen. Sometimes you can even change various settings on the tcon by writing to other i2c addresses. You also don't need a raspberry pi, any computer works.
- crtasm 1y agoThe author recommends using a Pi while noting it's not a requirement >If you attempt these commands on a PC, it’s possible that you could accidentally flash hardware that isn’t an EDID, like a RAM module’s SPD EEPROM.
- dishsoap 1y agoTrue, although the i2c controller that the dimms are connected to is an entirely separate device from the i2c controller in the gpu that's connected to the display ports. As long as you know what you're doing the risk is not significant.
- dougg3 1y agoYeah, if you are 100% confident you're using your GPU's I2C controller it's probably fine, but the reason I warned about it repeatedly in the post was because I stumbled upon this GitHub issue where two people accidentally flashed their RAM SPD: https://github.com/bulletmark/edid-rw/issues/5 https://github.com/bulletmark/edid-rw/issues/5
- netsharc 1y agoMakes me think of this anecdote from Linus Torvalds' officemate, from (1) > At one point, Linus had implemented device files in /dev, and wanted to dial up the university computer and debug his terminal emulation code again. So he starts his terminal emulator program and tells it to use /dev/hda. That should have been /dev/ttyS1. Oops. Now his master boot record started with "ATDT" and the university modem pool phone number. I think he implemented permission checking the following day. 1) https://liw.fi/linux-anecdotes/ https://liw.fi/linux-anecdotes/
- awaymazdacx5 1y agohex dump for the USB ibus2 plug extract is concatenated to EDID
- aappleby 1y agoMinor note for those wanting to try this at home - these cheap dummy plugs only have a 256 byte eeprom, which is not enough for storing the various extended EDID blocks needed to specify high-refresh high-resolution configs. If you just want 1080p60 they're fine, but you won't be able to simulate a 4k240 monitor with them. Also, some of them have the write-protect line pulled high (or low? don't remember) and you'll need a bit of surgery to actually write to them.
- klysm 1y agoWP high vs low might depend on which chip is used.
- 01100011 1y agoDoes anyone know of a cheap DisplayPort EDID emulator to fix issues with a KVM and linux? Last time I checked, they were much more expensive than HDMI, to the point where it would be better to buy a new KVM.
- crote 1y agoThe issue here is that DisplayPort doesn't use a basic EEPROM hooked up to an I2C bus for EDID. Instead it uses the high-speed DisplayPort-specific AUX bus, which is significantly more complicated to mess around with. Heck, I don't think you can even find any decent documentation about it without joining VESA and signing a bunch of NDAs.
- nyanpasu64 1y agoYou can override EDID in the kernel options (https://foosel.net/til/how-to-override-the-edid-data-of-a-monitor-under-linux/ https://foosel.net/til/how-to-override-the-edid-data-of-a-mo...), but I don't know if you want to add a virtual monitor (unsure if https://askubuntu.com/questions/453109/add-fake-display-when-no-monitor-is-plugged-in https://askubuntu.com/questions/453109/add-fake-display-when... works).
- mlukaszek 1y agoHave a look at https://github.com/DisplayLink/evdi https://github.com/DisplayLink/evdi and (shameless plug, toy project, be gentle) https://github.com/mlukaszek/evdipp https://github.com/mlukaszek/evdipp
- slipheen 1y agoRelatedly, is there a good archive of EDID binaries somewhere, or a better program to make them? I have an nice programmable EDID emulator plug, and I can clone my monitor and others, but there's some times there's a specific resolution or feature I want to set and I don't have a way to. (Like 8K with DSC, etc) I'm aware of https://github.com/bsdhw/EDID https://github.com/bsdhw/EDID but it's rather limited in terms of modern monitors. I've also written by own using https://www.analogway.com/products/aw-edid-editor https://www.analogway.com/products/aw-edid-editor but getting all the nuances of various modes, and setting preference order, etc, is rather difficult, at least for me :)
- 3abiton 1y agoI had a similar problem recently: I got this cheap 5.1 surround system soundbar that support up to Dolby TrueHD via HDMI. But here is the catch, it only works with eArc enabled devices (new gen TV). If you plug your PC you need to use SPIDF or aux which hamper the quality. One solution beside buying an audio ectractor/splitter is to fake the PC edid to be reconized as eARc by the soundbar. Still yet working on this, no strict guidelines existing unfortunately.
- nyanpasu64 1y agoI have (too much) experience in EDID editing. My suggestions: - AW EDID Editor as you mentioned. - CRU is a Windows-only tool, and will modify the EDID files it dumps from monitors (removing serial/etc. descriptors to make room for detailed resolutions), but will work. It does not run under Wine. - 010 Hex Editor has an EDID template. - On Linux you can install wxEDID from Flatpak (IIRC the distribution packages would crash in WxWidgets). I don't think it can create sections though. - v4l-utils has edid-decode (which can be used as a git diff textconv tool), though this does not help you encode EDID files. I found that HDMI EDIDs have a CEA extension block while DP EDIDs have a DisplayID extension block. I haven't done any work in multi-page EDIDs with over 256 bytes (and don't know what EEPROM chip you'd use to emulate them, nor the protocol or APIs to read and write them).
- _kb 1y agohttps://www.extron.com/product/software/edidmanager30 https://www.extron.com/product/software/edidmanager30 https://www1.kramerav.com/au/product/edid%20designer https://www1.kramerav.com/au/product/edid%20designer Both are free but not free to distribute. The Extron one may require you to be working on projects / orgs using their hardware.
- ashirviskas 1y agoWhy are dummy plugs a thing? What can you do with them that you cannot do in software? (asking as a person who had no issues with having 18 virtual displays and no dummies).
- dd_xplore 1y agoI have a moded chromebox(booting windows and linux), which refuses to boot without any video device attached to hdmi port. So I had to use a dummy plug.
- tshaddox 1y agoPresumably it’s for devices which do not have easily modifiable software.
- pfych 1y agoDummy plugs are a lot easier for most people. I added a fake 4K monitor to my desktop via software for remote game streaming, and it was a lot more complicated than I expected[^1]. [^1]: https://pfy.ch/programming/4k-sunshine.html https://pfy.ch/programming/4k-sunshine.html
- SXX 1y agoA lot of OS / GPU / driver combinations dont actually let you setup virtual displays with arbitrary settings. And you might want it for setting streaming with OBS or games streamings via Steam / Parsec / etc. Some years ago it's kind a worked for me on Linux with Xorg and open source drivers and Windows with Nvidia, but when it comes to MacOS or Windows+AMD or Intel GPU it simply doesn't work that well.
- cdg007 1y agobeen eyeing this kind of solution
- mrheosuper 1y agohdmi dummy plug is a hardware solution to solve a software problem that should not exist in first place at all.
- deleted 1y ago[deleted]
- HappMacDonald 1y agoThis sounds like a description of a huge number of extant hardware solutions, to me.
- 1vuio0pswjnm7 1y agoCan dummy plugs be used to change device fingerprinting
- Simon_O_Rourke 1y agoI don't get it - why do you need to spoof having a monitor connected for a Raspberry Pi? Surely they boot up fine regardless?
- Gigachad 1y agoDid you read the article? The RPI is just being used to reprogram the dummy plug.
- m000 1y agoI'm confused. I was expecting to see th plug hooked to the GPIO i2c pins, but just plugging it to the RPi appears to be enough. So, does HDMI directly expose an i2c interface?
- pm215 1y agoYep -- the DDC link which is the comms part of VGA/HDMI/DVI is basically an i2c link, and that's how the OS queries the EDID in normal operation. As the article notes, the rpi has an i2c controller wired up to those hdmi port pins, because it needs to be able to read the EDID over the DDC.