Як зробити зміни в / proc / acpi / wakeup постійними?


17

У мене виникла проблема з пробудженням мого Ubuntu 12.04 одразу після зупинки роботи. Я вирішив проблему, змінивши налаштування в / proc / acpi / wakeup, як це запропоновано в цьому запитанні: Як запобігти негайному пробудженню від призупинення та / або сплячки? .

Після зміни налаштувань система бездоганно призупиняється і залишається призупиненою, але після того, як я прокидаю її назад, налаштування в / proc / acpi / wakeup відрізняються від встановлених ними.

Перш ніж призупинити:

cat /proc/acpi/wakeup
Device  S-state   Status   Sysfs node
SMB0      S4    *disabled  pci:0000:00:03.2
PBB0      S4    *disabled  pci:0000:00:09.0
HDAC      S4    *disabled  pci:0000:00:08.0
XVR0      S4    *disabled  pci:0000:00:0c.0
XVR1      S4    *disabled  
P0P5      S4    *disabled  
P0P6      S4    *disabled  pci:0000:00:15.0
GLAN      S4    *enabled   pci:0000:03:00.0
P0P7      S4    *disabled  pci:0000:00:16.0
P0P8      S4    *disabled  
P0P9      S4    *disabled  
USB0      S3    *disabled  pci:0000:00:04.0
USB2      S3    *disabled  pci:0000:00:04.1
US15      S3    *disabled  pci:0000:00:06.0
US12      S3    *disabled  pci:0000:00:06.1
PWRB      S4    *enabled   
SLPB      S4    *enabled

Я кажу системі призупинити роботу, і вона працює як слід. Але пізніше після його пробудження налаштування змінюються на:

USB0      S3    *disabled  pci:0000:00:04.0
USB2      S3    *enabled   pci:0000:00:04.1
US15      S3    *disabled  pci:0000:00:06.0
US12      S3    *enabled   pci:0000:00:06.1

або

USB0      S3    *enabled   pci:0000:00:04.0
USB2      S3    *enabled   pci:0000:00:04.1
US15      S3    *enabled   pci:0000:00:06.0
US12      S3    *enabled   pci:0000:00:06.1

Будь-які ідеї?


Спасибі за вашу відповідь. На жаль, це не вирішило моєї проблеми.

всі

/sys/bus/usb/devices/usb1/power/wakeup
/sys/bus/usb/devices/usb2/power/wakeup
/sys/bus/usb/devices/usb3/power/wakeup
/sys/bus/usb/devices/usb4/power/wakeup

так само, як

/sys/bus/usb/devices/3-1/power/wakeup

встановлені на інвалід, і ноутбук все ще прокидається безпосередньо після сну. Єдине, на що, схоже, реагують, це налаштування в / proc / acpi / wakeup, які постійно змінюються (перезавантажуються) щоразу, коли я вимикаю / перезавантажую свій ноутбук.

Відповіді:


11

Я знову зіткнувся з цією проблемою на Ubuntu 12.10. Пропозиції користувача MTS, на жаль, також не спрацювали для мене. Однак ви можете написати сценарій, щоб автоматично встановити властивості usb /proc/acpi/wakeupперед кожним призупиненням.

Рішення базується на створенні підвісного гачка (на основі цієї статті Archwiki ). Збережіть наведене нижче як /usr/lib/pm-utils/sleep.d/45fixusbwakeupі переконайтеся, що це виконується ( chmod +x /usr/lib/pm-utils/sleep.d/45fixusbwakeup).

#!/bin/bash
case $1 in
    hibernate)
            echo "Going to suspend to disk!"
            ;;
    suspend)
            echo "Fixing acpi settings."
            for usb in `cat /proc/acpi/wakeup | grep USB | cut -f1`;
            do
                    state=`cat /proc/acpi/wakeup | grep $usb | cut -f3 | cut -d' ' -f1 | tr -d '*'`
                    echo "device = $usb, state = $state"
                    if [ "$state" == "enabled" ]
                    then
                            echo $usb > /proc/acpi/wakeup
                    fi
            done
            echo "Suspending to RAM."
            ;;
    thaw)
            echo "Suspend to disk is now over!"
            ;;
    resume)
            echo "We are now resuming."
            ;;
    *)
            echo "Somebody is callin me totally wrong."
            ;;
esac

Це означає, що це змінить статус кожного USB-пристрою, який увімкнено на даний час. Якщо ви хочете змінити лише конкретні USB-пристрої, змініть цикл for у сценарії. Наприклад, змінити лише зміни USB1 та USB3

for usb in `cat /proc/acpi/wakeup | grep USB | cut -f1`;

до

for usb in 'USB1' 'USB3';

Сподіваємось, це допомагає комусь іншому, хто має ту ж проблему. Такий підхід вирішив для мене питання.


1
Спасибі! Я змінив цей сценарій, щоб відключити завантаження з USB-пристроїв на своєму ноутбуку Sony Vaio: gist.github.com/rutsky/1ed8e9779f0b2941c5a6
Володимир Руцький

Я змінив ваш сценарій, щоб відключити пробудження на відкритому LID (справді дурна і дратівлива функція з моєї точки зору). Дякую!
gumkins

Цей додатковий корисний гак працює в Ubuntu & Kubuntu, але не в Xubuntu 15.04. Цікаво, чому ... :(
Перезавантажувач

1
Ось модифікований сценарій від Володимира Руцького для системного гачка сну замість pm-utils: gist.github.com/kepi/9dea7aee8a59f3e7c10a
Kepi

1
Якби це могло бути оновлено для Ubuntu 16.04, було б чудово. Я використовував тут рішення: askubuntu.com/a/620555/463546 (старіше рішення), але це трохи громіздко загалом.
Олександр Дубінський

9

Можливо, http://forum.xbmc.org/showthread.php?tid=121158 допоможе?

Ось що говорить:

Для тих, хто оновлює ядро ​​3.2 (яке повинно бути всім через недавнє використання root), ви помітите, що ваш USB-сигнал пробудження, ймовірно, порушений. Вони змінили політику пробудження за замовчуванням ( http://www.spinics.net/lists/linux-usb/msg53661.html ), тому вам потрібно буде внести кілька змін:

  • вам більше не потрібно включати будильник /proc/acpi/wakeup, він увімкнено за замовчуванням
  • вам потрібно включити будильник для USB-концентратора на додаток до пристрою в /sys/bus/usb/devices/*/power/wakeup

Отже, це:

echo USB1 > /proc/acpi/wakeup
echo enabled > /sys/bus/usb/devices/3-1/power/wakeup

Стає:

echo enabled > /sys/bus/usb/devices/usb3/power/wakeup
echo enabled > /sys/bus/usb/devices/3-1/power/wakeup

Сподіваємось, це позбавить інших від усунення цієї ж проблеми.


2

Для Ubuntu 15+ потрібно використовувати systemdзамість rc.local. Ви можете google "Створення системної служби" і слідувати вказівкам, але зауважте, що перенаправлення виводу на /proc/acpi/wakeupнього складне. Щоб правильно працювати, потрібно зробити щось на кшталт:

/bin/sh -c '/bin/echo XHC > /proc/acpi/wakeup'

Приклад виводу сервісного файлу (наприклад, /etc/systemd/system/suspendfix.service):

[Unit]
Description=fix to prevent system from waking immediately after suspend

[Service]
ExecStart=/bin/sh -c '/bin/echo XHC > /proc/acpi/wakeup'
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Або ось у цій суті

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.