#1 - 2022-7-2 03:54
NekoNull
最近某公众号发了一篇关于 Windows 笔记本「睡眠」问题的文章[1],于是趁机吐槽一下。
简要介绍下背景:Windows 7 以前,Windows 笔记本使用的都是 S3 睡眠模式,笔记本合盖后,只有内存会保持供电,其他设备都会断电。这一模式功耗极小,又能快速唤醒,纵然有时可能会因为软件/硬件问题出现无法入睡/无法唤醒的问题,但绝大部分时候还是很好用的。Windows 8 以后,微软力推 S0ix 「新式待机」(Modern Standby),初衷是为了让笔记本用户可以获得类似于智能手机的使用体验,如合盖后依然可以播放音乐,接收邮件。然而这一功能需要应用适配,用户体验比较糟糕,甚至会出现 SSD 读写次数飙升,笔记本合盖放着耗尽电量,或是放入包中后依然发热的现象[2]。
从上文来看,倘若你不喜欢「新式待机」的糟糕体验,那么只需要将睡眠模式下的电源状态从 S0ix 切换到 S3 就好了,似乎只是改个注册表键值的事[3]。可惜事情并没有这么简单。因为微软的力推,搭载 Intel 9 代,AMD 4000 代以及更新 CPU 的笔记本,很有可能已经从固件级别禁用了 S3 睡眠,而强制用户使用 S0ix 新式待机,就算改了注册表也没用。有的设备因为面向专业用户(如 ThinkPad 系列),还在 BIOS 中留有相关选项[4];有的设备可以进入隐藏模式开启 S3 支持,但并不能保证其实现正常,可能还会引入其他问题[5];绝大部分设备则是完全没有办法设定。表现出来的吊诡结果就是,很有可能几年前的 Windows 笔记本,盒盖睡眠的体验反倒比最近的笔记本更好。更糟糕的是,因为禁用 S3 的选择是在 BIOS 中做出的,即使放弃 Windows 转投 Linux,或是安装黑苹果(Hackintosh),也会受到无法正常睡眠的困扰。
那么有什么办法吗?最根本的自然是让笔记本厂商进行修正,在 BIOS 中加入相关选择项。从技术上来说加入 S3 支持并不是难事(很多时候其实只是被禁用了),但是可能因为发声的用户不够多,或者是需要加入额外的测试,也有可能是微软方面的压力,大部分厂商对用户的反馈充耳不闻。从用户角度,稍好一些的大概是禁用新式待机下的网络连接[6],可以减少一部分因为应用尝试连接网络带来的睡眠问题。更极端一些可以开启休眠模式,此时系统会将内存内容写入硬盘并完全断电,虽然会对 SSD 造成写入损耗,但只能说两权相害取其轻了。我自己在长距离移动需要将笔记本放入包中时,都会手动将系统休眠,以避免各种发热/电量问题。
不过既然本版块内容为「技术宅真可怕」,那当然要介绍下技术宅的解决方案。最近正好翻到了这样一篇文章[7]。作者的哥哥购买了一台联想的 Lenovo Yoga Slim 7 14ARE05 (国内版本为联想小新 Air 14 2020 AMD 版),出厂默认是「新式待机」,希望回退到正常的 S3 睡眠体验,于是向作者求助。作者经过一番尝试,选择了以下途径:先把 BIOS 中的 ACPI 表 dump 出来,手动将被禁用的 S3 模式启用并禁用 S0ix(其实就是删掉几个 if 语句),生成新的 ACPI 表,然后安装 OpenCore,将 patch 后的 ACPI 表加入 OpenCore 配置项,最后重新签名 EFI 固件。改动完成后,系统启动时会先调用 OpenCore 加载修改了的 ACPI 表,然后再进入 Windows 的引导过程。光听描述就知道这一过程十分曲折,然而就算开启了 S3 睡眠,也会有其他衍生问题,例如睡眠后键盘背光丢失,无法用内置键盘唤醒等。作者和他哥哥讨论后,最后还是选择了直接用休眠代替睡眠。
上文作者的感想:
> The unfortunate situation today is that computers simply ship with these broken BIOSes nowadays and one has to simply employ all sorts of ultimately stupid workarounds to fix the situations.
> 当下悲哀的状况是,笔记本出厂就带着这些破损的 BIOS,需要用各种奇技淫巧才能修正。
那么作为读者的你,能做什么呢?以下是一个简单的自测指南:
- 查看自己的设备是否开启了「新式待机」,以及是否支持 S3 睡眠:在命令提示符窗口中输入 powercfg /a ,检查「此系统上有以下睡眠状态:」后的显示值,如果第一行为「待机(S0 低电量待机)」,那你的设备当前的默认睡眠模式就是「新式待机」。然后继续阅读,找到「待机(S3)」,如果下一行显示「系统固件不支持此待机状态」,那你的设备固件不支持 S3 睡眠。
- 如果「新式待机」不是你设备的默认睡眠模式,那恭喜你。
- 如果「新式待机」是你设备的默认睡眠模式,但你使用中并没有遇到问题,那也恭喜你。
- 如果「新式待机」是你设备的默认睡眠模式,但你使用中遇到了问题,想要切换为 S3 睡眠且固件支持,请参见 [1] 中最后的段落修改注册表切换。
- 如果「新式待机」是你设备的默认睡眠模式,但你使用中遇到了问题,想要切换为 S3 睡眠但固件不支持,那你可以参见 [6] 禁用新式待机下的网络连接,可能可以缓解你的问题。
你还可以:
- 在可能的支持渠道(微博、厂家论坛、厂家支持 QQ 群)发声(尽管他们很有可能不会听)
- 购买出厂预装 Linux 的笔记本,然后重新装 Windows (这些设备可能对 S3 睡眠有更好的固件支持)
- 购买 Macbook (Macbook 也没有 S3 支持,但是得益于苹果对生态的控制力以及 Apple Silicon 的低功耗,睡眠体验似乎比 Windows 下好不少。我不是苹果用户,只是从身边的苹果用户听说。)
最后衷心祝愿各位都能让自己的设备称心如意。
> 如果都读到这里了,不妨将自己的设备型号和 S3 支持状态回复下。我使用的是 [7] 中作者哥哥的同款设备,联想小新 Air 14 (2020, AMD 版),固件不支持 S3。
---
注释及相关链接:
[1] 差评公众号,《用上了这项新技术,笔记本的续航越来越差了。。。》https://mp.weixin.qq.com/s/cwh1YLehrDsfG0ttM6KHuw
[2] 联想官方支持论坛中,某用户贴出了许多用户反馈各种睡眠问题的帖子链接, https://bbs.thinkpad.com/forum.p ... 88&pid=62795535
[3] 视 Windows 版本,可能为 CsEnabled (19H1 前) 或 PlatformAoAcOverride (20H2 后)
[4] ThinkPad 笔记本可以在 BIOS 中将 Sleep Mode 从 Windows 切换至 Linux, https://wiki.archlinux.org/title/Lenovo_ThinkPad_X1_Yoga_(Gen_4)#Enabling_S3
[5] 联想小新笔记本可以在 BIOS 隐藏设置中开启 S3,但会导致无法关机和其他问题, https://bbs.thinkpad.com/thread-7682695-1-1.html
[6] 可以改注册表,或者用组策略 https://www.elevenforum.com/t/en ... in-windows-11.3286/
[7] Enable S3 sleep on Lenovo Yoga (IdeaPad) Slim 7 14are05 (and other models too) , https://valinet.ro/2020/12/08/En ... Slim-7-14are05.html
简要介绍下背景:Windows 7 以前,Windows 笔记本使用的都是 S3 睡眠模式,笔记本合盖后,只有内存会保持供电,其他设备都会断电。这一模式功耗极小,又能快速唤醒,纵然有时可能会因为软件/硬件问题出现无法入睡/无法唤醒的问题,但绝大部分时候还是很好用的。Windows 8 以后,微软力推 S0ix 「新式待机」(Modern Standby),初衷是为了让笔记本用户可以获得类似于智能手机的使用体验,如合盖后依然可以播放音乐,接收邮件。然而这一功能需要应用适配,用户体验比较糟糕,甚至会出现 SSD 读写次数飙升,笔记本合盖放着耗尽电量,或是放入包中后依然发热的现象[2]。
从上文来看,倘若你不喜欢「新式待机」的糟糕体验,那么只需要将睡眠模式下的电源状态从 S0ix 切换到 S3 就好了,似乎只是改个注册表键值的事[3]。可惜事情并没有这么简单。因为微软的力推,搭载 Intel 9 代,AMD 4000 代以及更新 CPU 的笔记本,很有可能已经从固件级别禁用了 S3 睡眠,而强制用户使用 S0ix 新式待机,就算改了注册表也没用。有的设备因为面向专业用户(如 ThinkPad 系列),还在 BIOS 中留有相关选项[4];有的设备可以进入隐藏模式开启 S3 支持,但并不能保证其实现正常,可能还会引入其他问题[5];绝大部分设备则是完全没有办法设定。表现出来的吊诡结果就是,很有可能几年前的 Windows 笔记本,盒盖睡眠的体验反倒比最近的笔记本更好。更糟糕的是,因为禁用 S3 的选择是在 BIOS 中做出的,即使放弃 Windows 转投 Linux,或是安装黑苹果(Hackintosh),也会受到无法正常睡眠的困扰。
那么有什么办法吗?最根本的自然是让笔记本厂商进行修正,在 BIOS 中加入相关选择项。从技术上来说加入 S3 支持并不是难事(很多时候其实只是被禁用了),但是可能因为发声的用户不够多,或者是需要加入额外的测试,也有可能是微软方面的压力,大部分厂商对用户的反馈充耳不闻。从用户角度,稍好一些的大概是禁用新式待机下的网络连接[6],可以减少一部分因为应用尝试连接网络带来的睡眠问题。更极端一些可以开启休眠模式,此时系统会将内存内容写入硬盘并完全断电,虽然会对 SSD 造成写入损耗,但只能说两权相害取其轻了。我自己在长距离移动需要将笔记本放入包中时,都会手动将系统休眠,以避免各种发热/电量问题。
不过既然本版块内容为「技术宅真可怕」,那当然要介绍下技术宅的解决方案。最近正好翻到了这样一篇文章[7]。作者的哥哥购买了一台联想的 Lenovo Yoga Slim 7 14ARE05 (国内版本为联想小新 Air 14 2020 AMD 版),出厂默认是「新式待机」,希望回退到正常的 S3 睡眠体验,于是向作者求助。作者经过一番尝试,选择了以下途径:先把 BIOS 中的 ACPI 表 dump 出来,手动将被禁用的 S3 模式启用并禁用 S0ix(其实就是删掉几个 if 语句),生成新的 ACPI 表,然后安装 OpenCore,将 patch 后的 ACPI 表加入 OpenCore 配置项,最后重新签名 EFI 固件。改动完成后,系统启动时会先调用 OpenCore 加载修改了的 ACPI 表,然后再进入 Windows 的引导过程。光听描述就知道这一过程十分曲折,然而就算开启了 S3 睡眠,也会有其他衍生问题,例如睡眠后键盘背光丢失,无法用内置键盘唤醒等。作者和他哥哥讨论后,最后还是选择了直接用休眠代替睡眠。
上文作者的感想:
> The unfortunate situation today is that computers simply ship with these broken BIOSes nowadays and one has to simply employ all sorts of ultimately stupid workarounds to fix the situations.
> 当下悲哀的状况是,笔记本出厂就带着这些破损的 BIOS,需要用各种奇技淫巧才能修正。
那么作为读者的你,能做什么呢?以下是一个简单的自测指南:
- 查看自己的设备是否开启了「新式待机」,以及是否支持 S3 睡眠:在命令提示符窗口中输入 powercfg /a ,检查「此系统上有以下睡眠状态:」后的显示值,如果第一行为「待机(S0 低电量待机)」,那你的设备当前的默认睡眠模式就是「新式待机」。然后继续阅读,找到「待机(S3)」,如果下一行显示「系统固件不支持此待机状态」,那你的设备固件不支持 S3 睡眠。
- 如果「新式待机」不是你设备的默认睡眠模式,那恭喜你。
- 如果「新式待机」是你设备的默认睡眠模式,但你使用中并没有遇到问题,那也恭喜你。
- 如果「新式待机」是你设备的默认睡眠模式,但你使用中遇到了问题,想要切换为 S3 睡眠且固件支持,请参见 [1] 中最后的段落修改注册表切换。
- 如果「新式待机」是你设备的默认睡眠模式,但你使用中遇到了问题,想要切换为 S3 睡眠但固件不支持,那你可以参见 [6] 禁用新式待机下的网络连接,可能可以缓解你的问题。
你还可以:
- 在可能的支持渠道(微博、厂家论坛、厂家支持 QQ 群)发声(尽管他们很有可能不会听)
- 购买出厂预装 Linux 的笔记本,然后重新装 Windows (这些设备可能对 S3 睡眠有更好的固件支持)
- 购买 Macbook (Macbook 也没有 S3 支持,但是得益于苹果对生态的控制力以及 Apple Silicon 的低功耗,睡眠体验似乎比 Windows 下好不少。我不是苹果用户,只是从身边的苹果用户听说。)
最后衷心祝愿各位都能让自己的设备称心如意。
> 如果都读到这里了,不妨将自己的设备型号和 S3 支持状态回复下。我使用的是 [7] 中作者哥哥的同款设备,联想小新 Air 14 (2020, AMD 版),固件不支持 S3。
---
注释及相关链接:
[1] 差评公众号,《用上了这项新技术,笔记本的续航越来越差了。。。》https://mp.weixin.qq.com/s/cwh1YLehrDsfG0ttM6KHuw
[2] 联想官方支持论坛中,某用户贴出了许多用户反馈各种睡眠问题的帖子链接, https://bbs.thinkpad.com/forum.p ... 88&pid=62795535
[3] 视 Windows 版本,可能为 CsEnabled (19H1 前) 或 PlatformAoAcOverride (20H2 后)
[4] ThinkPad 笔记本可以在 BIOS 中将 Sleep Mode 从 Windows 切换至 Linux, https://wiki.archlinux.org/title/Lenovo_ThinkPad_X1_Yoga_(Gen_4)#Enabling_S3
[5] 联想小新笔记本可以在 BIOS 隐藏设置中开启 S3,但会导致无法关机和其他问题, https://bbs.thinkpad.com/thread-7682695-1-1.html
[6] 可以改注册表,或者用组策略 https://www.elevenforum.com/t/en ... in-windows-11.3286/
[7] Enable S3 sleep on Lenovo Yoga (IdeaPad) Slim 7 14are05 (and other models too) , https://valinet.ro/2020/12/08/En ... Slim-7-14are05.html
只能自己更新设备的时候小心点,提前去线下确认了
我的设备可以进入隐藏 BIOS 设定,强制开启 S3,不过可能是联想的实现问题,如果开 S3 的话,只有第一次睡眠能正常进入 S3,后续都只是熄屏,处理器状态还是 S0,而且会出现无法关机的恶性 Bug,最后也只能放弃了。
新式待机推出到现在也至少有五年了,我现在对微软和厂商能修好这个功能已经没啥期望了...
补充:又想了一个类比,假设你的电脑在图书馆学习:
S0(正常运行)- 清醒的坐在桌前
S0ix(新式待机)- 靠在椅背上半睡半醒,但是如果突然有事情能立刻醒来
S3(睡眠)- 趴桌小憩,虽然也能醒,但是会慢一些
S4(休眠)- 回宿舍睡觉
然而我从不使用睡眠,只用锁屏、休眠、重启
记一下解决办法
以管理员身份运行命令提示符(鼠标右键windows图标,Windows PowerShell(管理员)),运行命令:powercfg -h on
右键左下角win图标-电源选项-其他电源设置
或
控制面板-硬件和声音-电源选项
选择电源按钮的功能
更改当前不可用的设置
关机设置,勾选需要的功能,其中包含休眠