Since I updated from macOS 27.0.1 to 27.2 (26B123), my second monitor stopped working on a Mac mini M4 Pro.
It is a Dell SE2726HG on a USB-C to HDMI adapter. My LG on the built-in HDMI port still works.
Symptoms:
- The Dell flickers. It disconnects and reconnects about once per second.
- System Settings shows it as "Display", 12 inch, 1280x720 at 50 Hz.
- Every resolution change is refused, also for the other monitor.
- A restart, a replug, or a lower refresh rate on the other monitor does not help.
What the logs show:
- macOS cannot read the monitor's EDID through the adapter. IOAVServiceCopyEDID returns 0xe00002c9 (internal error), and the framebuffer has an all-zero EDID.
- Without an EDID, the kernel gives the display no display pipe: "AED: validate_or_set_ex: fb 2 rejecting request, exceeds full dual-pipe allocation (w 1280 vs 0 ...)" and "skipping display with null info".
- In 47 minutes, the log had 379 hotplug "out" events.
Workaround (no extra hardware, no paid app):
I injected a normal 1920x1080 EDID at runtime with the private IOKit call IOAVServiceSetVirtualEDIDMode(service, 1, edid), then IODPDeviceSetUpdated(device, 1). The monitor then comes up with its correct name at 1920x1080, with zero disconnects. The override is lost on reboot, sleep, or replug, so a LaunchAgent re-applies it every 5 seconds when the EDID read fails. This is the same approach as these projects:
- https://gist.github.com/danii1/99fa5f849a4d42807418259abfbf03d5
- https://github.com/owomocha/macos-360hz-unlock
BetterDisplay Pro can also apply a custom EDID.