GentooLinuxでfancontrolとサスペンド

GentooLinuxマシンのOSからファン回転数を制御をするfancontrolについての話題です。今回はその導入法は省略します。さて。温度によってファンの回転数を増減させるのには成功しました。しかし、問題が発生。

サスペンド状態にした後スリープから復帰させると、ファン速度が最大になってしまいます。これはよろしくないことです。

linux#>/etc/init.d/fancontrol restart

とrootでサービスを再起動すると元に戻りますが、毎回コレをするのは面倒です。どうなっているのでしょう。

設定で回避できそうな項目もないために、ググって情報を探すと、同様な事象が見つかりました。

http://askubuntu.com/questions/531882/high-fan-speed-after-suspend

http://efod.se/blog/archive/2013/03/02/fancontrol-not-working-after-resume

まあ、素朴というか、対処療法的ですが、サスペンドからの復帰時にサービスを再起動するというのが現状での解決策なようです。 ()

1.

linux#> vim /etc/pm/sleep.d/10_fancontrol 

を適当なエディタで作ります。内容は以下の通り。

 

#!/bin/sh
case "$1" in
resume)
    exec service fancontrol restart;;
esac

 上記で復帰時にエラーになる場合があるので、下記のように休止時にサービスを停止する方が良いようです。カーネルバージョンによるかもしれません。(2017/12/21追記)

 #!/bin/sh
case "$1" in
resume | thaw)
    exec /etc/init.d/fancontrol  start;;
hibernate | suspend)
    exec /etc/init.d/fancontrol stop;;

esac

2.このファイルに実行権限をつけます。

linux#>chmod +x /etc/pm/sleep.d/10_fancontrol

これで、サスペンド後にもfancontrolが正常に動作します(というか再起動する)。ubuntuユーザさんのページでしたが、参考になりました。なお、最近のubuntuもsystemdになってしまいましたので、systemd な人はディレクトリと内容が異なります(サスペンドを管理しているプログラムがpm-utilsでないと思われるため)のでご留意ください。(上記サイトによれば、/lib/systemd/system-sleep

#!/bin/bash
case "$1" in
post)
  exec service fancontrol restart;;
esac

とのことですが、当方では未検証)