How to Stop External Monitors Waking Up Alone on macOS
Preface
The symptoms are simple. A Mac is asleep, but the monitor wakes up on its own only to display there isn’t a signal from the source. The display then returns to standby or sleep mode. It repeats itself so long as Mac is sleeping; it doesn’t disturb Mac’s sleep. It’s not a common problem across all monitors though; depending on which model from which manufacturer running what firmware, the monitor behavior will be different.
The problem comes from what is called DarkWake, which I will explain later. The most obvious and simplest solution is to turn off your screen while the Mac is put to sleep. I inevitably opted to do this, but it does require some changes in the workflow.
Another solution would be to connect via HDMI, though I was not able to confirm this method. It is said the problem lies within the DisplayPort protocol implementation, and HDMI simply doesn’t suffer from it. While it may be true, including my monitor, most PC monitors are designed around DP, and its Thunderbolt hub behavior relies on DP over USB-C — HDMI was never really an option.
Solutions
Third solution, one this post is about, would be to deactivate tcpkeepalive
, which was so far the most common cause of DarkWake in macOS. DarkWake is essentially a half-woken status, where the display would remain off, but the Mac would wake up to run some background tasks. Most of the network related tasks, namely keeping Find My up to date is relying on it.
- Run the following command to examine the problem:
pmset -g log | grep -e "Wake from" -e "DarkWake" -e "due to"
It will show the logs of Sleep/Wake, and what we need is on DarkWake. In my case, it was due to EC.RTC/Maintenance
for 45 seconds.
- Run the following command to disable
tcpkeepalive
:
sudo pmset -a tcpkeepalive 0
- (opt.) on Intel Mac, a feature called Power Nap may cause the same issue. From Systems Settings > Energy, untick “Enable Power Nap”.
To re-enable tcpkeepalive
, simply swap 0
to 1
and run the command again.
Afterthoughts
There were some discussions as to what must be waking the monitors. My bet, as many others have said, is on the monitor firmwares. My previous LG monitor, connected from 2019 Intel Mac Pro via DP, did not suffer from this issue, however my new Dell monitor with Thunderbolt hub capability does. I was planning on using DP over USB-C if needed, so HDMI solution wasn’t the most enticing. The final nail on the coffin would be that Apple branded monitors are known not to suffer from DarkWake problem.
Another thing to note is that I cannot recommend disabling Find My on laptops. Find My is a feature that is most practical on mobile devices, including laptops. The solution would work greatly for desktops, as it won’t see much movement and thus doesn’t require constant updating in the first place. Hopefully we will see some kind of update either for macOS or monitor firmwares.