#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 睡眠,也会有其他衍生问题,例如睡眠后键盘背光丢失,无法用内置键盘唤醒等。作者和他哥哥讨论后,最后还是选择了直接用休眠代替睡眠。 (bgm38)

上文作者的感想:
> 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
#2 - 2022-7-2 05:47
(いつか忘れる本の題名)
(bgm38)更新吃屎系列
#3 - 2022-7-2 06:12
(迷子でもいい、迷子でも進め。)
Yoga 14s IHU 2021,不知道是不是因为当时选了独显版,所以我这配置没有 Evo 认证。试了下改注册表就能轻易启用 S3,但是可能是我平时不插电的时候都习惯随手关机,也没发现睡眠发热的情况。(bgm38)
#4 - 2022-7-2 08:03
(毒性非常大,小孩看了会犯错误,会犯很大的错误 ...)
我也是修改注册表关掉S0ix的,
我发现
联想某些Intel本S0ix发热掉电, 某些AMD本休眠开机卡死
综上,全换成s3完事
#5 - 2022-7-2 16:36
(都是异端!)
(bgm38)写得真好 我读到2/3处时还以为下面会给我什么用户反馈通道呼吁我们联名发声……
#5-1 - 2022-7-2 20:31
NekoNull
然而现在看来发声的用途可能不大 (bgm38)
只能自己更新设备的时候小心点,提前去线下确认了
#5-2 - 2022-7-2 21:08
矮木油希希
NekoNull 说: 然而现在看来发声的用途可能不大
只能自己更新设备的时候小心点,提前去线下确认了
(bgm38)好的 准Windows用户铭记在心!我也确实看完这篇后对选机更加小心了
#6 - 2022-7-2 16:48
(已经看过无数的梦境,梦醒之时仍想再沉醉其中。 ... ...)
5年前的拯救者 默认S3不支持S0(bgm38)
#7 - 2022-7-2 17:51
(There’s magic here tonight.)
Lenovo AMD的电脑可以尝试: https://zhuanlan.zhihu.com/p/184982689

AMD AGESA的CBS选项里是一定有S3 Si0x开关的...只是厂商不一定开放,有些时候用RW Everything也能改.....

其实更应该做的还是督促硬件和OS厂商修好Si0x。Modern Sleep是好东西,前提是他工作。
#7-1 - 2022-7-2 20:22
NekoNull
捕捉大佬!RyzenAdj 之前曾帮了我大忙!
我的设备可以进入隐藏 BIOS 设定,强制开启 S3,不过可能是联想的实现问题,如果开 S3 的话,只有第一次睡眠能正常进入 S3,后续都只是熄屏,处理器状态还是 S0,而且会出现无法关机的恶性 Bug,最后也只能放弃了。
新式待机推出到现在也至少有五年了,我现在对微软和厂商能修好这个功能已经没啥期望了... (bgm38)
#8 - 2022-7-2 17:51
还有一个问题:支持S0ix且内置TPM的设备在首次开机时会进行全盘BitLocker加密
#9 - 2022-7-2 20:47
(V1046-R MAHORO)
问个弱智问题,所以S0ix和S0是一个东西?
#9-1 - 2022-7-2 21:03
NekoNull
S0是系统正常运行的电源状态,S0ix则是类似于系统主要功能还在运行,但是周围设备暂时停止的状态。一个类比是手机亮屏使用vs锁屏,不过这不太准确。
补充:又想了一个类比,假设你的电脑在图书馆学习:
S0(正常运行)- 清醒的坐在桌前
S0ix(新式待机)- 靠在椅背上半睡半醒,但是如果突然有事情能立刻醒来
S3(睡眠)- 趴桌小憩,虽然也能醒,但是会慢一些
S4(休眠)- 回宿舍睡觉
#10 - 2022-9-13 00:29
我直接让他所有睡眠都变hibernate了,电量更重要
#11 - 2022-9-13 02:38
(Life, what is it but a dream?)
看了看这个注册表值以前竟然也改过,是为了让网卡显示电源管理改的。不过改之后也有各种问题,比如有时候睡眠直接变成了关机,睡眠以及启动时间特别长,睡眠起来之后并不能保持外接显示器连接状态(还得把线拔出再插入才行),所以还是改回去了。
想了想要是放包里的话还是直接用S4休眠吧(bgm38)
#12 - 2022-9-14 09:56
去年买的笔电,只支持S3,不支持S0(bgm88)......

powercfg /a 运行结果如下:

此系统上有以下睡眠状态:
    待机 (S3)
    休眠
    混合睡眠

此系统上没有以下睡眠状态:
    待机 (S1)
        系统固件不支持此待机状态。

    待机 (S2)
        系统固件不支持此待机状态。

    待机(S0 低电量待机)
        系统固件不支持此待机状态。

    快速启动
        当前系统策略禁用此动作。
#12-1 - 2022-9-14 10:06
Sam Toki
同,2019年的华硕笔记本:
The following sleep states are available on this system:
    Standby (S3)
    Hibernate
    Hybrid Sleep
    Fast Startup
The following sleep states are not available on this system:
    Standby (S1)
        The system firmware does not support this standby state.
    Standby (S2)
        The system firmware does not support this standby state.
    Standby (S0 Low Power Idle)
        The system firmware does not support this standby state.

然而我从不使用睡眠,只用锁屏、休眠、重启(bgm38)
#13 - 2022-9-14 11:27
(noblesse oblige)
Thinkbook 14p AMD 2021版 不支持S3(bgm38)
#13-1 - 2022-10-14 12:58
Thunder
某次win10更新把我的休眠也给搞没了(bgm38)
记一下解决办法

以管理员身份运行命令提示符(鼠标右键windows图标,Windows PowerShell(管理员)),运行命令:powercfg -h on

右键左下角win图标-电源选项-其他电源设置

控制面板-硬件和声音-电源选项

选择电源按钮的功能
更改当前不可用的设置
关机设置,勾选需要的功能,其中包含休眠
#14 - 2022-9-14 19:01
(Death is the gateway to Eternity, my dear.)
华硕天选2,只支持断网模式的 S0
查了下,原来我们平时说的关机是 S5 (bgm39)
Soft Off state (S5)

The soft off state is when the system fully shuts down without a hibernation file. Soft off is also known as a "full shutdown." During a full shutdown and boot, the entire user session is torn down and restarted on the next boot. Consequently, a boot/startup from this state takes significantly longer than S1-S4. A full shutdown (S5) occurs when a system restart is requested (or an application calls a shutdown API).
#15 - 2022-10-14 17:41
([s]安静点格子[/s] ☄️⚓ ☁️⭐️)
一直用的都是休眠,拿到电脑第一件事就是睡眠改休眠
其实休眠才是以前的待机,睡眠以前就叫睡眠,现在啥都叫待机了(bgm52)
休眠的缺点是进入、退出都比较耗时,SSD会因为内存缓存的关系占用100%,并且产生很大的hiberfil.sys文件。但好处是基本不会有其他奇奇怪怪问题,不会休眠死。
#15-1 - 2023-6-25 01:55
東瀬まつり🦋❄️🐻💎🐺🍎🐠
这点还是mac好,苦于新笔记本待机不足,现在喜欢直接合盖睡眠,经常睡死。笔记本还是买mac air吧,续航久噪音小,就算macos很难用。台式PC可以自己装然后上windows(bgm77)
#16 - 2023-6-25 01:42
(大胆想象,谨慎思考)
这几天修新机器进不去S0ix的问题简直是掉头发
#16-1 - 2023-6-25 10:20
⏳TraceBack⏳
先强行hibernate了,过几天patch DSDT试试看
#17 - 2023-6-25 01:54
(为了理解彼此,反复交换各式各样的话语吧 ...)
既然被洛阳铲了那我正好也补一下,新买的LG Gram现在是这样(bgm38)
The following sleep states are available on this system:
    Standby (S0 Low Power Idle) Network Connected
    Hibernate
    Fast Startup

The following sleep states are not available on this system:
    Standby (S1)
        The system firmware does not support this standby state.
        This standby state is disabled when S0 low power idle is supported.

    Standby (S2)
        The system firmware does not support this standby state.
        This standby state is disabled when S0 low power idle is supported.

    Standby (S3)
        This standby state is disabled when S0 low power idle is supported.

    Hybrid Sleep
        Standby (S3) is not available.
        The hypervisor does not support this standby state.
整bios什么的就不搞了,我选择直接把电源键设置成hibernate然后合盖前按一下。硬盘嘛,不就是拿来用的,做好备份不要心疼。

edit: 嘿,看来是支持s3的,用lz链接里的一键添加注册表给开起来了,现在可以放心合盖了。
#18 - 2023-6-25 02:22
(15歳も、18も。今だって、変わらない。)
我也做过这些东西。我还在联想某半官方性质的群忍不住憋出过OEM为什么不努力的质问。
最后全是问题。结论只有五个字,和正文一模一样:

改用休眠了
#19 - 2023-6-25 02:31
x86平台固件属实拉跨,正好此时杀出了apple silicon,解决了需要带着跑的笔记本面对的所有功耗问题。还得是你果子爹,移动端再不可能碰x86
#20 - 2023-6-25 08:45
(表达能力极差)
今年买的笔记本,只支持 S3(bgm38)
#21 - 2023-6-25 16:27
Dell Vostro 7500, 也是用了曲折的方法先把ACPI表dump出来,再用一个修改版的grub修改被隐藏的CFG Lock值才改出来S3睡眠的,虽然过程挺曲折,好在用起来确实没啥问题。