Weird monitor bugs people sent me in the last 5 years
notes.alinpanaitiu.com
notes.alinpanaitiu.com
Apparently it's a known issue at Dell: [3]
>Surprisingly, we have also seen this issue connected to gas lift office chairs. When people stand or sit on gas lift chairs, they can generate an EMI spike which is picked up on the video cables, causing a loss of sync. If you have users complaining about displays randomly flickering it could actually be connected to people sitting on gas lift chairs. Again swapping video cables, especially for ones with magnetic ferrite ring on the cable, can eliminate this problem. There is even a white paper about this issue.
[1] https://www.youtube.com/watch?v=voW5kEI7JKE
[2] https://www.youtube.com/watch?v=D6pY4t0k1hk
[3] https://support.displaylink.com/knowledgebase/articles/73861...
A dangling bag of coins is a famous cheap EMC test for products. All of this sounds like monitor vendors cheaped out on their EMC and need to have their ESD and Immunity certifications reevaluated....
Or maybe it's just the fact that they were dumb enough to ship an I²C interface over a cable as part of the industry spec. Never ship I²C off-board or this kind of crap happens.
We don't know who produced these cables nor where they came from. I'd wager it's mostly an issue with cheaper products, and you often don't get any cables if you're buying a cheap monitor, so they're likely from a third party.
Because part of hardware engineering is making devices that function even in poor environments, and that tolerate foreseeable misuse. (This is a major part of medical device development, for example.) Cable shielding is always iffy on consumer-grade cables. If other vendors can produce monitors that tolerate its absence, because that seems to be reasonably common!, then if you can't, your products will be seen as inferior. Exactly as is happening here.
Also dont trust all electricians. Lots of them just try and error, nod in terror. Some do not even speak the language of the e-plan they are cabling up.
So imagine all the problems you could have, and multiply it by variable frequency cable that thanks to increases in resolution has to run way higher clocks than it used to, combined with being cheapest possible design, and that unlike it's analog origins an error in bitstream can now crash the connection instead of just causing temporarily off-colour area.
Well, I guess this explains some of my "why the fuck is this even an option" when trying to make a TV just display the signal as it was received.
Actually never heard about this before.
What is the trick? It cannot just be to shake a bag of coins next to the monitor?
This might explain why one of my monitors with a 2m long HDMI cable every so often fails to turn on after waking up from sleep mode
I've spent many frustrated minutes trying to identify if me moving was causing a cable to be pulled or such!
On the subject of interference, this is why a good amount of shop equipment doesn't use USB. Especially for vinyl cutters, serial/RS-232 tend to have less issues than USB. USB tends to be more sensitive to the static buildup caused by moving and cutting vinyl.
I had a motherboard (an ASUS ROG Strix B550-E) that would frequently freeze when I stood up from my chair. I always figured it was something to do with static electricity discharging when I stood up, but no amount of fiddling with grounding helped. An EMI pulse from the gas lift getting picked up somewhere insufficiently shielded would explain it.
Interestingly, I also have a Steelcase Leap chair, as mentioned by someone else in this thread; maybe the gas lift they use is particularly prone to this? Other people also complained about freezes with this motherboard model, so perhaps the combination was particularly bad.
There’s lightning protection etc. on the circuit.
It’s worked fine for several years.
Last week, we had a huge electrical storm - and every time lightning flashed within 8km, the switch at the cabin would reboot. Unplugged, stuck a scope on the Ethernet cable - and lo and behold, 30V+ flashes every time lightning struck anywhere even remotely nearby. The cable is acting like a great big antenna.
I need it to be able to deliver PoE, which is why I went for Ethernet - but yeah, probably going to replace it with STP, although not sure that’s going to stop lightning induction in the earth/shielding. Other option is splashing out for SWA STP, which should definitely do the job.
For the other run, where I don’t need power, I’m using 802.11n with a pair of Yagis to go about a kilometre. No problems except the usual headaches around layers and discovery a Wi-Fi bridge provides.
It hadn't occurred to me that cheap and excessively long HDMI cable might be a contributing factor to my AV receiver playing up.
I've replaced the cable with a much shorter one with built in ferrites both ends and haven't noticed the problems I was having.
But still, a lot less frustrating than waking up at 6 AM for a Zoom call with an overseas company I’d be working. I prefer angry users of my own app over demanding (and often not knowing what exactly they demand) bosses.
Sigh.
I feel the pain. Stay strong.
https://label.live/faqs/design/how-do-i-setup-a-custom-label...
I’m embedded in an operational unit and occasionally run up to limitations or bugs of the systems we use. It’s tempting to say “I can build a workaround in a day” but then accounting for edge cases, continued maintenance if/when patches/updates come along… I learned that eventually I’d be bogged down in maintaining bandaids and workarounds. Only truly important things get that treatment these days. I’ve seen the chaos that occurs when someone who’s gone too far down that path leaves the organization and central IT has no resources to support things and there’s no formal knowledge transfer because it was all essentially out of scope.
Fun.
Anyways, interesting post. It's always fun to discover how much hardware is just broken and doesn't actually correctly implement the protocols or features it's supposed to implement.
If that happens, then they’re just assigning “ID”s.
Or "serial numbers," as it were.
The concoction of UUIDs that are neither universal nor unique happens in software, but the cause is the serial numbers colliding.
Or in this case, a constant number…
I’ve seen similar problems with inexpensive Chinese wifi modules all shipping with an identical MAC address. Mostly you can Google up the method required to reflash them (or worst case, I’ve been out a dollar or two because it usually the ultra cheap things this happens on).
Annoy a thousand developers / power users.
Leading to:
Util developer gets 100 emails.
Leading to:
HN post gets 100k views.
Leading to:
One of the readers proverbially punch some faces.
See: good design!
I had this exact same issue, two displays, always connected to the same TB3 Dock, and they would randomly get re-assigned after wake-up. Which in my case was doubly irritating, since one of those is in portrait mode, so "fixing it" required tilting my head to be able to navigate the mouse correctly.
There's a small CLI utility called `displayplacer`[1], that basically fixed this for me. I don't... really know what exact EDID fields or whatever metadata it's reading, but after I used it once to "save" the correct orientation/placement, I could reset it to the "correct" one every time after that. Highly recommended if that's something you're struggling with.
This should be prone to the same issue.
Your problem might actually be caused by a timing bug, where the EDID is not fully available in the first few milliseconds of the reconnection, and the system doesn't reconcile after it becomes available.
displayplacer will get the full picture because it's always run a long time after the connection has stabilized.
I can't be certain, but I noticed some slow monitors/hubs do have that timing issue by observing the zero/null values for UUID in The Monitor Database: https://db.lunar.fyi
I wish a company like Framework or system76 would get into monitors and open source their monitors’ electronics and firmware so at the very least, these issues could be fixed by the community.
I'm surprised that the OS doesn't have a safeguards for this and isn't retrying the read the EDID after it sees a "blank" one after wake-up, but the display controllers in Mx chips are stupid complicated already it seems.
I don’t think there’s any way for the OS to know that there’s a more complete EDID if it tries again later.
That’s also my theory on why the Intel/AMD/NVidia GPUs feel more stable than the Apple Silicon ones: they had years of dealing with these edge cases and probably adding all the workarounds they could think of, while Apple is still catching up.
* Which btw is the kind of rabbit hole that belongs in this article. That was a high-end CalDigit dock, so seeing KPs was surprising. These monitors even had USB-C inputs, but connecting both at once wouldn't work with this MBP model in particular due to a known incompatibility with its dedicated GPU. Older, newer, or lower-end MBPs were fine. Hence the dock adapting to DP. Another funny quirk is I was able to connect my Mac twice to the same screen (via USB-C and DP), and it thought they were separate screens.
I think the common case of “multiple HDMI ports” is one where users plug in USB-C dongles to magically create them.
In that case, do the HDMI ports disappear from the registry, too, so that you can’t identify ports across standby?
Even distinguishing a built-in HDMI port from one in a USB-C dongle may be difficult if the built-in one secretly is connected over USB-C.
Certainly, a bus scan has to happen to detect whether devices (including USB hubs) got unplugged or plugged in during standby, so if that scanning isn’t guaranteed to always produce the same result (e.g. because of jitter in the timing when various devices come online), I doubt that’s guaranteed to produce 100% identical information.
It’s a question, though. I don’t know enough of how this work to definitely answer that.
As someone with a monitor that's prone to blacking out like this (not due to Lunar) and was at one point convinced that the monitor got bricked: the key is waiting ~5 minutes before plugging the power back in. A quick unplug-plug in a hurry might not do it. You need to wait for the internal capacitors to discharge to the point where the controller gets properly reset.
That's also the point of the LEDs you see on power bricks. After unplugging, the LED uses up the capacitor current to discharge them faster and also serves as a visual indicator to know when it's safe to plug back the cable.
Only unplugging everything seemed to work.
Happened maybe 5 times in the many years ive owned it
There's a whole area of electronics design related to this (unfortunately).
On this monitor I can just unplug and plug the monitor back in and it immediately works again, but its an annoying enough issue and it happens frequently enough that I just stopped using DDC control for it altogether.
You're probably in a much better spot, SaaS is still the best way to make money as a developer, if you don't have to provide too much support.
Customer: Your platform doesn't work, when we do this, A happens
Me: Hm, we don't have that feature, but I understand your use-case. We could deliver this new feature by tomorrow, but using it that way also inherently means B would happen in such and such cases, so just want to make sure that's what you want?
Customer: Let us know when the bug has been fixed, it's urgent and we're losing money because of you (they had 1 month free trial)
Me:: It's not a bu...okay, we will
Me: * works all night, builds a new feature, fully polished, notifies customer
Customer after 2 days: Yet ANOTHER bug with your unstable software!! * describes B
I guess these vocal and demanding people are everywhere, no matter how easy and intuitive the software is.
I just had someone ask for a new feature and a discount on my $6 app a few minutes ago.
We have to come to terms that this is part of the job where we have such a close connection to the people that use our product.
Whelp!
I (have learned to) love working with hardware. There’s a specific tension between hardware developers (firmware) and software that runs closer to the user. I used to do a lot more consulting - building mobile apps that talked to BLE sensors, like refrigeration controllers, etc, and almost always the end user was a technician.
Now, I’m making apps specifically for non-technical users. I really love the challenge.
To come up with my app idea (and business) I tried to think about the worst possible hardware on the planet and thought label printers.
Turns out that the hardware is almost universally pretty good, but there was no software that worked for both Mac and windows, worked independent of device drivers, was easy to use, had modern conveniences, and didn’t cost hundreds of dollars.
At the same time my competitors are extracting as much value from the label printer landscape as possible, with a wake of irked users behind them. RFID in the label roll? Yep. Jacked up pricing and mandatory support subscriptions. Yep. More proprietary everything… yep.
I’m always looking for new markets and ideas. A year ago, when a competitor released a new printer with RFID, I got call after call asking me to bundle a printer with my app. At the time I didn’t find a compelling printer on the market … nothing that would set my business apart.
But then I found a Chinese manufacturer and read Hardware Hacker, and now I’ve got these awesome printers for sale, bundled with my design app! I’m competing in the 4” wide 300 DPI direct-thermal market. I’m not marketing this as a shipping label printer (that’s a solved problem), instead, it’s for making custom designed labels, usually with barcodes, usually with data from an external source.
The printer: https://mydpi.com
The book: https://www.adafruit.com/product/3465
Very true, it makes me wonder just how unreliable hardware is and how many crashes are caused by random EMI like cosmic rays, or close proximity of other devices.
My previous laptop (an HP EliteBook, the exact model escapes me at the moment) had an issue with Linux drivers where it would sometimes crash. When it crashed, the laptop's screen would quickly flash bright-dark-bright-dark... To my eye it looked like one garbage frame with mostly bright pixels and one frame with mostly dark pixels.
Nothing weird so far - just a driver bug right? The weird thing was that when I rebooted the laptop after such a crash, the screen brightness would still slightly, but visibly blink in the same pattern, while the monitor was showing normal boot screen and later the login and desktop. The flashing would get less and less noticeable and kind of ring out by itself after a few minutes. After that the monitor was just working as normal.
I can't think of a good reason why the monitor would keep blinking like that after a reboot. The best explanation I had was that perhaps some kind of adaptive algorithm for image postprocessing in the LCD driver had rolled off into an extreme and needed a while to get back to normal parameters. But it seems unlikely anything like that would have time constants in the range of minutes. The other possibility I thought about was that the blinking after a reboot was just a illusion created by my eyes, but I found that unlikely. I never saw anything similar.
Not sure if you know that, but the liquid crystal that creates the image and colors is very dark by itself, so behind the crystal panel there's another panel filled with bright white LEDs to project the image into your eyes.
Those LEDs can draw a lot of power and get hot, so they need proper passive cooling. In laptops that's usually achieved by gluing the LEDs to the lid and making the whole lid a massive heatsink (if it's a metal lid).
It's possible that your backlight panel was overheating for some reason, or maybe it was just drawing more power than the source (old battery?) could provide. That would explain the continous blinking/ringing until the power/temperature stabilized, but it's really just a guess.
It doesn't really sound like a software error anyway.
I think I was using some utility to force the resolution down from retina levels for some emulated game we wanted to play. Something went wrong and the top ~1/5 of the screen started flickering insanely quickly.
We restarted the laptop and the flickering continued. Then I think we turned it off, left it off for a while, then turned it back on. Still flickering.
In the end we left the laptop on for a couple hours and it slowly became less flickery until it was eventually entirely back to normal.
Super weird. I was so confused and my friend was so nice about it all that I didn't even think to take a video or document any exact stuff we tried aha.
I think it's related to LCD inversion (http://www.lagom.nl/lcd-test/inversion.php#clickshow).
(Even more annoying is when the information isn't deleted, but it's ignored. The Nvidia control panel knows which port each monitor is connected to, and could store the monitor arrangement by port number. Also appreciated would be some way of saying "this monitor is going away for just a second, just keep sending a signal even though you know I can't see it". I have a monitor that likes to hard crash every so often and has to be unplugged, this results in seconds of software freaking out when I'd rather not tell the OS or the apps about the loss of a screen and a switch of "primary display" to some other monitor. Usually a reboot is necessary to get everything's state correct again. Silly.)
It also causes weirdness like "my scrollwheel scrolls in one direction when plugged into my laptop and the other direction if I plug it into the USB hub in my keyboard."
It stayed after reboot, mode changes, OS changes, retriggers of the bug etc. etc. etc. to the point where it did not make sense at all how the pseudoimage stayed past power cycles and everything else I could imagine. I briefly, and quite seriously, questioned my sanity trying to figure out what was going on.
Eventually it just went away. Some firmware bug got an image stuck in memory or something, but man it was weird.
I have run into not-so-funny situations due to capacitors. See https://dynamicproxy.livejournal.com/46862.html
When the bottom part of the monitor renders something darker (say a Sublime Text window), it also displays a ghost image of a lighter previous image (like the browser window with a white page).
It started about a year ago, and every time it happens, the bottom part of the panel is very hot to the touch.
After letting a fan blow over that part to cool down the LEDs behind, the problem went away.
Which leads me to think this is a hardware problem, and the panel is giving up on me.
That means that your laptop can corrupt the EDID.
Windows and MacOS actually ship with a database of 'corrected EDIDs', in which they look up the EDID of your monitor and use instead the one in the DB, because they know the original is broken. TBF, I think this information is provided by the manufacturer.
If you don't need DDC for anything else, the monitor-swapping issue could be fixed by wiring a 4kb I2C flash chip to the DDC pins of the hdmi cable (in place of the monitor, and writing it with a copy of the EDID, with the serial number incremented. A lot of work though. Maybe there is a place for someone to make an HDMI cable with a small embedded microcontroller, for fixing this and other DDC issues.
One of the points where MacOS struggles when compared to other OSes is, in my opinion, multi monitor support.
I'm not sure why, but it seems to me that Apple decided that multi-monitor was not a very important use case and it got de-prioritised (maybe they wanted to push users towards one single, large monitor?), as a result the multi-monitor experience on Mac is not on par with other desktop environments.
I'm not saying that the bugs in the post could not happen on other desktop environments, or that other desktop environments don't have bugs of their own, but in general it seems to me that on several Linux DEs and on Windows, I can get a smoother multi-monitor experience than on MacOS.
What more do windows and Linux (kde/gnome) have?
My other laptop doesn't have an nVidia GPU and runs Sway/Wayland, which doesn't seem to have this issue.
If anyone knows how to solve this I'd be eternally grateful. It's been driving me nuts for a year.
I have a Samsung G9 and it has many of these bugs...and I haven't even tried macOS on it.
I got my first Mac + monitor setup in an apartment with the desk on a closed balcony. It was driving me crazy to press the fiddly LG joystick to get to the brightness menu all day long, so I can follow the ever changing ambient brightness.
It's also why Lunar v1.0 only had sunrise/sunset based automatic brightness, not even hotkeys for adjusting the brightness manually.
I used to have a ton of issues with my MacBook Pro and thunderbolt monitor. These issues persisted through different MacBooks and monitors (we used the monitors at work and it was a work machine so I had a few).
All of these issues finally went away after getting an M1 machine. Maybe a coincidence but fewer monitor connection bugs was one of the noticeable changes for me.
Based on the article it might also be because I switched to the apple pro display? Though I can’t remember what happened first.
Also off-topic, but this blog has beautiful style and typography.
And yes, it's very likely that most of your problems went away because you're using the Pro Display, as it has a much faster CPU than most monitor controllers on the market.
Apple displays also support a proprietary USB protocol through which they can communicate with the Mac faster than through the DDC protocol which is still based on two-wire slowpoke I²C.
That Apple Native protocol is also supported by Lunar for silky smooth brightness transitions, which is just not possible on DDC, unless the monitor has some kind of built-in fader.
The interesting part was you could see a decent amount of the original screen's contents even if you had a different screen being shown such as being behind a lock screen. So imagine a scenario where you had your monitor on with something sensitive open, you turn on your lock screen and go AFK. You could come back 15 minutes later and still see a third of whatever apps you had open at like 50% opacity and it blended through with the pink lines and login screen. It was like an acute burn-in effect.
I don't have a picture of it but it was very similar to this effect (I found this when Googling): https://linustechtips.com/uploads/monthly_2017_04/IMG_201704...
I guess changing the serial number and recompiling the firmware for every device is too hard or too slow for some reason.
The workaround is to issue a factory reset via DDC. Then you can properly select the language again and everything works..... Until the first time the screen goes to standby or gets turned off. Rinse and repeat. It's better than nothing I guess. You can easily find these models on ebay et al, usually people state that "the menu button is broken" or similar.
It's the only appliance that doesn't work. It turns on normally but stays black (I use it in mirror mode).
Every hour or so it may show the correct content for a glance then it'll turn black.
I suspect the power supply source is not the real reason, maybe there's something causing interference with the cable?
I'm waiting to have a free weekend to check it out.
Edit: I'll check if it's related to this issue: https://news.ycombinator.com/item?id=32631017
You can also try a different, thicker cable, if you have one handy. The thicker cables are usually better shielded by having a sheath of tiny wires to catch that interference and conduct it to ground.
The issue is still happening.
Unfortunately I don't have a different HDMI cable at hand now. I'll test another cable as soon as I get my hands on one.
I printed a document using one and generally printers hate running off generator power.
Is there another appliance that I can test to see if that's the issue? I don't have an oscilloscope.
Edit: I just tested powering it from a UPS: It's flickering more now and when it show the correct content it stays for a second more then when powering from the ecoflow.
The monitor model is: BenQ GW2780-T.
Easy fix is to set it to DP1.2 instead of 1.4
Ddc is to http what your county clerk’s website is to (current) healthcare.gov essentially. There’s no standardization at all, it’s maintained by 1000 different people who don’t communicate and don’t care how anyone else is doing it because only like 1/10000 people have heard of it and 1/100000 uses it.
Source: have this exact scenario and on windows/Linux Nvidia drivers it works and on Mac it flips everytime I come back from sleep. Same brand batch and serial, cables, ports, etc.
And I have an m1 pro with a simple HDMI to usbc and an HDMI direct so no hub/bus assignment funny stuff either it's directly plugged into dedicated ports.
In addition to this I have a USB-C hub that includes 2 HDMI inputs, my M1 Max Mac Pro doesn't recognize two monitors connected to it but my Windows laptop does.
I'm not making this up, its well documented on many internet forums, including Microsoft's own.
Incidentally, made me happy to be a Mac user. Since Apple never had that problem. Infact OS X is magical in how it deals seamlessly with unplugging/plugging external monitors (and no, I don't use an Apple external monitor).
My current LG 34BK95U had an issue where MacOS would sometimes refuse to send the correct resolution or even aspect ratio. The workaround was to force it to DP1.2 instead of 1.4 (over thunderbolt), but then my Windows machine couldn't send the full resolution/refresh rate over DisplayPort. LG eventually put out a firmware update to fix that.
On the other hand, they still haven't fixed the false claim on their website that it supports a 75hz refresh rate. It's identical hardware to their 34WK95U, including the 60hz maximum refresh rate.
A previous LG monitor I had falsely claimed 60 USB PD laptop charging on their website. The hardware only supported 7.5w. It was the same scenario, where the consumer model has correct specs, and the business model has identical hardware and falsely inflated specs.
I think every single 4k/5k monitor I've ever owned, from LG, Dell, etc. have had useless HDMI ports that were unable to drive the monitor at the correct resolution and refresh rate. You had to settle for either 30hz or a blurry low-rez picture.
On my monitor (~5ish year old Dell) I have the "Deep Sleep" option disabled and it suits me very well like this.
I found that disabling all forms of eco saving and deep sleep settings will make the monitor wait for the Mac when waking up.
I no longer have to keep hitting keys. It still takes a while to wake up, but at least it's predictable.
I searched online and couldn't really find a sure-fire resolution. I did however, find that if I logged into the administrator account and swapped the monitors, then went into the Energy Saver settings and prevented the Mac from automatically sleeping when the display is off then it keeps the problem away long enough. I will usually have to repeat that process upon an update but I am just glad I found out why this was actually happening.
ioreg -r -c AppleCLCD2 | egrep 'ProductAttributes|EDID UUID'
I couldn’t see the EDID UUID on Intel Macs, but you could at least dump the EDID on those and see if the bytes are identical.The Lunar CLI (https://lunar.fyi/#cli) has a way of dumping that:
lunar displays --edid
If you’re using Linux, you can take a look at ddcutil for dumping the EDID, and on Windows you have NirSoft’s DumpEDID.Strange though, the M1 Mac shows no serial numbers. Both Macs have the swap problem.
Maybe you should add an update to your article. This is clearly an Apple bug, not a monitor manufacture bug. At least in my case.
-- update ---
Here is the output from ioreg on an M1 Max Mac
ioreg -r -c AppleCLCD2 | egrep 'ProductAttributes|EDID UUID' | "DisplayAttributes" = {"SupportsSuspend"=No,"MaximumRefreshRate"=60,"SupportsActiveOff"=No,"PortID"=16,"ProductAttributes"={"ManufacturerID"="HPN","YearOfManufacture"=2021,"SerialNumber"=0,"ProductName"="HP E27u G4","AlphanumericSerialNumber"="CN41201PZ4","LegacyManufacturerID"=8718,"ProductID"=14060,"WeekOfManufacture"=20},"MaxVerticalImageSize"=34,"MaxHorizontalImageSize"=60,"HasHDMILegacyEDID"=No,"Chromaticity"={"Red"={"X"=42816,"Y"=21824},"Green"={"X"=19200,"Y"=41216},"Blue"={"X"=9728,"Y"=4160}},"DefaultColorSpaceIsSRGB"=No,"NativeFormatHorizontalPixels"=2560,"DefaultWhitePoint"={"X"=20544,"Y"=21568,"Gamma"=144179},"SupportsVariableRefreshRate"=No,"AspectRatio"=15,"MinimumRefreshRate"=50,"WhitePoints"=({"X"=20544,"Y"=21568,"Gamma"=144179}),"PreciseAspectRatio"=115652,"ContinuousFrequencySupport"="None","SupportsStandby"=Yes,"NativeFormatVerticalPixels"=1440} | "EDID UUID" = "220EEC36-0000-0000-141F-0104A53C2278" | "DisplayAttributes" = {"SupportsSuspend"=No,"MaximumRefreshRate"=60,"SupportsActiveOff"=No,"PortID"=0,"ProductAttributes"={"ManufacturerID"="HPN","YearOfManufacture"=2021,"SerialNumber"=0,"ProductName"="HP E27u G4","AlphanumericSerialNumber"="CN41201PZN","LegacyManufacturerID"=8718,"ProductID"=14060,"WeekOfManufacture"=20},"MaxVerticalImageSize"=34,"MaxHorizontalImageSize"=60,"HasHDMILegacyEDID"=No,"Chromaticity"={"Red"={"X"=42816,"Y"=21824},"Green"={"X"=19200,"Y"=41216},"Blue"={"X"=9728,"Y"=4160}},"DefaultColorSpaceIsSRGB"=No,"NativeFormatHorizontalPixels"=2560,"DefaultWhitePoint"={"X"=20544,"Y"=21568,"Gamma"=144179},"SupportsVariableRefreshRate"=No,"AspectRatio"=15,"MinimumRefreshRate"=50,"WhitePoints"=({"X"=20544,"Y"=21568,"Gamma"=144179}),"PreciseAspectRatio"=115652,"ContinuousFrequencySupport"="None","SupportsStandby"=Yes,"NativeFormatVerticalPixels"=1440} | "EDID UUID" = "220EEC36-0000-0000-141F-0104A53C2278"
Even though the UUIDs are the same you can clearly see the "AlphanumericSerialNumber"s are not
"AlphanumericSerialNumber"="CN41201PZ4"
"AlphanumericSerialNumber"="CN41201PZN"
So this seems clearly a bug with how ever the UUID is created. The Mac has enough into to distinguish the 2 monitorsMacOS definitely has a way to distinguish between monitors here, and in other cases too, but they would still have to go through every edge case and try to make sure they don't break previous working setups when including more data for the UUID.
Only a small percentage of the monitors implement those EDID extensions so it's hard to rely on them. At best you can use them as a fallback, but that needs field data which they might not have had when the M1 firmware was written.
The standard serial number field is 0 as you can see, so it's still a monitor bug. Incrementing an integer and compiling it into the firmware is not that hard.
Maybe I mis-understood your article. I thought it was up to the computer to decide what to add/sum/checksum into an UUID and therefore the fact that Mac is not using all the data is arguably a poor choice by Apple.
> But they would still have to go through every edge case and try to make sure they don't break previous working setups when including more data for the UUID.
They break those things all the time and people have to re-setup how their monitors are arranged. Doing yet another time doesn't seem like a big deal. If they really wanted to solve that problem they'd just compute a UUID the old and new ways and then remap the old to the new way. The only people this wouldn't work for is the people who they're fixing the bug for and those people already experience the bug.
All the rest are workarounds that they need to add on a case by case basis when new data appears like 10% of the monitors since 2017 only have an alphanumeric serial number or like some very popular Dell models need a 1.5 second warmup time before reading the EDID to get a complete structure.
You might say, why don’t they just stick every available data in the UUID and call it a day?. The issue is that outside the standard EDID fields, you have no guarantee that the extension data will be persistent. If even a byte of that data changes when adjusting monitor settings, or when reconnecting the monitor, then you’ll break the persistent storage even more for setups where it worked before.
I’m trying to say that it’s not Apple’s fault here. If monitor vendors would follow the incredibly simple standard for those fields, we wouldn’t have any “bug” to talk about right now.
But of course, people will only care if their setup works or not, assigning blame to the right party doesn’t change a thing. So Apple must now try to fix those edge cases, because monitors won’t go back and reflash correct EDIDs in their EEPROMs.
For example on Windows you can dump and write EDID using https://www.monitortests.com/forum/Thread-EDID-DisplayID-Wri...
And you can edit it using https://ez.analog.com/video/w/documents/750/advantiv-edid-ed...
Simply incrementing the serial number or the week of manufacture bit will be enough.
But you also have to be lucky to have a monitor that hasn’t already locked the write pin of the EEPROM.
On macOS it’s a lot harder to write the EDID, especially on Apple Silicon. I’m not sure why, but the WriteI2C method doesn’t always work so you might end up breaking the monitor with an incomplete write.
There's clearly work to be done on Apple's part here.
Another common problem I have is switching from no external monitor to external monitors. Usually the process is I'm on my laptop on battery. Close the lid. Come home. With lid closed plug in monitors one via USB-C, the other via a Thunderbolt dock, tap an external keyboard to wake it up.
Quite often (once a week?), MacOS never switches on. Often I open the laptop and MacOS flickers all 3 monitors and never recovers (have given it several minutes). Unplug the monitors and there's an 80% change the laptop monitor will come on. Re-plugin the external monitors, wait for them to come on, then close the laptop. The other 20% of the time the Mac never comes on and I have to hold the power button to hard rebooth. This happens on both a 2019 Intel/AMD MBP and an M1 Max MBP. This situation also happens with the 2 identical monitors but the swap probably happens multiple times a day where as the "it can't get itself started" problem happens once a week.
I waste countless hours each week just responding to emails and explaining to people how what’s happening with their colors and brightness is caused by buggy Gamma implementation in a macOS framework, or how BlackOut (https://lunar.fyi/#blackout) is so unstable sometimes because of unreliable mirroring APIs, and of course I bump into the resolution and wake/reconnection problems you mentioned as well.
Especially on Apple Silicon where the Display Coprocessor is still in its infancy, they still have a lot of work to do.
I'm about to choose a new monitor, they all seem much the same, but being reliable against this sort of problem would be a deal-winner for me.
This happens to me all the time, and it's a small; annoyance that's slowly crept up to a frustration now. It also happens that one screen entirely won't 'receive signal' after sleep until I turn unplug/replug the lightning cable
You can buy adapters that forward their own EDID instead of the monitors, I think.
[0] https://git.cuvoodoo.info/kingkevin/board/src/branch/hdmi_fi...
https://news.ycombinator.com/item?id=32634467
Hacking your (Dell 2410u) monitor through ddc
Oh yes. totally true :-)
Do you ever get bugs where sometimes after waking from sleep the macOS only offers a few limited resolutions? I have one cheap display and with one of my MacBooks there’s a 25% chance it switches to 1080p after sleep.
In the end it turned out to be either a too long cable, or simply a cable that didn’t support the full bandwidth needed when the heat over the wires was increasing resistance.
Try a shorter and maybe more expensive cable.
On my Acer XB271HU, using SoftMCCS either doesn't work, or causes the monitor to go into factory test mode (flashes full screen R, G, B instead of sleeping). In factory test mode, different commands work or don't work.
Annoying as hell.
Maybe someone could suggest me a fix?
Contrary to Apple, monitor manufacturers have a Strongly Held Belief that monitors should all be one marketable resolution (e.g. 4K) and shape (16:9 widescreen or wider) and users just pick a size. Bigger monitors shouldn't have more pixels in them.
The Apple philosophy says that 4K 27" monitors are fundamentally broken hardware that the OS needs to fix at the cost of some display clarity. The manufacturer philosophy says that DisplayPort can't run 5K off a single cable[0] and that nobody wants letterboxing when watching a movie on their new laptop. Apple designs the monitor around what the OS and user need while display manufacturers design around whatever they can buy and repackage.
Of course macOS has fuzzy fonts even at 1x, but that's not a display problem. That's a different Strongly Held Belief. Microsoft deliberately bends fonts to fit the pixel grid (they call this ClearType) while Apple uses antialiasing to remain faithful to the glyph shapes as they were originally designed.
[0] Or at least this was true as of the release of the iMac 5K almost a decade ago. This is not true anymore but no manufacturer is touching 5K anyway.
The most egregious example of this is CSS floats, where browsers have to do all sorts of hacks to ensure that percentages still add up to 100% after rounding. Otherwise fractional zoom factors cause layouts to have pixel gaps or overflow onto other pages. Fonts get around this with hinting but there's no way to hint a CSS layout.
Wrong. You still have them connected to different ports, buses, hubs, docks. Hardware path is what tells them apart.
At best it could dim the brightness through a software overlay, but neither Windows nor Linux implement DDC/CI brightness control by default.
You have to use a third party app like:
- TwinkleTray [0] on Windows
- Lunar [1] on macOS (or MonitorControl [2] if you want a free, but less automated solution)
- ddcutil [3] on Linux
[2] https://monitorcontrol.app/
EDIT: sorry for answering, I should have taken a look at your comment history before to see that BS comments like this are your thing
Just move along as you can't please everyone.
I guess my point is that your reply didn't really contribute anything to the conversation other than hurling an insult at the commenter for their past comments. Maybe they really just wanted to make a joke? On some level it would be silly to pay for something that's free, right?
Given that you're the original author, could it be that you may have replied as a defense mechanism? At least to some degree? If so, is that proper?
Honestly, I don't have a "dog in this fight". I just thought it was an interesting situation.
Sometimes I like doing that ¯\_(ツ)_/¯
I’ll regret it later, right now I’m still angry from it.
Lots of people told me "you get more flies with honey" but it can take a while for that to become a reflex. I'll probably never really get to the point where I can wear the hat of a highly polished, glib salesperson. But we perservere :-)
Retail sales is a tough game! What more is there to say?