ноутбук не может зависнуть или перевести в спящий режим (просыпается через 2-5 секунд без участия пользователя)

22

Все это начало происходить после обновления до 13.10, сейчас я работаю 14.04 и все еще имею ту же проблему.

Когда я закрываю крышку или делаю sudo pm-suspendэто, ноутбук переходит в режим ожидания на 2-5 секунд и самостоятельно просыпается.

То же самое происходит, если я пытаюсь сделать спящий режим.

У меня есть ощущение, что что-то просыпается / выводит процессор из режима ожидания, но я не могу понять, что.

Любая помощь в устранении этой раздражающей проблемы?

Редактировать:

Благодаря @Fabian, я смог выяснить, что похоже, что карта Ethernet работает неправильно, и даже после того, как я установил карту, чтобы она не просыпалась по локальной сети (при выполнении 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

feniix
источник
3
используйте dmesgдля просмотра последних сообщений из ядра, что-то там может дать вам подсказку о том, что происходит.
roadmr
Вы отключили функцию Wake-On-Lan в BIOS?
Митч
Да, это было первое, что я попробовал.
Феникс

Ответы:

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"

Убедитесь, что соответствующие записи действительно отключены, отправьте ноутбук в режим ожидания и надейтесь на лучшее :)

Fabian
источник
Очень хороший результат, теперь мне нужно выяснить, почему встроенная сетевая карта продолжает просыпаться, даже если я установил для нее режим пробуждения
feniix
1
Удачи с этим :)
Фабиан
1
Вы пробовали rmmodводителя, прежде чем приостановить? (Просто выстрел в темноте)
Rmano
Та же самая досадная проблема в Ubuntu 16.04.1. Этот ответ, к сожалению, не помог.
Дан Даскалеску
+1 Это единственное решение, которое сработало для меня.
Банди Кишор
7

Испытывает точно такую ​​же проблему (ThinkPad T530, Ubuntu 14.04, но также 13.10 и 13.04, после нескольких приостановок, компьютер возобновляет работу сразу после приостановки).

Отключение IBGE из пробуждения совсем не помогло.

По предложению Романо, я попытался удалить модуль e1000e, и вуаля приостановить, как ожидалось.

Так:

sudo rmmod e1000e

до приостановки решает проблему.

Интересно, что проблема вновь появляется сразу после установки модуля back ( 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).

Заметки:

  • Я предполагаю, что сценарии довольно безопасны в использовании, даже если они не решают вашу проблему.
  • Я не использую пробуждение по локальной сети, поэтому я не знаю, как оно ведет себя с исправлением.
sopvkore
источник
У ноутбука та же проблема с Windows (я только что установил Windows 7 для своей жены в компьютере, потому что я получил новую), и он делает то же самое. Так что это может быть связано с аппаратным обеспечением / прошивкой
feniix
1
Здравствуй. Я использую Ubuntu 14.04 LTS с Thinkpad X201s. Это решение, устраняющее e1000e с помощью небольших вспомогательных сценариев, помогло снова приостановить работу. Большое спасибо !
APOS
1
Я могу подтвердить, что такое же решение работает на Thinkpad T540p и Ubuntu 14.04. Кажется, что-то идет не так внутри e1000eмодуля. Это случается только иногда, в большинстве случаев приостановка работает хорошо. Если проблема появляется, я rmmod e1000e, то я могу успешно приостановить. Тем не менее, если я modprobeснова произвожу это после возобновления, следующая приостановка будет работать даже при наличии модуля. Таким образом, «сброс» e1000eмодуля, кажется, делает свое дело для меня.
mindriot
1

У меня это сработало (взято из другой ветки на аскубунту):

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#Teilitary_files

FichteFoll
источник