笔记本电脑无法暂停或休眠(2-5秒后唤醒,无需用户干预)


22

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

当我合上盖子或这样做时sudo pm-suspend,笔记本电脑将进入暂停状态2-5秒,然后自行唤醒。

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

我有种直觉,感觉某种东西正在唤醒/将CPU退出暂停模式,但我无法弄清楚是什么。

对解决此烦人的问题有帮助吗?

编辑:

多亏@Fabian,我才能够弄清楚以太网卡的行为是否正常,甚至在我将该卡设置为不通过lan唤醒后(执行acpitool -W 3echo 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


3
用于dmesg查看内核中的最新消息,其中的某些内容可以为您提供有关发生情况的线索。
roadmr 2014年

您是否在BIOS中禁用了“局域网唤醒”功能?
米奇

是的,那是我尝试的第一件事。
feniix 2014年

Answers:


10

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

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

11

以下为我工作:

cat /proc/acpi/wakeup

查找任何启用了状态的项目,看起来好像它们不属于那里(对我来说,除了LID0以外的任何东西)。然后通过说禁用它们,例如:

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

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


很好的领导,现在我需要弄清楚为什么即使我将集成以太网卡的唤醒模式设置为禁用,集成以太网卡仍会继续唤醒
feniix 2014年

1
祝你好运:)
Fabian

1
rmmod暂停之前您是否尝试过驱动程序?(只是在黑暗中开枪)
Rmano 2014年

在Ubuntu 16.04.1。中同样令人讨厌的问题。不幸的是,这个答案没有帮助。
Dan Dascalescu

+1这是唯一对我有用的解决方案。
Bandi Kishore

7

遇到完全相同的问题(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唤醒,所以我不知道它在修复中的表现。

笔记本电脑在使用Windows时存在相同的问题(我刚在电脑上为妻子安装了Windows 7,因为我有了一个新的),并且它的功能完全相同。因此,可能与硬件/固件有关
feniix 2014年

1
你好 我正在将Ubuntu 14.04 LTS与Thinkpad X201s一起使用。此解决方案使用小的帮助程序脚本删除了e1000e,这有助于重新挂起工作。非常感谢你 !
2014年

1
我可以确认相同的解决方案可以在Thinkpad T540p和Ubuntu 14.04上使用。e1000e模块内部似乎出了点问题。这只是偶尔发生,大多数情况下,挂起效果很好。如果出现问题I rmmod e1000e,那么我可以成功挂起。但是,如果我modprobe在恢复后再次使用它,即使存在该模块,下一次挂起也将起作用。因此,“重置”该e1000e模块似乎可以帮我解决问题。
mindriot

1

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

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

0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.