/ 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からの提案もうまくいきませんでした。ただし、/proc/acpi/wakeupすべての中断の直前にusbプロパティを自動的に設定するスクリプトを作成できます。

このソリューションは、サスペンドフックの作成に基づいていますこの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
ありがとう!Sony VaioラップトップのUSBデバイスからの起動を無効にするようにこのスクリプトを変更しました:gist.github.com/rutsky/1ed8e9779f0b2941c5a6
Vladimir

LIDを開いたときにウェイクアップを無効にするようにスクリプトを変更しました(私の観点からすると、本当に愚かで迷惑な機能です)。ありがとうございました!
ガムキン14

この非常に便利なフックは、UbuntuおよびKubuntuでは機能しますが、Xubuntu 15.04では機能しません。なぜだろう... :(
リローダー

1
次に、pm-utilsの代わりにsystemdスリープフック用にVladimir Rutskyから変更されたスクリプトを示します。gist.github.com
ケピ

1
これがUbuntu 16.04用に更新できれば、それは素晴らしいことです。私はここからソリューションを使用しました:askubuntu.com/a/620555/463546(古いソリューション)ですが、全体的に少し面倒です。
アレクサンドルドゥビンスキー

9

おそらく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

うまくいけば、他の人が同じ問題をトラブルシューティングする必要がなくなります。


2

Ubuntu 15以降では、のsystemd代わりに使用する必要がありますrc.local。「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

またはこの要点で

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.