237 comments

[ 5.1 ms ] story [ 290 ms ] thread
So many monitors run on similar controllers internally - it would be absolutely wonderful if one or more of those had open source firmware so these bugs could be fixed
Would also be wonderful if they could use a halfway modern CPU so the monitor didn't take 30 seconds to wake up. My CRG9 takes long enough that my macbook will fall asleep again from the password prompt as I'm waiting for the monitor to light up, if I don't keep hitting keys.
That thing looks fancy! Perhaps make sure there isn't a "light sleep" or similar option in its OSD that allows it to blank the screen without fully sleeping.

On my monitor (~5ish year old Dell) I have the "Deep Sleep" option disabled and it suits me very well like this.

That's a good catch. There is an 'eco saving' setting that I found after you mentioned it, and it does seem to help the monitor wake up faster. Still not going to win any speed contests, but waking up before the computer goes back to sleep is a win!
I have the same monitor (and a mac), and it sure does take a long time to wake up.

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.

Yeah I tried disabling the eco saving mode and that definitely helps a bit. I wonder if perhaps turning off the automatic input detection would help further. I can switch inputs manually the occasional time I need to do so.
I have auto input detection off, too.
It's a bug with most modern LCDs. Ever since HDMI days they started taking ages to turn on or change modes. I have LCDs from 1997 that turn on and change modes in about 100ms, as opposed to the new 3s-10s. I suspect something extremely stupid, like maybe HDCP crap takes a long time to do its thing (regardless of whether its used) and the process gets blocked on that.
The AI comments are getting out of hand
How can you tell that it was an AI post though?
No human would use allcaps italics like that.
Also: “sent it to a tech”
When the AI is cringe.
(comment deleted)
What's the preferred term?

Boffin?

Could you give us a slice-of-life description of your AI life? Preferably without the violent or sexual aspects?
Sony's CRTs didn't use shadow masks; they used a wire-based thingy instead.

Also humans don't have a way to generate magnetic field to distort it.

Are you sure it's not some old USENET/e-mail/early web troll/joke thing? It has that sort of quality. Bending your TV's aperture grill by focusing too hard on a small part of your screen, using some sort of supposed psycokinetic effect sounds more like the product of the 1990s Internet than the product of a 2020s AI/text prompt system.
This is a kind of look behind the curtain that we rarely get from large software developers. Users are often told by someone down the chain in support it works or doesn't and no explanation why. I find this very fascinating and as a saas developer that makes an app that has to work with external hardware that I often don't have to test on very encouraging. Sometimes, there's no fix and it's not my fault.
I'm also moving towards software that is less dependent on hardware especially because of the headaches that Lunar brought me over the years.

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.

That "if" does a lot in that sentence :) Just had a typical fun experience:

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

Oh.. that sounds so familiar it almost triggers PTSD-like symptoms inside me.

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.

Unless this was a customer you absolutely needed you should not have given them control over your immediate development schedule. Offer refunds if relevant (sounds like not the case). Keep your sanity instead.
Could recommending a competitor to these people be a good business decision?
I've tried that in the past only to be told ' We've tried them and they are even worse than you lot are! They are rude, their stuff is full of bugs and their support staff are unhelpful.. '

Whelp!

Do you get any fun responses if you reply "You told me that's what you wanted :)"
It takes all kinds.

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

>This is a kind of look behind the curtain that we rarely get from large software developers.

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.

I had a very strange monitor bug a few years ago. Dwarf fortress and a weird linux display mode drove my monitor to display a freeze frame of what was going on during the bug at about half opacity with a bit more of a glitchy feel.

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 wonder if keeping the display powered off and disconnected from power supply for a minute or more would have helped in your case.

I have run into not-so-funny situations due to capacitors. See https://dynamicproxy.livejournal.com/46862.html

I did everything I could imagine including long periods of disconnecting power and nothing changed, it was very weird.
Author here, it happens right now with my 5 year old LG 27UD88.

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.

> Blacking out [...] unplug the power cable, and plug it back again

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.

Yes, that's a good hint. Most monitor power bricks have very large capacitors, especially when they also charge the laptop through the Thunderbolt connection.

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.

Leaving the power off for 5min also has the advantage of cooling the machine.
I have some dells (U2414H) that can get into a really bad state. Sometimes unplugging power is not enough. You have to remove all potential power inputs including display input cables (or shut those devices down too) to get a proper reset.
Funny, i have the exact same display and I’ve had it randomly not work multiple times.

Only unplugging everything seemed to work.

Happened maybe 5 times in the many years ive owned it

Does pressing power while it’s unplugged expedite the process by attempting to draw power and emptying any capacitors in the process?
You might speed this up by unplugging the monitor, then holding down the monitor's power button for a few seconds to discharge its capacitors, then immediately plugging back in and powering-on. The only reason I can see to wait 5 minutes is so the capacitors will naturally discharge, but holding down the power button while the monitor is unplugged should immediately discharge them.
This is true only for some designs. It's possible you could have a power island that doesn't get discharged and also has no connection to any buttons when the board is nominally off, and that the things in that power island refuse to reset properly.

There's a whole area of electronics design related to this (unfortunately).

I’ve run into this on the older ASUS model PB278Q. It’s otherwise a decent monitor, if a bit slow to turn on and switch sources by modern standards, but once in a while it’ll refuse to display anything and I’ll have to unplug it from power for a few seconds to “hard reset” it.
My Samsung G7 monitor has this issue where DDC commands will occasionally lock it up to a black screen. I don't use Lunar as I'm on Windows (I use NirSoft's ControlMyMonitor).

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.

So if I have my cell phone (Galaxy S21) near my headphones USB cable, and there is activity on the mobile phone radio (I can hear the mobile phone 'radio' in my headphones), sometimes my monitors will black out. This has happened to a few other users at my office as well. Move the mobile phone a meter away from any cables and problem goes away.
I've got a cablematters thunderbolt hub with two DP outputs connected to two LG monitors. They aren't exactly the same but it doesn't matter, as I'm using Xorg, which doesn't use EDID for layouts. It just uses the output names, which are DP-1, and DP-2, and sometimes the hub flips them. The only way I've found to "fix" this is to use Autorandr, which will update the layout based on the EDID, but the output names remain flipped. This is still an unsolved problem, because i3 uses the output name rather than physical position for where to put workspaces.

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.

If you switch from i3 to sway you can use the serial number instead of the port to assign outputs. I think these days it's usable with even the proprietary nVidia driver.
Oh interesting, I understand that sway with Nvidia is developing quickly. I did read maybe less than a month ago though that it's still quite glitchy. Will look into it again.
Thanks for developing Lunar, I'm a happy user for over a year!
Thank you for the kind message! Happy to hear you find it so useful :)
Another +1 from a happy user! Thank you for developing it. I use several times a day, whenever I'm entering/leaving video calls, or depending if the site/app has dark mode. It's incredibly helpful and reliable!
Nice overview of interesting bugs.

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.

I found that after I updated the firmware of the monitors, they worked almost perfectly. And to make them actually work perfectly, I connect them on different sides on the MacBook Pro (intel version still). Took way too long to figure that out.
Thanks, glad you like the styling ^_^

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.

I found Lunar very helpful in a South facing apartment with floor to ceiling windows. Without Lunar I had to spend a minute adjusting each monitor, multiple times a day. It solved a problem I never experienced in a home with normal windows.
That's also how Lunar started actually :)

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.

Makes me think of the "common knowledge" that Macs don't work properly with external monitors. Fuzzy fonts etc
That's moreso because Apple has a Strongly Held Belief that UIs should never render at fractional scale factors. If it needs to be 150%, it will render a larger virtual desktop at 200% and then downscale.

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.

This is typical but poor gymnastics which grants benefit of the doubt to brand loyalty. Manufacturers hold no such belief, they are beholden to standards to cater to a wide variety of configurations and setups. Implying it's not made for users is poor form, and simply false.
If this were true then companies other than Apple would offer monitors that actually do cater to non-broken configurations but they don’t. The parent post does a great job explaining the technical trade-offs and economy of scale optimisations that manufacturers have decided to make, whereas you have only an ad-hominem attack to offer.
Problem is that fractional scale factors are broken, unless your GUI is completely vector-based. While OS can render texts and vector graphics on fractional scales, bitmaps has to be scaled, which makes them blurry.
Bitmap scaling doesn't become blurry if you have enough resolution (e.g. going from 2x to 1.5x is fine). Vector scaling breaks because layout calculations don't take the pixel grid into account.

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.

I'd attribute this to the fact that the way technology is organised follows how the groups of people who develop it are organised. The Ghost Of The New Machine thing; "if you put database folks and kernel folks into the same office, you'll end up with parts of database in the kernel".
The first issue, where multiple monitors have the same vendor/model/manufacture date/serial number, couldn't that be solved by also storing which port it's connected to? That way, if you have two HDMI ports, if both monitors have the same UUID, you store settings based on port rather than UUID. I don't know if this is possible with this new USB-C world, but at least with traditional hardware, it seems like the OS knows which port a monitor is connected to.

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.

Back when I had two monitors, I got the same cables for both and I indiscriminately plugged them into my computer (I had a laptop, so plugging/unplugging happened ~daily). So the mapping between computer port and monitor definitely wasn't going to stay the same.
Yeah, it would be a workaround for some cases but not all. It would work in the case of a desktop system where the monitors are always plugged in, and it would work for the case where the monitors go through some kind of USB-C dock (assuming it's possible), but not in your case.
Not as convenient but you could label them, if the port was actually factored in.
You wouldn't use the "which port was it in last" fallback option unless you already had multiple saved entries where every other bit of data matched.
(comment deleted)
If it detects a UUID collision, it should automatically drive to the manufacturer, kick in the door and keep punching faces until they start assigning proper serial numbers.
There’s no such thing as manufacturers assigning colliding UUIDs.

If that happens, then they’re just assigning “ID”s.

> 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 "serial numbers," as it were.

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).

The manufacturer isn't assigning UUIDs, we're talking about what macOS considers a display UUID. MacOS will generate a UUID based on the manufacturer, the model, the manufacturing date and the serial number, and the intent is truly that these UUIDs uniquely identify the display. It just doesn't work when multiple monitors have the same serial number, which isn't supposed to happen.
It does in a roundabout way:

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!

PitFAAS. It's the hot new tech of 2023.
I strongly suspect that this is not the full picture.

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.

[1]: https://github.com/jakehilborn/displayplacer

Looks like displayplacer uses the standard `CGDisplayCreateUUIDFromDisplayID` which the system also uses internally: https://github.com/jakehilborn/displayplacer/blob/master/dis...

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

It’s crazy how many aspects of the electronics in monitors are seemingly phoned in, even on models exceeding $1000 in price. Problems like non-unique IDs and EDID not being available right away are such trivial issues to solve and probably wouldn’t even cost that much in the long run and yet here we are.

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.

It also seems like it's getting worse? Apple's new high-end screens are a travesty, and $1000 Samsungs are no better.
Another bit that is phoned in is macOS handling of the displays, which makes certain things like KVM switches problematic...
(comment deleted)
Huh, thanks for elaborating!

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’m sure there must be a retry with a backoff somewhere. But most of the times I noticed that the EDID is incomplete, not blank.

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.

(comment deleted)
I had a TB3 dock with dual displays that was causing my 2019 16" MBP to KP sometimes*. I replaced that with individual separate DP adapters. Then I realized, if I always connect the screens in the same order with a few seconds' delay in between, I get the correct screen arrangement, I think. Not 100% sure because sometimes I forgot the ordering, haha.

* 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 get kernel panics with my CalDigit dock too! Only since the most recent OS update though. Your post is inspiring me to unplug one monitor when I’m not using it and see if it helps. Thanks for the unintended suggestion!
You're welcome. This inspired me to write an HN post, "Treating USB-C as technical debt rather than a feature."
This should be at least theoretically possible -- in Windows, for instance, device file paths are based on connection topology, including port address.
FTA: In standby, the monitor is actually disconnected and disappears from the I/O Registry

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.

The USB is a bus. All controllers and devices connected to it have a unique port assignment as well.
My question is whether that assignment survives standby of the PC. Reading https://unix.stackexchange.com/questions/336037/mapping-of-u..., I’m not sure it does.

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.

That answer is talking about the kernel assigned device names, not the port identifiers which should be stable across reboots.
I'm guessing this is caused by the monitors waking up in different orders. The computer tries to set em up as soon as possible even if they're in different ports. It would be nice if it detects when the collision happens and then put them in another list for monitors associated with their port. Or just have an option.
That's what I thought. I found some of these devices myself over the years and usually, they had serial numbers of 0 or 1. Could even Special-Case these and proactively include the port, in case the user indeed has another one and just has is unplugged currently.
The first issue should be possible to deal with at OS level. Even if all the monitors send same serial number, OS should know in which port they are plugged in. Preferably things shouldn't swap if you swapped ports for your two monitors with properly unique serial numbers. But if the serial numbers are identical, ports seem like reasonable fallback since most people with multimonitor setups don't randomly unplug and plug them too often (except laptops).
Thought the same thing. This must not be an issue on Windows either?
You're assuming the ports enumerate the same when the system wakes back up.
No he isn't. He's assuming the wires are plugged into the same physical ports and the USB/Thunderbolt system makes that information available (it does).
No, I’m saying that the same physical ports, on broken hardware, won’t always enumerate to the same physical port. Say port 0 is the one on the left and port 1 is on the right. You’d expect that the computer is able to reliably get that right and be consistent. I’m saying that in the case of broken hardware / bad firmware that it’s not, and port 0 will come up as the right port, with port 1 on the left, with no working, proper way to identify between the two.
My 4K LG monitor stutters and lags my M1 using the usb/DisplayPort cable while having audio enabled (stock cable)

Easy fix is to set it to DP1.2 instead of 1.4

Well that's a really odd bug :) I'll keep it in my notes for when the next user complains about Lunar making his monitor lag and stutter
I think it's similar to the issues some people see with wifi not working. Because of the datarate which at that point matches the 2.4ghz 5ghz band.
One thing I learnt recently is that Windows 10 or below is incapable of remembering window positions. You need to buy third-party software. Microsoft finally fixed this with Windows 11.

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).

It's not so simple. I've had two (different type) Dell 27" monitors on Win10 for years and never had a problem with losing window positions, until I accepted an 'upgraded' Nvidia driver (27.x to 30.x) a few weeks ago. I rolled back the driver version and it's all good again.
Funny, this is actually a common issue with M1s and people are resorting to using third party software
>>> That will sometimes, not always, but deterministically when it's most annoying,

Oh yes. totally true :-)

I have a lot of respect for this developer’s patience. Back when I was a solo developer, these types of issues were death by a thousand paper cuts. I didn’t have the skills to deal with the amount of support and debugging these kinds of problems entail. And it’s especially frustrating when the answer ends up being “It’s due to how the manufacturer of this monitor just didn’t properly implement the spec and there’s nothing I can do to fix it.” I can’t imagine writing software where this is the norm! So kudos to the developer!
Thank you! It is indeed a very frustrating kind of work.

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.

I work on my own indie label printer app. Let me just tell ya, “label printers…”

Sigh.

I feel the pain. Stay strong.

Just found your software. Looks neat! Buying a copy now for my zebra as soon as I'm on a desktop. Would have bought from mobile if you offered that!
I purposely add friction via “in-app purchase” so users embrace the free trial. Less support issues when you help someone pre-purchase. Very low refund rate / at the expense of revenue. However, you can purchase a license via mobile at my store that sells a label printer: https://mydpi.com
Even working within a larger organization it’s the sort of reason i avoid certain types of custom work.

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.

Ahh one time I was debugging an issue that only happened if the user had cracked version of Windows 7.

Fun.

Maybe someone here can explain the following weird effect:

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.

Author here. My intuition says that's probably a faulty backlight panel.

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 hoped to see a more solid answer because I caused a (I think) similar thing to happen on a friend's MacBook a couple years ago.

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 managed to create the same effect by playing a video which displayed white and black frames in sequence, without a pre-existing monitor defect: https://www.youtube.com/watch?v=-CIzZv5al2E

I think it's related to LCD inversion (http://www.lagom.nl/lcd-test/inversion.php#clickshow).

I’ve done this with WinUAE, the Amiga emulator, by running it in the mode where it simulates interlace flicker, and leaving it up too long. It faded, but boy did the flickering stay around for at least 30 minutes.
The URL of this page made me realize Firefox is happy to display spaces in URLs where Chrome will not.
Does Firefox not replace spaces with %20? It does for me.
It matters what your security settings for URL display are. There are attacks related to the URL bar (of course), so you can set Firefox to only display the raw urlencoded URL, or display emojis/non-ASCII characters visually. I guess there is theoretically ideograph attack mitigations in the second mode, but I don't trust it enough for the small benefit as an English language user.
I was really hoping you were an entomologist and that you had a bug collection of insects attracted to monitors & TVs!
(comment deleted)
The title should reflect these are mac issues and solutions
It's a free form blog post, not a tutorial.
The point being, the topic is all mac related.
Something I learned not long ago on this site: low quality/too long HDMI cables can make some monitors go black when the user stands or sits on a certain kind of office chair. [1] [2]

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...

This is an issue at our office. We have some cheaper LG monitors that flicker when someone stands up from his gas spring chair. The Dell monitors we have don’t suffer this issue. A paper on the issue: https://www.emcesd.com/pdf/uesd99-w.pdf Apparently a dangling bag of coins can cause similar issues, but haven’t encountered that so far.
> Apparently a dangling bag of coins can cause similar issues

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.

My own favorite trick was to put a 1st gen cellphone near the device and call it, or to fire a piezo based gas lighter with the shroud removed against device ground. This was for devices that stood a very good chance of being deployed in a hostile environment so being able to withstand that kind of interference wasn't a luxury.
The grill igniter is actually my favorite too. I may or may not have a drawer full of them... who carries coins anymore these days?
Why are the monitor vendors at fault when the cables have the poor shielding?

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.

> Why are the monitor vendors at fault when the cables have the poor shielding?

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.

Cable shielding often is subpar on industry equipment too. Yes, they have bought shielded cables, no they have not connected the shielding to the expected locations on patch up. Or just wrapped it loosely around, so everytime somebody patches up a new RJ45, you get a new quality situation, cause the vibrations shake the roulett box. Finally, ground.. ground is the yellow green cable and it goes to ground - and ground should be something professional done. Not a network of suffering machinery, pumping hovering potential into one another.

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.

A bit of a problem is that HDMI is very sensitive to EMC thanks to DVI (which forms its base) being essentially VGA minus the DAC step - there's even porches and overscan included in the signal. But this meant that you could make very cheap TV displays, which thanks to very limited set of frequencies involved in cables could be made to work "stable enough".

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.

>there's even porches and overscan included in the signal

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.

Yeah, the simplest possible circuitry for driving a flat panel TV from HDMI (except the HDCP block, which AFAIK can be placed inline before the display logic) would be to declare the 720i/p capability and then just... pump the data straight onto display interface with some buffers here and there meaning to drop the porches, driven all by HSync/VSync signal recovered from the HDMI clock. :V
Incidentally, this is why DisplayPort is always preferable to HDMI if you have the choice. HDMI is kind of a stupid specification.
> A dangling bag of coins is a famous cheap EMC test for products.

Actually never heard about this before.

What is the trick? It cannot just be to shake a bag of coins next to the monitor?

Thanks for linking Doug Smith's website, he has some excellent EMC/EMI info for us hardware engineers.
Also Henry Ott's website, which unfortunately went down recently as he retired, but luckily can still be found on the Internet Archive.
I'm using a Steelcase Leap chair which does use a gas cylinder

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

This happens to me all the time! I thought I was crazy.
I moved to fiber based cables to solve this. Expensive but work great.
That solves a lifelong mystery for me. I have twice had monitors that blink off right when I shift position or get up from my desk. I can tell it's caused by me moving, but I can never reproduce it. When it first started happening, I would aggressively shake the monitor cables and nothing happened. But I never considered that it could be my chair.
Exactly the same for me, this is mind blowing.

I've spent many frustrated minutes trying to identify if me moving was causing a cable to be pulled or such!

I put ferrite rings on a ton of stuff to reduce interference, so much I questioned how reasonable it was to do so. Thank you for providing additional confirmation bias for the things I do.

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.

Hah, thank you, that explains a mystery!

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.

Holy crap, this is amazing. I've wondered about this a lot when it kept happening, and so far my most likely seeming theory had been 'static discharge through the carpet', or something like that... But the chair generating an EMI pulse? Hilarious
Similar but different: I have a 200m Ethernet run (PoE repeater midway), outdoors, FTP, going to a mast atop a hill.

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.

Have you looked at shielded twisted pair or optical fiber for that run? I have a similar project planned but at the moment I’m not looking forward to trenching the cable into the ground so it hasn’t moved forward yet.
I didn’t trench mine as I anticipated it might not be the ideal solution… plus it goes up a 45 degree hill, threads past cliffs, etc. - ran it inside a little 10mm slitted duct, at least, to protect it from friction, UV, and curious teeth.

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.

Thanks for posting this.

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.

As someone who is using display-switch[0] to imitate a hardware KVM switch in software I can say I’ve seen many of these issues in trying to debug the random issues that using ddc creates.

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.

[0] https://github.com/haimgel/display-switch