Following up on Ken Case’s useful answer:
After getting a 14" MBP for myself, I ran into same problem I described above. I use my laptop a few times during the week, and I was finding the charge noticeably depleted when I left it alone for a few days.
Following Ken’s explanation, I attempted to use hibernatemode=25
along with the standbydelayhigh
and standbydelaylow
parameters. I discovered that Apple Silicon Macs ignore the parameters; if you set 25 as the mode, the laptop will immediately hibernate when you close it regardless of any additional standby parameters. (See macos - Can't find standbydelayhigh and standbydelaylow on MacBook Pro 2021 - Ask Different)
To work around this I’ve enlisted Keyboard Maestro. I have a KM macro (I called it ‘Deep Sleep’) which causes the laptop to hibernate the next time I close it:
sudo pmset -a hibernatemode 25
I added pmset to /private/etc/sudoers.d/pmset
to avoid the sudo password prompt:
% cat /private/etc/sudoers.d/pmset
holbrook ALL=NOPASSWD: /usr/bin/pmset
I made another KM trigger that fires every time the laptop wakes to turn off hibernate if it’s on:
pmset -g | grep hibernatemode | grep 25 && sudo pmset hibernatemode 3
If think I’m not going to use my laptop soon, I trigger my Deep Sleep macro (using Alfred, so only a few keystrokes), and when I close the laptop, it hibernates. When it next weeks up, it turns off hibernation mode until I tell it to hibernate again.
It’s fiddly and manual, but I’ve achieved my goal: if I guess I’m not going to be using the laptop again for a few days, putting it into hibernation keeps my battery level right where I left it.
Of course, by doing so my Mac does not get the chance to run the various housekeeping tasks it would normally do, but I’m happy with the tradeoff.