ジャンル不定の日記です。

ファンコントロールの際のhwmonデバイス番号

ファンコントロールの際のhwmonデバイス番号が変わっちゃう場合がある件で、
以前の記事の後1ヶ月ほどうまく行ってたのだが、
以前は k10temp (CPU温度)のデバイス番号が変わっちゃうため fam15h_power をロードしないようにして解決したが、
今日再起動したら、f71808a(ファン)の番号が radeon と入れ変わっちゃってた。

Arch LinuxのWikiのファンコントロールのページからのリンク先に、
https://bbs.archlinux.org/viewtopic.php?pid=1415552#p1415552
↑にこういう時のやり方のってて以前も試してうまく行かなかったのだが、
今回うまく行った。

/etc/fancontrol
# Configuration file generated by pwmconfig, changes will be lost
INTERVAL=10
FCTEMPS=/sys/devices/platform/f71882fg.2560/hwmon/hwmon[[:print:]]*/device/pwm2=/sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon[[:print:]]*/temp1_input /sys/devices/platform/f71882fg.2560/hwmon/hwmon[[:print:]]*/device/pwm1=/sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon[[:print:]]*/temp1_input
FCFANS=/sys/devices/platform/f71882fg.2560/hwmon/hwmon[[:print:]]*/device/pwm2=/sys/devices/platform/f71882fg.2560/hwmon/hwmon[[:print:]]*/device/fan2_input /sys/devices/platform/f71882fg.2560/hwmon/hwmon[[:print:]]*/device/pwm1=/sys/devices/platform/f71882fg.2560/hwmon/hwmon[[:print:]]*/device/fan1_input
MINTEMP=/sys/devices/platform/f71882fg.2560/hwmon/hwmon[[:print:]]*/device/pwm2=40 /sys/devices/platform/f71882fg.2560/hwmon/hwmon[[:print:]]*/device/pwm1=40
MAXTEMP=/sys/devices/platform/f71882fg.2560/hwmon/hwmon[[:print:]]*/device/pwm2=60 /sys/devices/platform/f71882fg.2560/hwmon/hwmon[[:print:]]*/device/pwm1=60
MINSTART=/sys/devices/platform/f71882fg.2560/hwmon/hwmon[[:print:]]*/device/pwm2=120 /sys/devices/platform/f71882fg.2560/hwmon/hwmon[[:print:]]*/device/pwm1=120
MINSTOP=/sys/devices/platform/f71882fg.2560/hwmon/hwmon[[:print:]]*/device/pwm2=80 /sys/devices/platform/f71882fg.2560/hwmon/hwmon[[:print:]]*/device/pwm1=80
MINPWM=/sys/devices/platform/f71882fg.2560/hwmon/hwmon[[:print:]]*/device/pwm2=80 /sys/devices/platform/f71882fg.2560/hwmon/hwmon[[:print:]]*/device/pwm1=80

以前はこのやり方でうまく行かなかったのだが、
どうも、DEVPATHとDEVNAMEを設定してたのが問題ぽい?
両方消して、温度とファンの両方を絶対パスにしたら制御できた。

これで入れ替わっても問題なく制御できる。
ブラックリストに入れてた fam15h_power も戻した。

[[:print:]]*の部分は POSIX文字クラス というもので、
printの場合はスペース等の見えない文字を除いた文字全てに一致する。
print以外にもいくつか存在する。