Если я пытаюсь приостановить работу системы, она просто просыпается либо сразу, либо через пару минут. У меня есть выдержка из моего системного журнала, показывающая, когда он вошел в режим ожидания и вышел, но я не знаю, как загрузить его здесь в удобном для чтения формате.
У меня возникла та же проблема после обновления с Ubuntu 16.04 до Ubuntu 18.04.
Я решил отключить функцию пробуждения для устройства, которое в моем случае было включено.
$ cat /sys/bus/usb/devices/*/power/wakeup
disabled
enabled
disabled
disabled
$ ll /sys/bus/usb/devices/*/power/wakeup
-rw-r--r-- 1 root root 4,0K mag 19 11:04 /sys/bus/usb/devices/1-7/power/wakeup
-rw-r--r-- 1 root root 4,0K mag 19 11:02 /sys/bus/usb/devices/1-9/power/wakeup <-- the bad guy
-rw-r--r-- 1 root root 4,0K mag 19 10:46 /sys/bus/usb/devices/usb1/power/wakeup
-rw-r--r-- 1 root root 4,0K mag 19 10:46 /sys/bus/usb/devices/usb2/power/wakeup
Но что действительно помогло мне идентифицировать устройство, так это его идентификаторы.
cat /sys/bus/usb/devices/1-9/idVendor
8087
cat /sys/bus/usb/devices/1-9/idProduct
0a2b
Немного погуглив, выясняется, что это контроллер bluethooth. https://usb-ids.gowdy.us/read/UD/8087/0a2b
Наконец отключите его
echo "disabled" > /sys/bus/usb/devices/1-9/power/wakeup
Теперь мой ноутбук действительно зависает. Надеюсь, это вам тоже поможет.
У меня работает кнопка питания.
Мы можем настроить его в настройках на приостановку (вместо выключения).
(Вы всегда можете долго нажимать, чтобы принудительно завершить работу).
Здесь кажется, что блокнот не останется приостановленным, если я использую приложение/команду приостановки из меню.
Я также попытался отключить пробуждение всех USB, но здесь это не сработало.
Я догадываюсь, что кнопка питания работает, потому что я не касаюсь клавиатуры. Даже отключенный, я все еще могу использовать клавиатуру для пробуждения.
Простой скрипт для добавления в bashrc на основе ответа cventr:
for path in `sudo ls -l /sys/bus/usb/devices/*/power/wakeup | awk '{print $9}'`;
do
sudo echo "disabled" > $path
done
Я также использую этот:
for usb in `cat /proc/acpi/wakeup | grep ".*" | cut -f1`;
do
state=`cat /proc/acpi/wakeup | grep $usb | cut -f3 | cut -d' ' -f1 | tr -d '*'`
if [ "$state" == "enabled" ]
then
echo $usb > /proc/acpi/wakeup
fi
done