Linux でサスペンドからのレジューム後にタッチパッドが使えない時は

ラップトップ PC によっては,サスペンドからのレジューム後にタッチパッドが使えなくなる場合があります [ref]いままでに何台かの富士通製で遭遇。[/ref]。BIOS/UEFI の設定で改善したという話もあり,どうも BIOS/UEFI の挙動に原因があるように見受けられますが,幸いにもドライバモジュールの再読込だけでも正しく認識されるようになります。具体的には,サスペンド時に modprobe -r psmouse,レジューム時に modprobe psmouse を実行してやれば良いわけです。
なお,最近の機種の場合,異なるバスのデバイスが使われている場合もあり,その場合には i2c_hid や rmi_smbus を試す必要があるようです。なお,これらのモジュールはタッチパッド以外にも使われている場合があり,アンロードは psmouse の場合ほど安全ではないため,事前に調査するべきでしょう。

さて,早速片付けてしまいましょう。
まずはサスペンド時に modprobe -r するサービスを書きます。

# vi /etc/systemd/system/reloadpsmouse-suspend.service
[Unit]
Description=Unload psmouse
Before=suspend.target

[Service]
Type=simple
ExecStart=/sbin/modprobe -r psmouse

[Install]
WantedBy=suspend.target

同様に,レジューム時に modprobe するサービスを書きます。

# vi /etc/systemd/system/reloadpsmouse-resume.service
[Unit]
Description=Load psmouse
After=suspend.target

[Service]
Type=simple
ExecStart=/sbin/modprobe psmouse

[Install]
WantedBy=suspend.target

あとは,登録するだけです。簡単ですね。

# systemctl daemon-reload
# systemctl enable reloadpsmouse-suspend.service
# systemctl enable reloadpsmouse-resume.service

非常にシンプルなサービスのため,たまには失敗するかもしれませんが,今のところうまく機能しています。

参照:
Synaptics タッチパッド – ArchWiki
電源管理 – ArchWiki
サスペンドの前後でコマンドを実行する。 – ガジェット好きの日記

コメントを残す

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

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