笔记本电脑无法暂停或hibernate(在没有用户交互的情况下2-5秒后唤醒)

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

当我关闭盖子或者我做sudo pm-suspend ,笔记本电脑会暂停2-5秒并自行唤醒。

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

我有一种直觉,认为某些东西正在唤醒/将cpu从暂停模式中取出但我无法弄清楚是什么。

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

编辑:

感谢@Fabian,我能够发现它看起来像以太网卡行为不端甚至在我将卡设置为不在局域网唤醒之后(执行acpitool -W 3或者echo disabled > /sys/bus/pci/devices/0000:00:19.0/power/wakeupecho 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

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

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

以下对我有用:

 cat /proc/acpi/wakeup 

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

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

检查相应的条目是否确实被禁用,将笔记本电脑暂停并希望最好:)

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

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

正如Romano所建议的,我已经尝试删除了e1000e模块,并按预期删除了voila。

所以:

 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 )。

笔记:

  • 我假设脚本使用起来非常安全,即使它没有解决您的问题。
  • 我没有使用局域网唤醒,所以我不知道它的修复方式如何。

这对我有用(取自askubuntu上的另一个post):

Ubuntu 14.04暂停后立即醒来

您可以尝试在每次启动时使用Upstart脚本自动禁用它:

创建一个文件etc/init/disable-XHC.conf

内容:

 start on started dbus stop on stopping dbus script sudo -u root sh -c "echo 'XHC' > /proc/acpi/wakeup" end script 

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