Fixing clamshell mode external display issue on an M1 MacBook Air

UPDATE, April 18, 2022: I can confirm that in my own experience, variable refresh rate support is working in macOS Monterey. Since I have switched to using a Mac Studio as my desktop machine, I have found the following:

• Connecting via the Studio's HDMI port to one of my Asus VG27A monitors works with the 144Hz refresh rate
• Connecting via one of the Studio's Thunderbolt ports to HDMI via a USB-C to HDMI cable does not allow for the 144Hz refresh rate, only 60 or 72 (and 72 does not work, as shown below)

Here’s my public service for the week. It happened to me, it could happen to you! (If you have the right combo of hardware).

The problem: When putting my M1 MacBook Air into clamshell mode, the 27″ external monitor it was connected to would go blank. The Air was still on and otherwise running, but was not getting a signal from the monitor.

Attempted fixes included:

  • Updating macOS
  • Swapping cables
  • Swapping HDMI ports
  • Cussing randomly

The fix: I found the fix in this Reddit post: https://www.reddit.com/r/mac/comments/knrcof/m1_macbook_air_in_clamshell_mode/

Unlike the author, I believe the issue isn’t related to the cable, just the fact that macOS does not support variable refresh rates and when closing the lid on a monitor with variable refresh rates, it would switch to a rate it didn’t actually support. In my case, I have an Asus VG27A, which has a max (without overclocking) refresh rate of 144Hz. I run it at 60Hz on the MacBook, but when putting it into clamshell mode, it switched to 72Hz, which doesn’t work, causing the display to go blank.

Step-by-step solution

Here’s my step-by-step for the fix in case something happens to the Reddit link:

What this applies to:

  • Any M1 MacBook connecting to an external monitor with a variable refresh rate (typically a monitor with built-in support for G-sync or FreeSync). I can’t verify if this would apply to the same issue on an Intel-based MacBook, but it might.

What you need:

  • M1 MacBook Air or MacBook Pro
  • Another computer (preferably with its own with display), can be Mac or PC
  • Remote desktop software

The steps:

  1. Install the remote desktop software on the MacBook and the other PC. I used TeamViewer, which is free for personal use, but there are lots of options. NOTE: Make sure the remote desktop software has appropriate permissions in the Mac’s security settings. TeamViewer prompts for this, but some software may not.
  2. Set the MacBook to display on the external display, and keep the lid on the MacBook open
  3. Use the remote desktop software to connect to the MacBook and make sure you can control the MacBook
  4. Close the lid on the MacBook. The external display should now go blank, but you should still be able to see the Mac desktop through the remote connection.
  5. From the other computer, go into Displays under the Mac’s System Preferences and change the refresh rate to 60Hz. Once this is done, you should see the external display work again.
  6. Test the new configuration by closing the lid on the MacBook. If the external display remains on, you are done!

Apple is adding variable refresh rate in macOS Monterey, which is due in Fall 2021 (probably a month or so from now as of this writing, but this will likely continue to be an issue on Big Sur. Story on MacRumors