USB 入力でサスペンドからレジュームさせないには

多くの Linux ディストリビューションの初期設定では,サスペンド中にも USB の入力を検出しており,サスペンド中にマウスを動かしたりキーボードに触れたりすると,自動的にサスペンドから復帰してしまいます。

デスクトップ PC をお使いで机の上がきれいに片付いている方には便利な機能かもしれませんが,モバイルマシンをお使いの場合や,あるいは単に机の上が混沌としている場合には,ただ血圧が上がるだけの機能です。

幸いこの検出は無効化することができますので,その手順を紹介します。

内蔵アダプタも多くの場合バスは USB なので,Bluetooth 機器によるレジューム対策にも使えます。

この設定のための設定ファイルはないようであり,/proc/acpi/wakeup に対象となるバスの名前を書き込む形で設定ができます(少々奇妙な仕様ですが,書き込みのたびにそのバスについての設定のオンオフが切り替わります。デフォルトではオンなので,1回だけ書き込めばオフになるわけです)。以下では,その作業をするスクリプトがシステムの起動時に自動実行されるようにします。

 # nano /usr/local/bin/earplug

以下をコピペして保存してください。

[raw]
#!/bin/sh
echo EHC1 > "/proc/acpi/wakeup"
echo EHC2 > "/proc/acpi/wakeup"
echo XHCI > "/proc/acpi/wakeup"
[/raw]

そしたら,実行権限を付与します。

 # chmod +x /usr/local/bin/earplug

次に systemd のサービスファイルを作ります。同じ要領でコピペしてください。正直詳しくないので最適な書き方ではないかもしれません。詳しい人教えて。

 # nano /etc/systemd/system/earplug.service
[Unit] 
Description=For a better sleep...

[Service] 
Type=simple 
RemainAfterExit=yes 
ExecStart=/usr/local/bin/earplug

[Install] 
WantedBy=multi-user.target

最後にサービスを有効化して完成です。

 # systemctl enable earplug.service

古めのカーネル(Debian だと Stretch とか)では「XHCI」でなく「XHC」の文字列を使っていたりするので,適宜修正してください。その判別も含め,詳しい情報は以下で得られます。

 $ cat /proc/acpi/wakeup

あまりによく使うので Gitlab にもアップしています。ご覧の時点でこの記事の情報が古い場合は,こちらを確認すると最新の仕様にキャッチアップされているかもしれません。

なんだか前にも書いたような気がしないでもないですが,どうやら書いていないようなのでメモしておきます。

コメントを残す

投稿にあたり,完全な IP アドレスが保存されます(公開されません)。

コメントはスパムフィルタで処理され,承認後に公開されます。