Fan speed control (日本語) - ArchWiki

# Fan speed control (日本語)

関連記事

- Lm_sensors

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

## 設定

Note: 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` が作成されるはずです。

### 調整

Warning: Some of the steps outlined below describe how to tweak fan speeds. Before doing this be sure to have a low CPU load.
Note: 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

Tip: `MAXPWM` や `MINPWM` オプションを使ってファンの速度の範囲を制限できます。詳しくは fancontrol のマニュアルページを見て下さい。
Tip: モジュールのロードのタイミングによって、再起動で `DEVPATH` だけでなく温度センサーのパスも変わることがあります (hwmon0/device/temp1_input が hwmon0/temp1_input になる)。これは大抵カーネルの更新時に起こります。システムログをチェックしてトラブルメーカーが誰なのか確認して下さい:

    # systemctl status fancontrol.service

そして設定ファイルを適切に修正して下さい。

## fancontrol

fancontrol を実行するには:

    # /usr/bin/fancontrol

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

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

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

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

Category:

- CPU (日本語)