First, a quick comment and disclaimer here:
Kevin, both of my monitors are hooked up to a Thunderbolt dock with DP to USB-C cables. Are you saying this is an unsupported configuration with a M5 MacBook Pro because that’s not what CalDigit says.
To be perfectly honest, I don't know. This is an engineering support forum, and I initially responded because this started as a question/concern about how the low-level system was handling a particular display configuration. I've passed along some ideas and suggestions, but my area of expertise is ultimately about how our overall system works, not the specific details of any given machine configuration. Frankly, I can only carry around so many details in my head, and the specifics of all our device configurations are one of those details that I've had to let go of. In terms of testing, I'd recommend having one display plugged into HDMI and the other into USB, but that's simply because it's the simplest possible configuration, and there's no point worrying about other configurations until the simplest one works.
I have some other comments/suggestions below, but I'll put this up front as my most "practical" advice:
It's worth noting - I am dropping the monitor to "1920x1080 (low resolution) @ 30Hz" specifically to mitigate the risk that it's a bandwidth issue.
How did you actually do this? Just through the macOS settings, or have you tried doing this on the monitor itself and/or through ASUS DisplayWidget?
https://www.asus.com/content/monitor-software-osd-displaywidgetcenter/
I can't promise it will work, but I suspect reducing the resolution/refresh rate from the display side (so the Mac never "sees" 4K@240Hz) might get this working.
If that doesn't work, then the only other option I can think of would be to put something like a KVM switch, dongle, or older HDMI cable in "front" of one or both displays of force them to a lower resolution/refresh rate.
Unfortunately, the duplicate binary EDID issue is a known, common practice among monitor manufacturers - they'll often use the same binary EDID for a full batch of monitors to cut down on complexity or cost. Asus does not offer a tool that can let me patch this on the monitor, and I couldn't find a DIY solution that lets me patch it myself.
I'm less and less sure that the EDID is at issue here, primarily because this is working on other hardware (like the Mac Mini M4 Pro). Basically, there are two failures here that would "make sense". Namely:
-
The high-level system was relying on something like EDID and becoming confused due to the duplication. The problem is that the high-level system is common across "all" our systems, so I'd expect an issue like this to affect all hardware.
-
A low-level bus issue means that the hardware bus itself is having problems differentiating the hardware. An issue like this can be hardware-specific, since the bus architectures of our machines vary. However, the problem is that an issue like this would be confined to a given bus - so it could affect two monitors plugged into USB, but it would not happen if one was plugged into USB and the other plugged into HDMI.
The problem is that neither of those really fits your scenario. That is, it's machine-specific (which rules out #1) AND it's “persistent" across multiple, very different configurations.
That leads to here:
It's also worth repeating that when I disconnect one monitor, the other one is immediately recognized and connected, and it adopts the profile of the first monitor.
This is what happens when you plug “too many" displays into a Mac- as soon as one display is removed, it powers on the next display.
(i.e., it adopts the 1920x1080 @ 30Hz setting, which is non-standard for this monitor), which makes me think the system believes they're the same monitor.
I think you might get the same behavior if you had two totally different monitors with similar configurations. Basically, the system favors maintaining a "stable" overall configuration, so it uses the previous configuration instead of some older one.
Also, there's a difference between:
-
The system being unable to uniquely identify a specific monitor based on its metadata.
-
The system not being able to differentiate the device as they're connected.
To make an analogy, it's fairly easy to buy two identical cars and, if you're careful, make it IMPOSSIBLE for a person to tell which car is which when presented when looking at only one of those cars (case #1). However, parking those cars next to each other doesn't make you think there's only one car- there's the one on the left and the one on the right.
Something very similar to that plays out in how the kernel handles displays. A "display" is actually a complex series of drivers and communication channels between the kernel and user space, which means there can't really be a "confusion" about which monitor is which. The "display" is that complex communication channel, not the metadata (like EDID) that happens to be attached to that infrastructure.
__
Kevin Elliott
DTS Engineer, CoreOS/Hardware