MacBook一晚休眠都掉电40%多,怎么解决?
背景
使用MacBook多年,在电脑合盖休眠不使用时,出现各种掉电快的场景,如:
一晚后剩余电量只有50%多
过节多日不开电脑直接没电,想突然拿起使用,结果打不开还得找充电器
之前也尝试过网上的方法重置Mac的SMC或者重启电脑,都能一时解决问题,后面就拖到现在。在出现一晚掉电50%多后,下决心还是彻底解决它。
通过下面的操作后,终于经过这几天的观察,一晚上掉电只有百分之5以内了。
取决于当时电脑合盖时打开应用程序的多少。
我尝试过MacBook打开5个Keynote、4个IDEA项目、1个VSCode项目、浏览器10几个标签页、微信、企业微信、Zoom等等非常多的软件,同时运行一个java应用在后台,在锁屏合盖后,一晚只掉电5%。
问题排查
切记:要移除插电设备,如:电源充电器,显示器连接线等等,不然会查看到插电源状态下的设置。
查看个人MacBook的电池设置:
$ pmset -g
System-wide power settings:
Currently in use:
lidwake 1
lowpowermode 1
standbydelayhigh 86400
standbydelaylow 10800
standby 1
proximitywake 0
ttyskeepawake 1
hibernatemode 3
powernap 0
gpuswitch 2
hibernatefile /var/vm/sleepimage
highstandbythreshold 50
displaysleep 2
womp 0
networkoversleep 0
sleep 1 (sleep prevented by bluetoothd, sharingd)
acwake 0
halfdim 1
tcpkeepalive 1
disksleep 10
这里可以发现问题,蓝牙和分享阻止sleep
休眠。
排查问题:
$ pmset -g assertions
Assertion status system-wide:
BackgroundTask 0
ApplePushServiceTask 0
UserIsActive 1
PreventUserIdleDisplaySleep 0
PreventSystemSleep 0
ExternalMedia 0
PreventUserIdleSystemSleep 1
NetworkClientActive 0
Listed by owning process:
pid 185(bluetoothd): [0x00018daa00018f8d] 00:00:22 PreventUserIdleSystemSleep named: "com.apple.BTStack"
pid 191(WindowServer): [0x00017a38000985ba] 00:00:00 UserIsActive named: "com.apple.iohideventsystem.queue.tickle serviceID:10003116d service:AppleUserHIDEventService product:Convertible 2 TKL eventType:3"
Timeout will fire in 120 secs Action=TimeoutActionRelease
pid 599(sharingd): [0x00018d8000018f87] 00:01:04 PreventUserIdleSystemSleep named: "Handoff"
No kernel assertions.
Idle sleep preventers: IODisplayWrangler
可以看到这里开启了配置 AirDrop & Handoff
以及连接了各种蓝牙设备导致的。
优化方案
一 调整电池配置
网上有大量 pmset
的配置,我觉得比较的激进,而且会影响日常使用,例如:hibernatemode
设置成 25,休眠后开启很慢。
以下是我的调整,只需要一项,在休眠时不需要被网络唤醒,各种生活或者工作的提醒等有手机等移动端就可以了。
# 关闭网络唤醒
sudo pmset -b tcpkeepalive 0
二 关闭 Handoff 接力
三 休眠时关闭蓝牙,唤醒后再开启
官方地址:https://github.com/odlp/bluesnooze
brew install bluesnooze
安装后,设置成开启启动即可。
到这里就全部配置完成了。
License:
CC BY 4.0