Kubuntu::サスペンドから勝手に復帰してしまう件
事象
Kubuntuであれこれ作業したのち、サスペンド状態にしておいたのですが、どういうわけか勝手に復帰していて、バッテリーが残りわずかになっていました。
環境
- Kubuntu 18.04
- ZenBook S UX391UA
類例を探す
多分、このあたりでしょうか。
自分の環境で設定を確認してみます。
$ cat /proc/acpi/wakeup | grep enable XHC S3 *enabled pci:0000:00:14.0
現状、XHC(USB 3.0)の設定が、唯一*enabled
となってるので、サスペンドからの復帰の原因としては有力です。
対処
XHCの設定を永続的に*disabled
に切り替える仕組みがあれば良さそうです。
今回は、Unitを書いて自動起動する方法で実現してみます。
設定の切り替え方法を確認
まず、/proc/acpi/wakeup
のXHCの設定を一時的に切り替える方法の確認です。
切り替えたいDevice名の文字列を/proc/acpi/wakeup
に向けてリダイレクトすることで、設定値がトグル方式で切り替わります。
# echo XHC > /proc/acpi/wakeup
ただし、/proc
内の仮想ファイルはプロセス終了時には消えてしまうので、永続化には別の方法が必要となります。
Unitを作成
さて今回は、設定切り替え用のUnitを作成し、自動起動することで設定を永続化していきます。
以下の場所に、Unitファイルを作成します。
$ sudo vim /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=graphical.target
Serviceセクションでは、Unitとして実行するサービス内容を指定します。
ExecStart
には、先程確認した切り替えコマンドを指定しています。今回のように、ファイルへのリダイレクトを行う場合は、/bin/sh -c 'コマンド > ファイル'
とする必要があるのがポイントです*1。
Type=oneshot
は、1度だけ実行するサービスであることを示しています。
さらに、InstallセクションのWantedBy
では、自動起動設定を有効化した際に、どのUnitに合わせて起動するかを指定しています。今回はGUIでの利用が前提なので、graphical.target
を指定すると良いでしょう。
Unitの自動起動
作成したUnitの自動起動設定を有効化します。
$ sudo systemctl enable suspendfix.service
これを行うと、/etc/systemd/system/graphical.target.wants/
配下にsuspendfix.service
へのシンボリックリンクが作成され、graphical.target
の起動に合わせて実行されるようになります。
以上で、作業は完了です。
最後に、再起動して設定が切り替わっていることを確認します。
$ cat /proc/acpi/wakeup Device S-state Status Sysfs node RP05 S3 *disabled pci:0000:00:1c.4 PXSX S3 *disabled GLAN S4 *disabled XHC S3 *disabled pci:0000:00:14.0 XDCI S4 *disabled HDAS S4 *disabled pci:0000:00:1f.3
大丈夫そうですね。
おわりに
「 "XHC" をリダイレクトで渡す」という点については、以下の記事が勉強になりました。
しばらくこの設定で様子を見ようと思います。