読者です 読者をやめる 読者になる 読者になる

解き放たれしソフトウェア

GNU/LinuxなどFLOSSについて書いてみるつもり

lm_sensors でファンの回転数を制御する

近年の PC 用 M/B の多くは、温度やファン回転数、電圧のセンサーチップが搭載されています*1。CPU 温度と冷却ファン回転数を監視することで、ファンが壊れて即死という事態を予防しています。 そして、M/B のファームウェアによりますが、ファン回転数を制御可能な M/B が一般的になっています。

lm_sensors

さて、GNU/Linux では、 lm_sensors を用いると、こうした温度や回転数などの数値を取得可能です。 さらに、 lm_sensors を用いれば、検出した温度に合わせてファンの回転数を変えるということも可能です。

参照: ArchWiki

まず、 lm_sensors をインストールします。

sensors_detect

そして、sensors-detect を root 権限で実行して、センサーを検出します。

Gentoo の場合は

Gentoo の場合は Linux カーネルを自力でビルドするのが原則でしょうから、sensors-detect の出力内容に応じてカーネルコンフィグレーションをやり直し、カーネルの再インストールが必要になるかもしれません。 lm_sensors - Gentoo Wiki にも書いてありますが、

  • CONFIG_I2C
  • CONFIG_I2C_CHARDEV
  • CONFIG_HWMON
  • CONFIG_THERMAL_HWMON
  • (おそらくは) CONFIG_X86_CPUID
  • M/B に載っているセンサーチップ用のデバイスドライバ

以上を、ローダブルモジュール<M>でもいいですが、有効にする必要があります。

とはいえ、M/B に載っているセンサーチップが何かが判らないでしょう。 とりあえず後回しにして sensors-detect を先に実行すると判ります。

設定が完了したら、service lm_sensors start で開始し、rc-update add lm_sensors default で再起動後も始動するようにします。

sensors

設定完了後は、 sensors コマンドで、センサーの数値が表示されます。

fancontrol

lm_sensors に入っている fancontrol が、ファン回転数制御のためのプログラムです。

参考: ArchWiki

pwmcontrol

fancontrol を使えるようにするには設定が必要です( /etc/fancontrol )。 pwmconfig は、この設定のためのツールです。

Gentoo の場合は

Gentoo ではやはり、 service fancontrol start で始動し、 rc-update add fancontrol default で自動始動にします。

DCファンの構造と回転数制御

さて、PC は電源ユニットから先は直流電力(DC)ですから、冷却ファンもDCです。

DCですから、端子の一本はプラスで、一本はマイナスです。

CPU 冷却ファンなどでは、回転数を M/B に検知させるのが一般的になって久しいです。そこで、回転数を知らせるためのピンが1本あります。

よって、端子は、3ピンあるわけです。

回転数制御の手法

回転数を固定ではなく可変にすることもいまや一般的です。 そして、回転数を変えるための手法には

  1. M/B が一方的に電圧を上下させる手法(電圧制御方式)
  2. M/B がファンに信号を送って、その信号を受けたファンが回転数を変える手法(パルス幅変調制御方式 ; PWM

の2種類があります。

電圧による制御では、ファン側に特別な機能は必要ないのが利点で、挙動は M/B と ファンとの相性次第で何ら確証がないのが欠点です。電圧が足りないときのファンは、停止します。

他方の PWM 制御では、信号を送るためのピンがさらに1本必要になり、合計4本の端子になってしまいます。 PWM 制御では、挙動はファンの設計次第で決まるので確実です。

M/B の対応状況

電圧制御でも回転数の上下は可能ですから、 PWM 非対応の M/B は多いです。

lm_sensors の pwmconfig では、"PWM" という語を用いてはいますが、PWM 用の数値を M/B に送ったところで実際にどう処理されるかは M/B 次第です。

実際には PWM 非対応の M/B では、電圧を変えることでファンの回転数を制御します。

3ピン端子と4ピン(PWM対応)端子の互換性

3ピン端子と、4ピン(PWM対応)端子とは、互換性があります。 PWM 対応 M/B に 3ピン端子は挿せます。 PWM 用ファンを PWM 非対応 M/B に挿せます。ただし、他の部品による物理的干渉が無いことが前提ですが。

PWM 信号が来ないときの PWM ファンは、100% の指令が来ているものとして動作します。 ですから、電圧制御方式の M/B に挿しているときは、 PWM ではフル回転ですが、電圧不足で回転数が下げられます。

実際の回転数の設定どうしよう

ケース内には、M/B のシステムチップ、RAM モジュール、拡張ボード、HDD など、発熱する部品があるでしょう。 ですから、いくら CPU がパッシブヒートシンクだけでまかなえる状況であったとしても、ケースへの air flow はあった方がよいと思います。

ただし、電源ユニットがファンレスではない場合は、電源ユニットのファンを利用して冷却し、CPU ファンやケース(シャーシ;chasis)ファンは止めるという案もあるかもしれません。そうなると、 CPU ファンもケースファンも止める余地はあります。

*1:他方で、携帯端末などのいわゆる「組込み」などではそもそも CPU が過熱しない、ファンがないといったことから、事情は異なります