Как предотвратить немедленное пробуждение от приостановки и / или гибернации?

В течение нескольких дней мой настольный компьютер 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

И найдите какое устройство будит ваш ПК.

А сейчас:

  1. хит в терминале:

    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, в моем примере, вернется к включенному.

  1. Напиши 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-порт, который пробуждает систему, или что-то еще:

  1. Узнайте, что может разбудить вашу систему:

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-устройство, которое вы должны нажать кнопку питания.

Рекомендации:

  1. https://wiki.debian.org/InstallingDebianOn/Apple/MacBookPro/Early-2015-13-inch#Immediate_wakeup_after_sleep

  2. https://wiki.archlinux.org/index.php/MacBookPro11,x

Я решил эту проблему простым способом, написав следующие строки, чтобы разрешить пробуждение только клавиатурой 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 или другим устройствам.

Другие вопросы по тегам