Linux 在电源插孔插入或拔出时从睡眠状态唤醒

Linux 在电源插孔插入或拔出时从睡眠状态唤醒

我在 Lenovo IdeaPad 5 Pro 14ACN6 上有一个新的 Linux Mint Xfce 21.1。当我关闭和打开盖子时,睡眠/唤醒工作正常,但有一个问题:睡眠唤醒操作系统时插入或拔出电源。我通过停止呼吸并亮起的“呼吸”LED 检测到醒来。
我需要一种方法来防止笔记本电脑因电源插拔事件而被唤醒。

为了自己解决这个问题,我检查了 BIOS 上与从睡眠中唤醒相关的每个选项。然后我在Linux的电源管理器中做了同样的事情。这没有帮助。
我尝试更改内核(5.15、5.19)。
我尝试调试ACPI来找到触发唤醒的事件。 ACPI调试级别和调试事件有丰富的设置,根据https://mjmwired.net/kernel/Documentation/acpi/debug.txt#115遗憾的是,日志记录要么没有提供任何信息,要么提供了太多带有内存访问地址的信息。所以我无法识别设置名称及其位置来关闭唤醒触发器。
我还找到了一个用于调试 ACPI 的简洁资源:https://wiki.ubuntu.com/Kernel/Reference/ACPITricksAndTips主要思想是 ACPi 调试并不容易。 ALS ACPI 语言被编译成 AML 代码,可以对其进行反汇编和分析,以查找供应商特定硬件的各种问题。但提到了一些工具,例如 acpidump。我试着跑acpi_监听合上盖子并拔掉电源后得到此日志:

acpi_listen  
button/lid LID close  
ac_adapter ACPI0003:00 00000080 00000000  
battery PNP0C0A:00 00000080 00000001  
button/lid LID open  

因此,显然有些电池事件不应该触发唤醒,但却会触发唤醒。

有一些有关睡眠模式的信息:https://news.ycombinator.com/item?id=25387947看来我的问题可能与“现代睡眠”S0ix 状态有关,即睡眠时不会关闭 CPU。但没有选项可以将其关闭。支持的睡眠状态为 S0 S4 S5:

dmesg |grep -i acpi| grep supports  
[    0.285799] ACPI: PM: (supports S0 S4 S5)  
[    0.322305] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI EDR HPX-Type3]  

答案1

经过额外的挖掘,我在这里找到了答案:https://wiki.archlinux.org/title/Lenovo_IdeaPad_5_14are05
原来,联想在BIOS中有很多隐藏的设置。您可以通过以下方式打开它们:

  1. 在 BIOS 设置中关闭 OneKeyBattery 模式(如果已启用),然后保存 BIOS 设置。
  2. 关闭笔记本电脑的电源。
  3. 在笔记本电脑关闭的情况下键入:F1 1 Q A Z F2 2 W S X F3 3 E D C F4 4 R F V F5 5 T G B F6 6 Y H N。您可能会注意到这种组合不是随机的。
  4. F2开机后按一下即可进入BIOS 。

AMD PBS部分中必须S3/Modern Standby Support将其从 更改Modern Standby EnableS3联想ideapad隐藏BIOS设置与睡眠模式

相关内容