ファンスピード制御

提供: ArchWiki
2015年1月11日 (日) 13:47時点におけるKusakata (トーク | 投稿記録)による版 (1版 をインポートしました)
ナビゲーションに移動 検索に移動

関連記事

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 と増やしていってください。

設定

ノート: Advanced users may want to skip this section and write /etc/fancontrol on their own, which also saves them from hearing all of the fans at full speed.

sensors を正しく設定できたら、pwmconfig を実行してテストを行い、速度のコントロールを設定します。pwmconfig の手順にしたがって基本速度をセットアップしてください。デフォルトの設定オプションで新しいファイル /etc/fancontrol が作成されるはずです。

調整

警告: Some of the steps outlined below describe how to tweak fan speeds. Before doing this be sure to have a low CPU load.
ノート: On several systems, the included script may report errors as it trys to calibrate fans to the respective PWM. Users may safely ignore these errors. The problem is that the script does not wait long enough before ramping up or down the PWM.

生成された設定をもっと細かく調整したい場合、以下が設定ファイルの例です:

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
ヒント: MAXPWMMINPWM オプションを使ってファンの速度の範囲を制限できます。詳しくは fancontrol のマニュアルページを見て下さい。
ヒント: モジュールのロードのタイミングによって、再起動で DEVPATH だけでなく温度センサーのパスも変わることがあります (hwmon0/device/temp1_input が hwmon0/temp1_input になる)。これは大抵カーネルの更新時に起こります。システムログをチェックしてトラブルメーカーが誰なのか確認して下さい:
# systemctl status fancontrol.service
そして設定ファイルを適切に修正して下さい。

fancontrol

fancontrol を実行するには:

# /usr/bin/fancontrol

正しく設定できていればエラーが表示されずにシステムファンのコントロールが開始されます。このコマンドを実行した後、すぐにシステムファンが遅くなるのが聞こえるはずです。

ノート: Dell の Latitude/Inspiron ノートパソコンでは、i8kutils が使えます。i8k カーネルモジュールは機種によって問題が起こることが知られています。

fancontrol をブート時に自動的に起動させるにはサービスを有効化して下さい。

i8kmon サービスでファンをコントロールできるようにするには、/etc/i8kutils/i8kmon.conf で "auto" 設定オプションを 1 に設定する必要があります。