Как предотвратить немедленное пробуждение от приостановки и / или гибернации?
В течение нескольких дней мой настольный компьютер Ubuntu 12.04 таинственным образом просыпался сразу после перехода в режим ожидания.
После установки мой ноутбук Ubuntu 12.10 также возобновлял работу сразу после приостановки и спящего режима.
Как это предотвратить?
6 ответов
Эта проблема, вероятно, была вызвана странными сигналами USB. gedit /proc/acpi/wakeup
показал, что пробуждение было включено для USB0 и USB2.
sudo -s
echo USB0 > /proc/acpi/wakeup
echo USB2 > /proc/acpi/wakeup
переключил их на отключенный (проверено gedit /proc/acpi/wakeup
снова или обновляя представление файла), и после этого компьютер остается в режиме ожидания, как и должно.:-)
Недавно у меня был такой же симптом на Asus Zenbook Pro UX501 на Ubuntu 15.04. Точное исправление Базона не сработало, но вариация Владимира Руцкого сработала. В частности:
Если работает из терминала cat /proc/acpi/wakeup
показывает следующие строки
EHC1 S3 *enabled pci:0000:00:xx.x
EHC2 S3 *enabled pci:0000:00:xx.x
XHC S3 *enabled pci:0000:00:xx.x
(адреса pci могут отличаться)
затем переключите эти три в отключенное состояние, введя следующие команды:
sudo -s
echo EHC1 > /proc/acpi/wakeup
echo EHC2 > /proc/acpi/wakeup
echo XHC > /proc/acpi/wakeup
Если вы знаете, на каком устройстве вы просыпаетесь, перейдите к первому шагу и следуйте инструкциям. Если нет, откройте терминал и выполните:
cat /var/log/syslog
И найдите какое устройство будит ваш ПК.
А сейчас:
хит в терминале:
grep . /sys/bus/usb/devices/*/power/wakeup
Чтобы перечислить все USB-порты, которые пробуждают наш компьютер.
sudo su
теперь у нас есть права root.
2. У меня 8 портов USB, и в этом примере, скажем, я хочу отключить usb8, поэтому:
echo disabled > /sys/bus/usb/devices/usb8/power/wakeup
Идите и проверьте это. Теперь это конкретное устройство в USB-порту 8 не разбудит ПК.
Следующий шаг, чтобы сделать изменение постоянным после каждой загрузки:
3.
sudo nano /etc/rc.local
И мы вставляем команду из шага 2. Там (до выхода 0, конечно).
Вот и все.
опционально, только если после процесса сна / пробуждения устройство USB 8, в моем примере, вернется к включенному.
- Напиши
udev
Правило также выполнять команду после каждой загрузки, сна, пробуждения.
Откройте терминал и выполните:
lsusb
В информации об идентификаторе устройства клавиатуры 4 первые цифры - это идентификатор поставщика, а 4 следующие цифры - это идентификатор продукта.
Далее делаем:
sudo nano /etc/udev/rules.d/10-wakeup.rules
Где "пробуждение" введите желаемое имя скрипта. Число 10 является приоритетом, если у вас есть много других правил udev, чем меньше число, которое будет выполняться "правилом" перед остальными.
Скопируйте, вставьте его и замените идентификатор поставщика и идентификатор продукта на собственный идентификатор поставщика беспроводной клавиатуры и идентификатор продукта.
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="062a", ATTRS{idProduct}=="4101" RUN+="/bin/sh -c 'echo disabled > /sys/bus/usb/devices/usb8/power/wakeup'"
* usb8 для меня - моя беспроводная клавиатура (вы также можете видеть это на скриншоте (шина 008)), замените ее на свою.
Ctrl + O для сохранения, Ctrl + X для выхода и перезагрузки.
Сделать исправление постоянным
(Я собираю решения, предоставленные Базоном, Иликероботсом и Павлосом Теодору - вместе они решают мою конкретную проблему)
Чтобы навсегда решить проблему, будь то USB-порт, который пробуждает систему, или что-то еще:
- Узнайте, что может разбудить вашу систему:
gedit / proc / acpi / wakeup
Вы можете получить эти или похожие строки:
EHC1 S3 * включен pci:0000:00:xx.x
EHC2 S3 * включен pci:0000:00:xx.x
XHC S3 * включен pci:0000:00:xx.x
Затем откройте:
sudo gedit /etc/rc.local
и добавьте эти строки (или аналогичные, в зависимости от результатов выше) перед exit 0
echo EHC1> / proc / acpi / wakeup
echo EHC2> / proc / acpi / wakeup
echo XHC> / proc / acpi / wakeup
Вот что у меня сработало на моем Mac Book Pro 2015
Я добавил следующее в
/lib/systemd/system-sleep/wakeup_disable
#!/bin/sh
# /lib/systemd/system-sleep/wakeup_disable
#
# Avoids that system wakes up immediately after suspend or hibernate
#
# Tested on MacBookPro 2015
case $1 in
pre)
if grep -qE '^XHC1.*enabled' /proc/acpi/wakeup; then
echo XHC1 > /proc/acpi/wakeup
fi
if grep -qE '^LID0.*enabled' /proc/acpi/wakeup; then
echo LID0 > /proc/acpi/wakeup
fi
;;
esac
Обратите внимание, что это предотвратит пробуждение через открытие крышки и через клавиатуру / мышь /USB-устройство, которое вы должны нажать кнопку питания.
Рекомендации:
Я решил эту проблему простым способом, написав следующие строки, чтобы разрешить пробуждение только клавиатурой PS2:
for d in `cat /proc/acpi/wakeup |grep enabled|grep -v PS2K|cut -b -4`; do
echo $d >/proc/acpi/wakeup ;
done
Когда Linux загружается, он выполняет
/etc/rc.local
файл, отключающий пробуждение по USB или другим устройствам.