Apple seems to be making a lot of display related things difficult lately. This, and Display Stream Compression are two.<p>Just as high refresh and HDR were becoming really mainstream, Big Sur completely broke what was working flawlessly in Catalina (and it has not been fixed as of either 11.5, or the Monterey betas so far - and by completely broke, I mean does not work, at all, for anybody, not just 'some edge case').<p>With Catalina, my Mac Pro happily drove 2 27" 4K monitors in 10 bit color at 144Hz.<p>With Big Sur? I can run those same screens at 60Hz 10 bit, or 95Hz 8 bit.<p>I guess I just need to get a Pro Display XDR...
Great write-up and a fun read.<p>I was caught off guard by this note:<p>> the delivery guy called me about a laptop: the custom configured M1 MacBook Pro that costed as much as 7 junior developer monthly salaries has arrived!<p>I tried the MacBook Pro configurator and could only get up to $2300 USD (excluding optional software like Logic Pro). I’m sure the price and taxation are higher in the author’s country, but I still don’t understand how that could cost the equivalent of 7 months of junior developer salary anywhere.
I haven't used Lunar (<a href="https://lunar.fyi/" rel="nofollow">https://lunar.fyi/</a>), the app the author built, but it looks fantastic! Clearly great effort has been put into it!<p>I really appreciate this class of application that exposes more hardware functionality to the end user. Flux (which may or may not be a direct competitor) is another great example, as is Halide, the pro camera app for iPhones. They're certainly not flashy, but they can be great quality-of-life improvements.<p>And they're difficult to write! They require using APIs that are often woefully under-documented, and terribly difficult to debug. I wanted to write an app that would slowly lower your device's volume over time (so you could raise the volume for a song that you like, but then not accidentally spend the next 30 minutes with the volume super loud), and even doing simple things like listing audio devices and getting their names was endlessly frustrating.
Amazing write-up! Your efforts are much appreciated. I have an Intel Mac Air with an external monitor and strongly feel that usability items like these are sorely underrated. Kudos for the great work in a seemingly closed ecosystem.
Yes why can’t a mac control the volume of an external monitor on usb c/display port/thunderbolt.
It’s completely ridiculous when you think about it, that such a fundamental and important requirement for so many users, is completely missing, in 2021!
Although I'm not interested at all in brightness control and the different technologies you described, I really enjoyed reading your post. Your way of combining talking about technical issues with your personal life and challenges (your company job, having a side project along your day job, the winter cold near your house, etc.) made it possible for me to enjoy reading a post about something completely unrelated to me (DDC, etc.) Nice job.
While not for M1 Macs, but I use this nice app:<p><a href="https://github.com/MonitorControl/MonitorControl" rel="nofollow">https://github.com/MonitorControl/MonitorControl</a><p>Ans seems they are on track to fix M1 DDC :)<p><a href="https://github.com/MonitorControl/MonitorControl/issues/323" rel="nofollow">https://github.com/MonitorControl/MonitorControl/issues/323</a>
This seemed neat so I installed Lunar to try out on my M1 MacBook Air with a LG HDR display connected over HDMI.<p>After launching the app my system started freezing so bad I had a hard time closing the app, inputs unresponsive for 30 sec then active for 1 sec to become unresponsive again.<p>I figured I'd try to launch it with my monitor unplugged and worked fine, but after plugging in my monitor again it doesn't connect again.<p>I've tried closing the app, uninstalling it and rebooting my system. Nothing works and now I'm left with no external display. What the hell?!<p>EDIT: after unplugging my dongle from usb-c (i.e. un-powering it instead of just unplugging it from the laptop) everything works again! phew. I guess it put the dongle in some weird state?
Quite literally an insta-buy for me. Tried with an LG HDR 5K Display and it worked perfectly in trial mode.<p>Location mode is everything I've ever wanted from non-Apple monitors with a Mac mini. <a href="https://lunar.fyi/#location" rel="nofollow">https://lunar.fyi/#location</a>
Is it a big secret that m1 macs don’t work with external monitors?? The problem has been getting worse with each new forced update.<p>Using my monitor via HDMI and apples 100$ dongle it constantly turns off randomly and will not come back on without unplug and plug back in.<p>Everything else is great but after like 5 updates that claim to fix the issue but still having issues maybe apple should make some notification about the problem so people don’t buy this if they have serious work they need to get done.
DDC is great - I remember saving a Samsung 193P monitor (no buttons and controlled by a proprietary driver that only worked on WinXP) that had its brightness set unusably low by its prior owner. I also remember someone using DDC scripts as a KVM solution by switching the monitor inputs programmatically.
Great work, Alin. I will continue with the trial version for a while, but ten minutes in, it looks like everything is working.<p>Brightness actually wasn't my biggest gripe, it was my monitor's stupid volume controls (three menu levels deep). And Lunar takes care of both!
Funny, I just started playing with DDC a few days ago. I've got a work (Mac) and a personal laptop (Dell XPS with Linux) that I like switching between. I had a thunderbolt hub, but was getting tired of moving the cable back and forth, and it was also unreliable on the Mac, causing it to heat up and slow down on occasion.<p>I ended up just buying a pure USB hub with a switch, and running a persistent polling bash script on the Mac and the Linux machines that calls the appropriate DDC commands to switch the monitor input based on which machine the USB hub is switched to. It's fast and works great.
I just want my 2 external monitors to work, 1 in portrait, the other in landscape in my M1 MacBook Pro.<p>I bought a Pluggable doc, for $300, of course it wasn’t until after I couldn’t get it to work did Pluggable team tell me it wouldn’t work, “a known problem”, which they didn’t disclose. This was 7-8 months ago.<p>I needed the extra ports so I kept the dock, and used both monitors in landscape mode, it killed my productivity.<p>About 2 months ago I needed to reboot my machine, Zoom couldn’t find audio.<p>When the machine restarted one of the monitors was in portrait mode, it hadn’t been configured in portrait mode, but it was in portrait mode. I hadn’t done any updates, automatic updates are turned off. Then machine started with 1 monitor in portrait mode.<p>Everyone tells me it can’t work, Pluggable, Apple, Apple support forums.<p>This experience tells me the M1 release was half baked at least on the OS side.<p>The product was rushed to market maybe to capture market segment, maybe because component parts were already allocated, and shipping the M1 devices would help Apple to offset lost sales due to parts availability for the Intel Mac’s.<p>Hard to say, but I would have also expected something as trivial as rotating the display to be available without the need to buy a 3rd party $300 device, that isn’t supposed to work.
Lunar is godsent.<p>Without automatic brightness control for my external display, I had the exact same problems the author of Lunar describes in his article, constantly and manually adjusting the brightness of my display throughout the day, with its awful on screen menu.<p>Before I got my Mac with an M1, I‘ve used Brightness Menulet, which also worked quite ok, but not nearly as polished and functional.
> reading brightness, contrast or volume from the monitor fails about 30% of the time<p>There is a good chance this is because the read is done too fast. If it gets less reliable with a super long HDMI cable then it's almost certainly the clock speed.<p>I2C is a clocked protocol where the host (the laptop) decides the clock speed. It isn't designed as a high speed data transfer mechanism, and requires that all the signals get to the other end of the wire and back all within every clock cycle. Since there is very little data to send, a clock speed of 10kHz should do the job just fine. But I bet the hardware is set to something silly like 10 MHz by default, since it probably uses the same I2C drivers and hardware blocks as used for communicating with other things on-chip and within the system.
The Paddle mention is very interesting, I'd never heard of it before. I really hope they make the Sketch-like model an integrated part of the platform, I wish more apps used that revenue model, and I'd like to use it myself for some productivity utilities in the future.
The article got a bit confusing around halfway the post. If I didn't google the software it reads like I would need a configured Raspberry Pi in addition to this software...
Well that's just stellar. I've been using <a href="https://github.com/fnesveda/ExternalDisplayBrightness" rel="nofollow">https://github.com/fnesveda/ExternalDisplayBrightness</a> on my Intel and sorely missing it for M1.
Does the gamma solution lower the power use like a proper brightness reduction? And if so, by the same amount?<p>Did you ever attempt to reach out to Apple about how this should be implemented on the new kernel? I would hope there's some forum for this kind of question still.
It's just ridiculous that you need to go through all this palava and reverse engineering to use standard methods to control something as basic as a monitor.<p>I enjoyed the article though.
great work!<p>> reading brightness, contrast or volume from the monitor fails about 30% of the time<p>I2C over long lengths of wire isn't the sturdiest physical layer... I would expect the low level I2C handlers to retry a few times on no ACK received, but a retry_count of 5 might resolve most of the issues around a bit flipping on its way through the wire :)
I wouldn't be surprised if Apples ultimate goal was to control the monitor playback ecosystem and implement DRM such that they could get a cut of any medimedia you consume through your Mac. They'd 'curate' the content to prevent you know piracy, or whatever.
The XDR works quite well on the MacBook Air, no journey required. Only annoyance is that it has specific ideas which side is up or down when used vertically, and I always turn it the wrong way, first.
Bit of a non-sequitur, but I always laugh whenever I read a blog where someone finally discloses all of the gripes they had with their last Mac while transitioning to the new one. Of course, this <i>new</i> Mac is better than the old one, and won't be susceptible to the same issues they had last time.<p>Frankly, it all just makes me happier to be out of the ecosystem. I love the fact that there are people like you willing to write beautiful, functional and native system apps, but it also hits me with a pang of sadness when I hear that you spent 7 months salary on a device that will merely give you the ability to package and distribute apps to a certain platform. It's frankly dystopian, and I get the feeling that Apple will continue to edge out "lower-level" software like this in their bid to "increase userland security" (see: gimping MacOS APIs).
It's too bad people keep trying to use the M1 for power user tasks. The hardware shortcuts and proprietary implementations make using the machine in anything but factory use cases tedious if not infeasible. Being able to change the backlight intensity shouldn't have to be a major accomplishment with unfixable sporadic hardware bugs.