Notifications from Reminders Wake Screen in Catalina
It looks like Apple no longer thinks of Reminders as just notifications.
No matter what pmset
settings I have tried, pmset -g log
shows entries like this
2020-07-27 14:39:12 -0700 Sleep Entering Sleep state due to 'Software Sleep pid=533':TCPKeepAlive=active Using AC (Charge:100%)
2020-07-27 14:39:17 -0700 Wake Requests [process=mDNSResponder request=Maintenance deltaSecs=7200 wakeAt=2020-07-27 16:39:17] [*process=powerd request=UserWake deltaSecs=43 wakeAt=2020-07-27 14:40:00 info="com.apple.alarm.user-visible-com.apple.remindd.time-alarm,484"]
That tells me that when the computer goes to sleep, the Reminder daemon is setting a wakeup request for the next time a reminder goes off. This is true even with "Wake for network access" and "Power Nap" turned off in Energy Saver. It also tells me that turning off "Power Nap" does not, in fact, keep the computer from waking up during sleep. (Turns out that maintenance wake is for Find My Mac, but that is another story.)
It appears there is no nice way to fix this.
Disabling Reminders does not work
- Setting Do Not Disturb in notifications, or turning off Reminder Notifications entirely does not prevent the system from waking when the next reminder is scheduled.
- Even if you remove all the reminders from the system by disconnecting Reminders from iCloud (and having no local reminders), that does not remove the existing scheduled wakeup.
- Even manually deleting the scheduled wakeup with
sudo pmset schedule cancelall
does not keep the wakeup from being scheduled when the computer goes to sleep.
- Even manually deleting the scheduled wakeup with
The only thing I found that worked was to disconnect Reminders from iCloud and then reboot the computer. Of course, this means that reminders do not show up on the computer ever at all.
This does not work either
I thought I could fix this by editing platform default setting plist, as explained below. However, the plist is a signed part of the PlugIn, and of course editing caused the signature not to match, so it did not load. I am leaving this here in case someone wants to build on this to find a different way to override the setting.
Edit the platform setting plist
- Get your system's
board-id
by runningioreg -l | grep board-id
, which should output something like
| "board-id" = <"Mac-0CFF9C7C2B63DF8D">
- Verify your boot drive contains the IOPlatformPluginFamily file for your board-id:
/System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/X86PlatformPlugin.kext/Contents/Resource/Mac-0CFF9C7C2B63DF8D.plist
(replace Mac-0CFF9C7C2B63DF8D
with the board ID output by the previous command) and save a copy of it somewhere safe, so you can restore it if something goes wrong.
- Make a copy of the copy so you can edit it. Make sure the copy is on your boot drive.
- Edit the file. You can use
PlistBuddy
if you have it and can find it, orvi
, or maybe you want to edit a copy of the file before you get into Recovery mode and have it handy. With a text editor:- Find the lines
<key>NotificationWake</key>
<true/>
- Change the second line to
<key>NotificationWake</key>
<false/>
- or with
PlistBuddy
PlistBuddy <board-id>.plist
Command: print :IOPlatformPowerProfile:NotificationWake
true
Command: set :IOPlatformPowerProfile:NotificationWake false
Command: print :IOPlatformPowerProfile:NotificationWake
false
Command: save
- Either by booting into recovery mode and mounting your boot drive (recommended if you know how to do it and are comfortable with Terminal) or by turning off SIP (not recommended, learn to do it the other way), get to a state where you can edit system files.
- Go to the
/System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/X86PlatformPlugin.kext/Contents/Resource
directory, keeping in mind that if you are in Recovery mode, that directory will be under/Volumes/<something>
. - Copy your edited version of the
<boot-id>.plist
file to this directory, overwriting the existing version. The file name must match the original. Again, keep in mind that in Recovery mode, your copy will be under/Volumes/<something>
- Reboot.
Be prepared for this to be reset the next time you update the OS.