EDID, and what a fuser does to a display stream
Before a monitor shows anything, it hands the source a small ROM describing itself. Everything a fuser does happens around that handshake.
By Lethal Hardware Desk
Connect a monitor and the source does not guess what it is connected to. It reads a small memory on the display over a two-wire bus. The display answers with five things: the manufacturer, the model, the timings it supports, its native resolution and its physical size. That record is EDID, and it is the single most under-explained component in the display path. Ever wondered why a fuser is a box with two inputs rather than a cable? The answer is in that handshake.
What EDID physically is
EDID is a data structure held in a small ROM inside the display, served over the Display Data Channel, which is I2C. The display answers at I2C address 0x50. The base block is 128 bytes and has been upwards-compatible across versions from 1.0 to 1.4. The ROM sits on its own bus, apart from the panel. So it can often be read while the display is powered off. That one detail explains a surprising amount of real-world behaviour.
| Bytes | Field | Contents |
|---|---|---|
| 0-7 | Header | A fixed eight-byte pattern. If this is wrong, the whole block is discarded. |
| 8-9 | Manufacturer ID | Three five-bit letters, giving the PNP vendor code. |
| 10-11 | Product code | A 16-bit model identifier chosen by the manufacturer. |
| 12-15 | Serial number | A 32-bit identifier. Not always unique, and not always populated. |
| 16-17 | Manufacture date | Week and year of manufacture. |
| 18-19 | EDID version | Version and revision of the structure itself. |
| 20-24 | Basic display parameters | Digital or analogue input, bit depth, physical size, gamma, features. |
| 25-34 | Chromaticity | Colour primaries and white point coordinates. |
| 35-53 | Established and standard timings | Bitmap of legacy modes at 35-37, then eight two-byte standard timing entries. |
| 54-125 | Detailed timing descriptors | Full timing definitions. The first one is conventionally the preferred mode. |
| 126 | Extension count | How many additional 128-byte extension blocks follow. |
| 127 | Checksum | The base block's bytes must sum to zero modulo 256. |
Base EDID block layout. Extension blocks carry the modern content: CTA-861 audio and video capability data, HDR metadata, and more.
The 128 bytes stopped being enough a long time ago. E-EDID adds extension blocks, also 128 bytes each, and that is where almost everything a current display needs to advertise now lives. VESA's DisplayID is the intended successor format. So a modern display's full capability record is a chain of blocks. A device that sits in the handshake has to handle the whole chain, not just the first block.
So what is a fuser doing
A video fuser sits between sources and a display and composites two signals onto one screen. Described in terms of the handshake, it has to do three separate jobs, and the third is the one that goes wrong.
- 1Terminate each input as a sink. To each source, the fuser must look like a display, which means serving an EDID of its own on each input.
- 2Drive the output as a source. It must read the real monitor's EDID and produce a signal that monitor accepts.
- 3Reconcile the two. Whatever EDID it serves upstream has to describe a mode it can really deliver downstream. Get that wrong and you see a picture on one input and a black screen on the other.
Most fuser problems are that reconciliation failing. A device that passes through the monitor's EDID unmodified will happily advertise a mode it cannot composite. A device that serves a conservative fixed EDID will work reliably and cap you below your panel's capability. Everything in between is a firmware decision by whoever built the box. That is why two fusers with the same specifications on paper behave differently on one monitor.
The likeliest failure is a fuser bought for a high-refresh panel. The source then offers only 60 Hz, or HDR drops out. That is almost always an EDID problem, not a bandwidth problem. The fuser is serving an EDID that does not advertise the mode, so the source never offers it. Before you replace hardware, read the EDID the source is actually seeing. Your GPU control panel, your OS display information or a dedicated EDID reader will all show it. The answer is usually visible in ninety seconds.
# Linux: read the raw EDID a connected display is serving
cat /sys/class/drm/card0-HDMI-A-1/edid > /tmp/display.edid
# Decode it to readable fields (edid-decode, from the v4l-utils project)
edid-decode /tmp/display.edid
# Windows: the monitor's EDID is cached under
# HKLM\SYSTEM\CurrentControlSet\Enum\DISPLAY
# and readable with any EDID viewer utility.What to check before blaming the box
- Read the EDID as seen by each source, not just the one that works. The difference between the two is the diagnosis.
- Confirm the cable is rated for the mode you want. An EDID advertising a mode the cable cannot carry produces intermittent dropout rather than a clean failure.
- Check whether the fuser has a fixed EDID, a pass-through mode, or a learned EDID it captured once and cached. Cached EDIDs survive monitor changes and cause confusing symptoms.
- Test the monitor directly from each source with the fuser removed, to establish what the panel and cable will do at all.
None of this is exotic. EDID is a 128-byte record held in a ROM on an I2C bus. The standard is public and anyone can read it. A fuser has to be a convincing display on one side and a well-behaved source on the other. Once you can read the record, problems that looked like bad hardware turn out to be a handshake you can inspect.
The guides behind this post
Second monitor, fuser or capture card: how to see the overlay
10 min readThe three options are a second monitor on the second PC, a fuser that mixes both PCs' video, and a capture card. The second monitor is the cheapest and easiest to wire, but only a fuser puts the overlay on your main screen.
Open the guideEDID: why a fuser has to look like a monitor
11 min readEDID is the block a display sends upstream listing its identity, supported timings and preferred mode. A fuser stands where the monitor used to, so it must present a valid EDID to each PC. A black screen or a capped refresh rate usually means that block is missing, generic or wrong.
Open the guideUsing a capture card instead of a fuser
10 min readA capture card feeds the game PC's HDMI output into the second PC, which draws the radar or ESP over that feed. It is the cheapest way to see game and overlay together, but you watch a delayed, usually downscaled copy of your screen.
Open the guideRead next
Questions about this? Ask on Discord
All posts