这一切都是在升级到 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