具体配置及系统信息

  • 2021 款的 14 寸 M1Pro MacBook Pro
  • Monterey 正式版
  • 盒盖睡眠前未关Wi-Fi,蓝牙

终端输出信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
使用命令 pmset -g log | grep DarkWake 查看 DarkWake 唤醒日志

2023-01-24 23:41:22 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to SMC.OutboxNotEmpty smc.70070000 wifibt bluetooth-pcie/ Using BATT (Charge:68%) 7 secs
2023-01-24 23:41:31 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to SMC.OutboxNotEmpty smc.70070000 wifibt bluetooth-pcie/ Using BATT (Charge:68%) 12 secs
2023-01-24 23:59:07 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:68%) 4 secs
2023-01-25 00:16:27 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:68%) 4 secs
2023-01-25 00:23:49 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to SMC.OutboxNotEmpty smc.70070000 wifibt bluetooth-pcie/ Using BATT (Charge:68%) 16 secs
2023-01-25 00:24:53 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to SMC.OutboxNotEmpty smc.70070000 wifibt bluetooth-pcie/ Using BATT (Charge:68%) 7 secs
2023-01-25 00:25:07 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to SMC.OutboxNotEmpty smc.70070000 wifibt bluetooth-pcie/ Using BATT (Charge:68%) 17 secs
2023-01-25 00:42:25 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:68%) 4 secs
2023-01-25 00:58:47 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:68%) 4 secs
2023-01-25 01:14:02 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:68%) 4 secs
2023-01-25 01:30:08 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:68%) 4 secs
2023-01-25 01:46:51 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:68%) 4 secs
2023-01-25 02:03:20 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:68%) 4 secs
2023-01-25 02:19:12 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:68%) 4 secs
2023-01-25 02:34:31 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:68%) 4 secs
2023-01-25 02:50:56 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:68%) 4 secs
2023-01-25 03:00:17 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to SMC.OutboxNotEmpty smc.70070000 wifibt wlan/ Using BATT (Charge:68%) 12 secs
2023-01-25 03:01:25 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to SMC.OutboxNotEmpty smc.70070000 wifibt wlan/ Using BATT (Charge:68%) 44 secs
2023-01-25 03:17:51 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:68%) 4 secs
2023-01-25 03:32:56 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:68%) 4 secs
2023-01-25 03:50:30 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:68%) 4 secs
2023-01-25 04:06:13 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 04:23:59 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 04:41:23 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 04:57:37 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 05:15:11 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 05:31:18 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 05:47:30 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 06:04:18 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 06:20:02 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 06:35:07 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 06:52:40 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 07:08:02 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 07:24:39 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 07:41:52 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 07:57:20 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 5 secs
2023-01-25 08:12:40 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 08:30:16 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 08:47:51 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 09:04:51 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 09:10:30 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to SMC.OutboxNotEmpty smc.70070000 wifibt wlan/ Using BATT (Charge:67%) 20 secs
2023-01-25 09:12:05 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to SMC.OutboxNotEmpty smc.70070000 wifibt wlan/ Using BATT (Charge:67%) 6 secs
2023-01-25 09:13:17 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to SMC.OutboxNotEmpty smc.70070000 wifibt wlan/ Using BATT (Charge:67%) 6 secs
2023-01-25 09:30:08 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 09:48:08 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 10:05:08 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 10:21:38 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs
2023-01-25 10:37:50 +0800 DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs

可能的解决方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
有两个事件导致 MacBook 被唤醒。如下:

1. DarkWake DarkWake from Deep Idle [CDNP] : due to SMC.OutboxNotEmpty smc.70070000 wifibt wlan/ Using BATT (Charge:68%) 12 secs

2.DarkWake DarkWake from Deep Idle [CDNP] : due to NUB.SPMISw3IRQ nub-spmi0.0x02 rtc/SleepService Using BATT (Charge:67%) 4 secs

这两个事件均是由于 m1 macbook 强制启用 powernap 导致的。但是我们也有解决方案(需要升级到最新的 macos11.2 RC ):

对于第一个问题:这个是由于 tcpkeepalive 引起的,只需在终端使用命令关闭:
sudo pmset -a tcpkeepalive 0

对于第二个问题:这个是由于 powernap 引起的,首先使用命令关闭 powernap 的 DarkWake 模式下允许进程活动:
sudo pmset -a powernap 0


然后取消勾选这些选项: "系统偏好设置->电池->优化电池充电" and "系统偏好设置->电池->电源适配器->唤醒以供网络访问"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
使用 -a 以同时适用于电池和电源。执行 pmset -g custom 可以查看所有场景下的电源设定
pmset -a:调整任何条件下的睡眠计划
pmset -c:调整外部供电的睡眠计划
pmset -b:调整电池供电的睡眠计划
pmset -g:查看计划

# 休眠时不联网,禁用 TCP 保持活力机制,防止每 2 小时醒来一次
sudo pmset -a tcpkeepalive 0
# 禁用电源小憩:用于定期唤醒计算机以进行网络和更新
sudo pmset -a powernap 0
# 关闭 standby 模式
sudo pmset -b standby 0
# 开启远程使用时允许睡眠
sudo pmset -a ttyskeepawake 0

m1 关机断电盒盖后一段时间会重置SMC(以上部分也会被重置)

设置

原先设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
pmset -g custom

Battery Power:
Sleep On Power Button 1
lowpowermode 0
standby 1
ttyskeepawake 1
hibernatemode 3
powernap 1
hibernatefile /var/vm/sleepimage
displaysleep 2
sleep 1
tcpkeepalive 1
lessbright 1
disksleep 10
SleepServices 0
AC Power:
Sleep On Power Button 1
lowpowermode 0
standby 1
ttyskeepawake 1
hibernatemode 3
powernap 1
hibernatefile /var/vm/sleepimage
displaysleep 10
womp 0
networkoversleep 0
sleep 1
tcpkeepalive 1
disksleep 10
SleepServices 0

当前设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Battery Power:
Sleep On Power Button 1
lowpowermode 0
standby 0
ttyskeepawake 0
hibernatemode 3
powernap 0
hibernatefile /var/vm/sleepimage
displaysleep 2
sleep 1
tcpkeepalive 0
lessbright 1
disksleep 10
SleepServices 0
AC Power:
Sleep On Power Button 1
lowpowermode 0
standby 1
ttyskeepawake 0
hibernatemode 3
powernap 0
hibernatefile /var/vm/sleepimage
displaysleep 10
womp 0
networkoversleep 0
sleep 1
tcpkeepalive 0
disksleep 10
SleepServices 0

设置后结果

存在AOP.OutboxNotEmpty的唤醒,但不知道这个是啥

1
2
3
4
5
6
7
8
9
10
11
12
13
14
2023-01-25 17:21:51 +0800 DarkWake            	DarkWake from Deep Idle [CDN] : due to AOP.OutboxNotEmpty spu_queue_overflow_ep42/ Using BATT (Charge:100%) 9 secs
2023-01-25 18:25:29 +0800 DarkWake DarkWake from Deep Idle [CDN] : due to AOP.OutboxNotEmpty spu_queue_overflow_ep42/ Using BATT (Charge:100%) 11 secs
2023-01-25 19:29:05 +0800 DarkWake DarkWake from Deep Idle [CDN] : due to AOP.OutboxNotEmpty spu_queue_overflow_ep42/ Using BATT (Charge:100%) 10 secs
2023-01-25 20:32:38 +0800 DarkWake DarkWake from Deep Idle [CDN] : due to AOP.OutboxNotEmpty spu_queue_overflow_ep42/ Using BATT (Charge:100%) 10 secs
2023-01-26 01:06:09 +0800 DarkWake DarkWake from Deep Idle [CDN] : due to AOP.OutboxNotEmpty spu_queue_overflow_ep42/ Using BATT (Charge:76%) 15 secs
2023-01-26 02:09:30 +0800 DarkWake DarkWake from Deep Idle [CDN] : due to AOP.OutboxNotEmpty spu_queue_overflow_ep42/ Using BATT (Charge:75%) 11 secs
2023-01-26 03:00:15 +0800 DarkWake DarkWake from Deep Idle [CDN] : due to SMC.OutboxNotEmpty smc.70070000 wifibt wlan/ Using BATT (Charge:75%) 11 secs
2023-01-26 04:03:52 +0800 DarkWake DarkWake from Deep Idle [CDN] : due to AOP.OutboxNotEmpty spu_queue_overflow_ep42/ Using BATT (Charge:75%) 14 secs
2023-01-26 05:07:32 +0800 DarkWake DarkWake from Deep Idle [CDN] : due to AOP.OutboxNotEmpty spu_queue_overflow_ep42/ Using BATT (Charge:74%) 5 secs
2023-01-26 06:10:43 +0800 DarkWake DarkWake from Deep Idle [CDN] : due to AOP.OutboxNotEmpty spu_queue_overflow_ep42/ Using BATT (Charge:74%) 6 secs
2023-01-26 07:14:07 +0800 DarkWake DarkWake from Deep Idle [CDN] : due to AOP.OutboxNotEmpty spu_queue_overflow_ep42/ Using BATT (Charge:74%) 10 secs
2023-01-26 08:17:44 +0800 DarkWake DarkWake from Deep Idle [CDN] : due to AOP.OutboxNotEmpty spu_queue_overflow_ep42/ Using BATT (Charge:74%) 10 secs
2023-01-26 09:21:15 +0800 DarkWake DarkWake from Deep Idle [CDN] : due to AOP.OutboxNotEmpty spu_queue_overflow_ep42/ Using BATT (Charge:74%) 11 secs
2023-01-26 10:24:29 +0800 DarkWake DarkWake from Deep Idle [CDN] : due to AOP.OutboxNotEmpty spu_queue_overflow_ep42/ Using BATT (Charge:74%) 17 secs

参考帖子

外置屏幕频繁被唤醒又休眠。这是 m1 的通病?