Total Eclipse of the Mac: Lunar Controls Third-Party Displays
Not long after I received my M1-based Mac mini, I was working late in the night and decided to decrease the brightness of my Dell monitor. I reached up and pressed the F1 key on my Magic Keyboard as I had done for as long as I could remember. Nothing happened. I tried again but to no avail.
For the past several years, I’ve used a series of MacBooks—a 12-inch MacBook, a MacBook Air, and a 16-inch MacBook Pro. This was my first time using a Mac mini with an external monitor as my primary computer. I assumed I’d be able to control the brightness on my monitor using the standard keys on a Mac keyboard or the brightness slider in System Preferences > Displays.
I was wrong. It turns out that Macs can’t necessarily control the brightness on external displays with built-in options. Of course, that’s not a problem with Apple monitors like the older Thunderbolt Display, today’s insanely expensive Pro Display XDR, or the Apple-approved LG UltraFine monitors.
For reasons I don’t understand, macOS lacks built-in support for these settings when using a third-party display apart from the few models mentioned above. However, owners of Intel-based Macs can use various command-line and graphical tools for this purpose, but none seemed to work on my M1-based Mac mini. I started digging deeper and realized I wasn’t alone: each of these tools had someone commenting that it did not work with M1-based Macs and it was not a problem that Rosetta could solve.
The reason seems to be that M1-based Macs lack support for DDC or Display Data Channel, a standard set of control protocols that monitors have used for many years. Every tool that I could find needed DDC support, which is why none worked on M1-based Macs.
Obviously, I could use my Dell monitor’s buttons, like some kind of animal, but as everyone knows: they’re terrible. My monitor has four buttons along the bottom, but they don’t adjust the brightness or contrast. That would be too easy. To control those settings, I have to navigate the monitor’s onscreen menu hierarchy, which requires pressing one of the buttons, using another button to go up or down to the right sub-menu, pushing a third button to select brightness, and going back to a previous button to adjust the brightness up or down. It’s slow, it’s clunky, and I always press the wrong buttons and end up feeling like an idiot. Eventually, I found an app that could control brightness and contrast directly from my M1-based Mac mini.
Developed by Alin Panaitiu, Lunar had a steady stream of development, culminating in its official release at the end of May 2021. Its website showed a bevy of options, including a wide range of customizable keyboard shortcuts. Even cooler, it could control the brightness automatically based on your location and sync the brightness of an external monitor with a MacBook’s built-in monitor. Most importantly, it just worked, and it worked reliably.
Back then, Lunar made use of an impressive hack for those of us who wanted to use an M1-based Mac. For such Macs, Lunar’s best hardware-based solution relied on a Raspberry Pi to relay commands from a Mac to the external HDMI monitor. Since the Raspberry Pi supported DDC, this was almost as good as a native solution… if you had a Raspberry Pi. I did, and I set up this “network control” approach, which was as simple as entering my Raspberry Pi username and password, and then selecting a menu option from Lunar. (Lunar also has a software-only solution that relied on adjusting gamma values, but that conflicted with utilities like f.lux that also use gamma, could only lower—not increase—the brightness, and lacked other monitor controls for volume and input.)
But Panaitiu didn’t stop there. With some help from other developers who contributed to the project, he recently added native DDC support for M1-based Macs to Lunar 4.5.1, so there’s no need for a Raspberry Pi or a software-only solution. You may still run into issues due to bugs in monitor firmware, but Lunar’s FAQ explains many of those issues. (And if you’re really interested in the backstory and technical details, see Panaitiu’s blog post about how getting an M1-based Mac caused him to quit his job and focus on Lunar.)
Now I can control my Dell monitor directly via my M1-based Mac mini, complete with the onscreen display when settings change. It does require that I use one of the Thunderbolt ports rather than the Mac mini’s HDMI port (the combination of that port and the Mac mini’s video driver just won’t send DDC messages, for some reason), but I can use the standard macOS keys for native brightness and contrast changes, or use Lunar’s preferences to set my own shortcuts.
And you can too, as long as you’re running macOS 10.15 Catalina or later. Lunar is free, but some of its fancier features require a $23 Pro license. I was only too happy to support the project. Sure, in a perfect world, we’d never need third-party software to add support for protocols Apple should build in, but in the here and now, $23 seemed like a small price to pay to support an active and creative developer. Plus, TidBITS members can save 30%, dropping the price to $16.10 and making it an even easier decision.
TJ Luoma is a Presbyterian pastor and computer nerd in Plattsburgh, New York. His first Mac was a NeXTStation he used in college in the early ‘90s, and he helped run the PEAK FTP site for NeXTStep/OpenStep software back in the mid-late ‘90s. More recently, he has written for TUAW and MacStories, and been a guest on the Mac Power Users and Automators podcasts. You can find him on Twitter as @tjluoma or at his website RhymesWithDiploma.com.
Oh thank you for this. I look forward to checking it out.
You’re welcome! My first official TidBITS post!
Thank you for solving my problem and making me laugh out loud with “I could use the buttons on my monitor, like some kind of animal.”
I have literally had this monitor for a year and never once got the buttons right on the first try. It’s maddening and I don’t need that stress in my life.
I don’t think I ever dropped $23 dollars so quick on an App but after trying it out. It was a no brainer. Finally a real solution. I was using the QuickShade app which was just inserting a transparent window on top of everything and dimming the window and it messes with screenshot functionality.
On my Dell 40" UltraSharp ultra-wide monitor I needed to disable the “Uniformity Compensation” setting after reaching out to Alin with the diagnostics report submission feature. So watch out for any automatic mode features built-in to monitors you may need to turn them off.
It works with my Apple keyboard but also my Logitech MX Mac keyboard.
I would love to get ambient light sensing working and that would be an interesting project which is documented by Alin with a microboard plus sensor, etc.
Ultimately, I want Apple to release some decent displays that are not priced at $5-6K and charge $1k for the stand! I don’t need HDR with 10000 nits nor do I want a monitor that requires cooling fans.
I do like this Dell monitor, it has USB-C Thunderbolt 90W and it can charge a 16" MacBook Pro. Offering USB, Ethernet much like an integrated dock. It’s only a bit less than having two 27" monitors side by side like the 49" Dell monitor does but this one can do it at higher resolution 2160 vertically and 5120 wide.
That was my exact feeling too!
Yeah, and it might be in my head, but I swear it never looked “right” to me, but Lunar did (even before it had the DDC support).
Oh that’s good to know, too. I don’t think mine has anything like that.
Same! I had actually pre-ordered the one he wanted to offer, but he ended up cancelling that because of the chip shortage.
From your lips to Tim Cook’s ears! I could not quite bring myself to spend for the LG UltraFine, although about 1/2 the time I still wish I had.
Very nice article.
My Eizo CS2730 has built in brightness controls, up or down, right on the lower right bezel where they are easy to get to and work on a percentage scale. No need for Lunar.
If you colour profile an ext. monitor and apply the profile, it should control the brightness.
Thanks so much for this news, @tjluoma. I’d looked at Lunar before, but the ingenious Raspberry Pi hack was a step too far for me. The new version of Lunar is working excellently with my LG 27UL850-W monitor (I haven’t tried the fancy features yet) and I was happy to stump up my 18 British pounds. Shame on Apple that this is necessary, though.
What a great find! and congrats on your 1st tidbits article
Thanks! I’m glad that you find it useful!
Thanks Jim! I’m so gratified that people have found it helpful, and that I’ve been able to tell people of a new utility they can use.
Well, it seemed a good fit at first, but it now seems to have a mind of its own regarding screen brightness.
I can find nothing about how to disable Lunar. Any advice, fellow TidBITters?
Are you using Manual Mode?
See the blue arrow. Click on it to change modes.
More settings found by clicking where the Red Arrow points.
If all else fails, try contacting the developer for help:
You can disable Lunar by unchecking “Start at Login” in that same menu, and then quitting the app, but the developer has been very responsive in my experience, so I’d encourage you to get in touch if you’re having issues.
I note that to work best the M1 Mini should be connected to the monitor using the Thunderbolt/USB connection. My LG monitor has HDMI, DP, and mDP connections. I must be looking in the wrong places but I haven’t found any recommendations for cables or adapters that work. I have found several that have reviews on Amazon and the internet that say USB C to DP either doesn’t work or has various difficulties.
Is this combination not going to work with Lunar or is there a brand that does work?
Hello Alan, and welcome to the forums.
My monitor is connected to a dock via Mini Display Port, and the dock connects
My understanding is that HDMI does not work (even on Intel-based Macs). But I assume Display Port and Mini Display Port and Thunderbolt/USB would work fine.
Also note that you can download and try Lunar free. There are some pro features which you pay for, but you’ll definitely be able to see if it works for you or not with the free version.
Your M1 Mac mini has an on-board HDMI 2.0 port. It would probably be easiest to just use an HDMI cable to connect it to your display. Be sure to use a “Premium High Speed” HDMI cable if you want to use resolutions higher than 1080p.
Alternatively, you should be able to use a passive USB-C DisplayPort cable. But that will consume one of your two Thunderbolt ports, which you may not want to do. I don’t know why people on Amazon say it doesn’t work - maybe they are using computers where their USB port isn’t connected to a GPU.
If you want to drive a display from one of the Thunderbolt ports and also use it for data, then you will need to get a dock, which might cost more than you want to spend.
What kind of dock? You may or may not be able to support an HDMI display downstream of the dock, depending on what kind of dock you have.
But going back to the original topic of this thread… Lunar’s own web page says:
So don’t try to use HDMI if you want to use DDC (which you probably do).
Join the discussion in the TidBITS Discourse forum