Как мне внести изменения в / proc / acpi / wakeup перманент?

У меня была проблема с пробуждением 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, которые меняются (сбрасываются) каждый раз, когда я выключаю / перезагружаю свой ноутбук.

17
задан 13 April 2017 в 15:24

3 ответа

Я снова столкнулся с этой проблемой в Ubuntu 12.10. Предложения от пользователя МТС, к сожалению, также не сработали для меня. Однако вы можете написать скрипт для автоматической установки свойств 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';

. Надеюсь, это поможет кому-то еще, кто имеет такую ​​же проблему. Этот подход решил проблему для меня.

0
ответ дан 13 April 2017 в 15:24

Для Ubuntu 15+ вы должны использовать systemd вместо rc.local. Вы можете зайти в Google «Создание службы systemd» и следовать инструкциям, но учтите, что перенаправить вывод на /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

Или здесь в этом [ 116] суть

0
ответ дан 13 April 2017 в 15:24

Возможно, http://forum.xbmc.org/showthread.php?tid=121158 поможет?

Это - то, что это говорит:

Для тех, кто обновляет к 3,2 ядрам (который должен быть всеми из-за недавнего корневого использования), Вы заметите, что Ваше пробуждение 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

Надо надеяться, это сохраняет других от поиска и устранения неисправностей той же проблемы.

9
ответ дан 13 April 2017 в 15:24

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

Похожие вопросы: