ファンスピード制御
関連記事
lm_sensors に含まれている fancontrol を使うことで CPU やケースのファンの速度や音をコントロールできます。この記事ではユーティリティの設定とセットアップについて扱います。
センサードライバー
新しいマザーボードの場合、サポートが Linux カーネルにまだ入っていない可能性があります。公式の lm-sensors デバイス 表を確認して、そのようなマザーボードの場合、実験的なドライバーが使えるかどうか見て下さい。
fancontrol に必要なモジュールをロードするのに lm_sensors.service
を使うのは推奨されません。代わりに、モジュールを /etc/modules-load.d/load_these.conf
に手動で記述してください。モジュールがロードされる順番によって hwmon に必要なシンボリックリンクが作成される順番が決まるからです。言い換えれば、lm_sensors.service
を使用すると起動する度に何が起きるかわからなくなり、一貫性の観点からファンコントロールの設定ファイルが無意味になってしまいます。
詳しくは、次のスレッドを参照: https://bbs.archlinux.org/viewtopic.php?pid=1251766
lm-sensors
lm_sensors をセットアップしてください。
$ sensors
coretemp-isa-0000 Adapter: ISA adapter Core 0: +29.0°C (high = +76.0°C, crit = +100.0°C) [...] it8718-isa-0290 Adapter: ISA adapter Vcc: +1.14 V (min = +0.00 V, max = +4.08 V) VTT: +2.08 V (min = +0.00 V, max = +4.08 V) +3.3V: +3.33 V (min = +0.00 V, max = +4.08 V) NB Vcore: +0.03 V (min = +0.00 V, max = +4.08 V) VDRAM: +2.13 V (min = +0.00 V, max = +4.08 V) fan1: 690 RPM (min = 10 RPM) temp1: +37.5°C (low = +129.5°C, high = +129.5°C) sensor = thermistor temp2: +25.0°C (low = +127.0°C, high = +127.0°C) sensor = thermal diode
出力に CPU ファンの RPM の値が表示されない場合、fan divisor を増やす必要があります。ファンの速度が表示され0よりも高い場合は、次のステップにスキップしてください。
fan_div の増加
sensors の出力の1行目は温度や電圧を調べるためにマザーボードによって使用されるチップセットです。
/etc/sensors3.conf
を編集して正確なチップセットを探して下さい。少数ながら同じような名前のチップセットが存在するため、編集するチップセットが正しいか確認してください。チップセットの設定の始めの方に set fanX_div 4
という行を追加します。X は対象システムの CPU のファンの数に置き換えてください。
ファイルを保存して、root で実行:
# sensors -s
このコマンドは sensors3.conf
ファイルで設定された変数をリロードします。もう一度 sensors
を実行して、RPM が正しく読み出されたか確認して下さい。読み出されない場合は、divisor を 8, 16, 32 と増やしていってください。
設定
sensors を正しく設定できたら、pwmconfig
を実行してテストを行い、速度のコントロールを設定します。pwmconfig
の手順にしたがって基本速度をセットアップしてください。デフォルトの設定オプションで新しいファイル /etc/fancontrol
が作成されるはずです。
調整
生成された設定をもっと細かく調整したい場合、以下が設定ファイルの例です:
INTERVAL=10 DEVPATH=hwmon0=devices/platform/coretemp.0 hwmon2=devices/platform/w83627ehf.656 DEVNAME=hwmon0=coretemp hwmon2=w83627dhg FCTEMPS=hwmon0/device/pwm1=hwmon0/device/temp1_input FCFANS= hwmon0/device/pwm1=hwmon0/device/fan1_input MINTEMP=hwmon0/device/pwm1=20 MAXTEMP=hwmon0/device/pwm1=55 MINSTART=hwmon0/device/pwm1=150 MINSTOP=hwmon0/device/pwm1=105
INTERVAL
: デーモンが CPU 温度を問い合せてファンの速度を調整する頻度。INTERVAL は秒数で指定します。
設定ファイルの残りの部分は設定オプションごとに (少なくとも) 2つの値に分けられます。それぞれの設定オプションではまずファンの速度を設定するのに書き出される PWM デバイスが指定されており、次の"フィールド"が実際に設定する値となっています。これによって複数のファンと温度の監視・コントロールが可能です。
FCTEMPS
: CPU 温度を読み込むための温度インプットデバイス。上記の例では/sys/class/hwmon/hwmon0/device/temp1_input
。FCFANS
: (温度と同じように)/sys/class/hwmon/hwmon0/device/fan1_input
で読み込むことができる、現在のファン速度。MINTEMP
: CPU ファンを止める温度 (°C)。効率的な CPU はアイドル状態のときファンを必要としません。安全だということが確認できる温度の範囲内で設定してください。この値を0に設定するのは推奨されません。ハードウェアが壊れてしまう可能性があります。MAXTEMP
: ファンを最大速度で回す温度 (°C)。CPU が壊れたりシャットダウンする温度から10か20ほど低い温度に設定するべきです (°C)。この値を MINTEMP に近づけるとファンがずっと高回転することになります。MINSTOP
: ファンが回転を停止する PWM の値。ファンごとに値を少し変えます。/sys/class/hwmon/hwmon0/device/pwm1
に異なる値をecho
(0 から 255 の間) して CPU ファンを監視することで調整できます。CPU ファンが停止したら、その値を使って下さい。MINSTART
: ファンが回転をもう一度開始する PWM の値。大きな電圧が必要になるので普通は MINSTOP より高い値にします。
さらに設定ファイルが最新であることを fancontrol が検証するのに必要な2つの設定があります。設定名とイコール記号で始まって、スペースで区切られた hwmon-class-device=setting のグループが後ろに付く行です。設定のどこかに使用する hwmon クラスデバイスごとに設定を指定しないと、fancontrol は動作しません。
DEVPATH
: 物理デバイスを設定。次のコマンドを実行することで確認できます:
readlink -f /sys/class/hwmon/hwmon-device/device | sed -e 's/^\/sys\///'
DEVNAME
: デバイスの名前を設定。次を実行して下さい:
$ sed -e 's/[[:space:]=]/_/g' /sys/class/hwmon/hwmon-device/device/name
fancontrol
fancontrol を実行するには:
# /usr/bin/fancontrol
正しく設定できていればエラーが表示されずにシステムファンのコントロールが開始されます。このコマンドを実行した後、すぐにシステムファンが遅くなるのが聞こえるはずです。
fancontrol をブート時に自動的に起動させるにはサービスを有効化して下さい。
i8kmon サービスでファンをコントロールできるようにするには、/etc/i8kutils/i8kmon.conf
で "auto" 設定オプションを 1 に設定する必要があります。