IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    升级 macOS Monterey 后设备休眠半夜频繁唤醒问题

    R0uter发表于 2021-11-09 00:03:25
    love 0

    去落格博客阅读完整排版的升级 macOS Monterey 后设备休眠半夜频繁唤醒问题

    最近更新:4th 9月, 2022

    最近更新到了 macOS Monterey, 半夜总会被屏幕照醒,就觉得很诡异,以前也有过,但都是有通知的时候才会点亮屏幕,现在是没有任何理由的自己点亮,硬件还是那个硬件,那就应该是软件的锅了。

    在网上查了一圈,先是找到了苹果官方的教程:https://support.apple.com/zh-cn/guide/mac-help/mchlp2995/mac

    写的很详细,但显然是没有任何用处的……

    于是继续深挖,还真找到了原因,使用命令 pmset -g log | grep DarkWake 就可以看到,在你睡觉的过程中,你的 Mac 并没有歇着……

    2021-11-09 01:21:32 +1000 DarkWake            	DarkWake from Deep Idle [CDN] : due to SMC.OutboxNotEmpty smc.70070000 wifibt wlan/ Using AC (Charge:100%) 0 secs
    2021-11-09 01:21:32 +1000 Wake                	DarkWake to FullWake from Deep Idle [CDNVA] : due to HID Activity Using AC (Charge:100%)
    2021-11-09 02:00:44 +1000 DarkWake            	DarkWake from Deep Idle [CDN] : due to SMC.OutboxNotEmpty smc.70070000 wifibt wlan/ Using AC (Charge:100%) 0 secs
    2021-11-09 02:00:44 +1000 Wake                	DarkWake to FullWake from Deep Idle [CDNVA] : due to HID Activity Using AC (Charge:100%)
    2021-11-09 03:14:07 +1000 DarkWake            	DarkWake from Deep Idle [CDN] : due to AOP.OutboxNotEmpty spu_queue_overflow_ep42/ Using AC (Charge:100%) 0 secs
    2021-11-09 03:14:07 +1000 Wake                	DarkWake to FullWake from Deep Idle [CDNVA] : due to HID Activity Using AC (Charge:100%)
    2021-11-09 03:53:30 +1000 DarkWake            	DarkWake from Deep Idle [CDN] : due to SMC.OutboxNotEmpty smc.70070000 wifibt wlan/ Using AC (Charge:100%) 1 secs
    2021-11-09 03:53:31 +1000 Wake                	DarkWake to FullWake from Deep Idle [CDNVA] : due to HID Activity Using AC (Charge:100%)

    看看输出,这几个比较典型,大部分都是这样的,一个 DarkWake, 一个 Wake, 两个仅仅相连,那么问题就出来了, DarkWake 是给电脑在后台唤醒来更新数据的,但不知怎么的,外设被触发,从而导致了全局唤醒。

    我的一个笔记本就这样一夜掉电10%。

     

    总之,我并不想要这个功能, 就那个 PowerNap,对我来说,我更希望它能给我多省点电,于是大概解决思路就这么多:关掉网络访问唤醒,关掉 PowerNap……不过问题来了,在 m1 设备上,其实是没有 PowerNap 选项的……(显然,苹果对自己的续航很有信心,但他们忽略了Bug的威力)

    在 m1 芯片上,就算是连接电源的界面也没有 PowerNap 选项

    在 m1 芯片上,就算是连接电源的界面也没有 PowerNap 选项

    于是对于 PowerNap 这个功能来说,我们只能从命令行下手,首先使用 pmset -g 命令查看当前状态,找到 powernap 的值,如果不是 0 ,说明是启用的状态,使用命令 sudo pmset -a powernap 0 关掉它。

    同时,还有另外一个 tcpkeepalive ,这个默认应该也不是 0 ,也要关掉,它决定了你的 rmbp 在休眠时是否要保持 tcp 连接——显然,保持的话就需要定时唤醒来联网了…… sudo pmset -a tcpkeepalive 0 ,执行这条命令会导致终端提示:

    Warning: This option disables TCP Keep Alive mechanism when sytem is sleeping. This will result in some critical features like 'Find My Mac' not to function properly.

    大概是说关了的话某些功能会受到限制,其实就是系统功能不能休眠时联网了,我相信真有人偷了你 Mac,它也连不上网的。

    总之,两条命令下来,问题应该就解决了,但我找的资料中,还有一条是“关闭优化电源充电”,就那个“Optimized battery charging”,但我不确定这个会不会同样导致唤醒,并且我之前的老 15 寸也确实鼓包了两块电池了,我决定先试试开着它,如果还唤醒,再关掉好了。

    总之,就这样,如果你读到这篇文章的时候我没来更新,那说明上述方案是有效的 :)


    参考文献:
    • https://discussions.apple.com/thread/252061187
    • https://apple.stackexchange.com/questions/253776/macbook-pro-13-with-retina-display-consumes-10-battery-overnight-with-the-lid-c
    • https://discussions.apple.com/thread/252276065

    升级 macOS Monterey 后设备休眠半夜频繁唤醒问题,首发于落格博客。

    其他推荐:
    1. 使用 Packages 创建支持 Apple M1 芯片的 pkg 安装包
    2. 落格输入法 macOS 是如何处理 ascii 0x01 的兼容问题的-macOS 输入法如何正确设置 buffer
    3. 避免网站被恶意域名劫持
    4. Jannine Weigel – Deep End 歌词中文翻译
    5. SoftCo9500 常用维护命令实例浅析



沪ICP备19023445号-2号
友情链接