笔记本电脑无法挂起或休眠(无需用户交互,2-5 秒后唤醒)

笔记本电脑无法挂起或休眠(无需用户交互,2-5 秒后唤醒)

这一切都是在升级到 13.10 后开始发生的,现在我正在运行 14.04,仍然有同样的问题。

当我合上盖子或关闭时,sudo pm-suspend笔记本电脑会进入挂起状态 2-5 秒,然后自行唤醒。

如果我尝试休眠,也会发生同样的情况。

我有一种直觉,有什么东西正在唤醒/使 CPU 脱离挂起模式,但我不知道是什么。

有什么可以帮助解决这个恼人的问题吗?

编辑:

感谢@Fabian,我能够弄清楚,以太网卡似乎出现了问题,即使我将卡设置为不在局域网上唤醒(无论是执行acpitool -W 3还是echo disabled > /sys/bus/pci/devices/0000:00:19.0/power/wakeup执行echo IGBE > /proc/acpi/wakeup,笔记本电脑仍会不断唤醒并显示此信息acpitool -w

Device  S-state   Status   Sysfs node
---------------------------------------
1. LID    S3    *enabled 
2. SLPB   S3    *disabled
3. IGBE   S4    *enabled   pci:0000:00:19.0
4. EXP1   S4    *disabled  pci:0000:00:1c.0
5. EXP2   S4    *disabled  pci:0000:00:1c.1
6. EXP3   S4    *disabled
7. EXP4   S4    *disabled
8. EXP5   S4    *disabled  pci:0000:00:1c.4
9. EHC1   S3    *disabled  pci:0000:00:1d.0
10. EHC2      S3    *disabled  pci:0000:00:1a.0
11. HDEF      S4    *disabled  pci:0000:00:1b.0

知道接下来该如何进行吗?

IGBE 使用的网络驱动程序是e1000e

答案1

以下对我有用:

cat /proc/acpi/wakeup

查找任何状态为已启用但看起来不属于那里的项目(对我来说,除了 LID0 之外的任何项目)。然后通过以下方式禁用它们,例如:

sudo sh -c "echo XHC0 > /proc/acpi/wakeup"

检查相应的条目确实已被禁用,将笔记本电脑置于挂起状态并希望获得最佳效果:)

答案2

我有内核 13.13 和基于 Intel Z77X 的主板,以下命令对我有用:

sudo sh -c "echo EHC1 > /proc/acpi/wakeup;echo EHC2 > /proc/acpi/wakeup;echo XHC > /proc/acpi/wakeup"

答案3

遇到完全相同的问题(ThinkPad T530,Ubuntu 14.04,还有13.10和13.04,经过几次挂起后,计算机在挂起后立即恢复)。

从唤醒状态禁用 IBGE 根本没有帮助。

按照 Romano 的建议,我尝试移除 e1000e 模块,然后一切就如预期般暂停了。

所以:

sudo rmmod e1000e

暂停之前解决了该问题。

有趣的是,在重新安装模块()并暂停而不移除模块后,问题立即再次出现sudo modprobe e1000e。所以,这一定与硬件有关。

为了实现自动化,我创建了两个简单的挂起/唤醒脚本(在上述硬件 Ubuntu Trusty 14.04 上测试)sudo gedit /etc/pm/sleep.d/99_e1000e_remove

#!/bin/sh

# Remove e1000e kernel module prior to suspend
rmmod e1000e

sudo gedit /etc/pm/power.d/99_e1000e_probe

#!/bin/sh

# Modprobe e1000e kernel module after resume
modprobe e1000e

脚本应该是可执行的(sudo chmod +x /etc/pm/sleep.d/99_e1000e_remove /etc/pm/power.d/99_e1000e_probe)。

笔记:

  • 我认为即使这些脚本不能解决您的问题,使用起来也是非常安全的。
  • 我没有使用 LAN 唤醒,所以我不知道修复后它会如何表现。

答案4

systemd 的解决方案是创建一个指令,让 systemd-tmpfiles 在调用时将一些内容写入文件。

在 中创建一个文件/etc/tmpfiles.d,例如/etc/tmpfiles.d/disable-network-wake.conf,包含以下内容,具体取决于您要禁用唤醒的设备。

w /proc/acpi/wakeup - - - - XHC

另请参阅 systemd-tmpfiles(8) 和 tmpfiles.d(5)。

参考:https://wiki.archlinux.org/index.php/Systemd#Temporary_files

相关内容