最新のArch/AntergosLinuxを使用しています。
休止状態から再開した後、タッチパッドが機能しなくなります。 this バグの影響を受けているようで、再開するたびにSudo rmmod i2c_hid; modprobe i2c_hid
と入力して、タッチパッドを動作状態に戻す必要があります。
スクリプトfix-touchpad.sh
を/usr/lib/systemd/system-sleep
に追加してそのプロセスを自動化し、休止状態からの再開時に実行されるようにしました。
#!/bin/sh
if [ $1 = post ]
then
rmmod i2c_hid
modprobe i2c_hid
fi
スクリプトは、起動時にif
テストの前後とfi
の直前でecho "something" > log.log
を使用してテストしました。しかし、それは私のタッチパッドを生き返らせません。
また、再開後にsh fix-touchpad.sh post
を使用してスクリプトを正常にテストしましたが、タッチパッドが再び起動するのを確認してください。
再開手順の一部として実行されたときに、スクリプトがタッチパッドを修正しないのはなぜですか?
タッチパッドを修正する他の方法はありますか?
理由はわかりませんが、問題は、休止状態から戻ったときにモジュールの削除と追加の両方を試みているためです。
私はあなたと同じ問題に遭遇し、休止状態の前にモジュールを削除し、後で再び追加しようとするまで、スクリプトfix-touchpad.sh
は機能しませんでした。
Fedoraフォーラムの this answer に基づいています。
$ cat /usr/lib/systemd/system-sleep/fix-touchpad.sh
#!/bin/bash
[ "$1" = "pre" ] && modprobe -r i2c_hid
[ "$1" = "post" ] && modprobe i2c_hid
exit 0
また、休止状態/再開時にコードを実行する別の方法を見つけました。休止状態の前にモジュールを削除した場合にのみ機能しました。 ArchのWiki Power management#Sleep hooks で説明されているように、スリープサービスによってトリガーされるsystemdサービスを作成できます。
ウィキの指示に基づいて、私は次のことを思いつきました:
$ cat /etc/systemd/system/root-resume.service
[Unit]
Description=(un)load module i2c_hid when going to/from sleep
Before=sleep.target
StopWhenUnneeded=yes
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=modprobe -r i2c_hid
ExecStop=modprobe i2c_hid
[Install]
WantedBy=sleep.target
サービスはsystemd enable root-resume
で有効にする必要があります。 ExecStartはsleep.target
の前に実行され、ExecStopは再開中に実行されることに注意してください。
[〜#〜] aur [〜#〜] でsystemd-suspend-modules
パッケージをチェックしてください。基本的には、ユーザー設定ファイルにリストされているすべてのモジュールに対してSolution 1を実行するサービスを定義します。 「特定のモジュールとそれに依存するすべてのモジュールを再帰的にアンロードする」ため、他のモジュールに適している可能性があります( https://github.com/parkouss/systemd-suspend-modules/blob/master/suspend- modules#L19 )。