C2750D4IのファンをIPMIで制御する

変態紳士ASRockの変態マザーC2750D4Iのファン速度を、IPMIで操作する方法のメモ。冷暖房不備の自宅サーバで使ってるもんで、夏場のここぞって時には強制的に回転数を上げたい時があるのだよ。制御方法はipmitoolコマンドでバイト列を投げるだけ。姉妹モデルのC2550D4I, C2450D4I+でも使えるらしい。これならファン制御ソフトのないFreeBSDでも使えるよ、やったねタエちゃん!!

ipmitool raw 0x3a 0x01 ア イ ウ エ オ カ 0x00 0x00

引数ア~カには対応するファンの回転数を指定する。値はPWMのデューティ比だと思われる。

引数 ファン
CPU_FAN1 0x01 : Smart Fan(BIOS設定での自動制御)
0x04 : 回転数最小
0xnn :  ⇅
0x64 : 回転数最大
CPU_FAN2
REAR_FAN1
REAR_FAN2
FRNT_FAN1
FRNT_FAN2

例えば、全部のファンをフル回転させるには以下のようにする。10進数も通るので、値は4~100で書いたほうが分かりやすいかも。

ipmitool raw 0x3a 0x01 0x64 0x64 0x64 0x64 0x64 0x64 0x00 0x00

実行例。

(最大)
$ sudo ipmitool raw 0x3a 0x01 0x64 0x64 0x64 0x64 0x64 0x64 0x00 0x00
$ ipmitool sdr type 'Fan'
CPU_FAN1         | 0Fh | ok  |  7.0 | 1300 RPM
REAR_FAN1        | 11h | ok  |  7.0 | 1900 RPM
FRNT_FAN1        | 13h | ok  |  7.0 | 1500 RPM
FRNT_FAN2        | 14h | ok  |  7.0 | 600 RPM
REAR_FAN2        | 15h | ns  |  7.0 | No Reading
CPU_FAN2         | 17h | lnc |  7.0 | 0 RPM

(最小)
$ sudo ipmitool raw 0x3a 0x01 0x04 0x04 0x04 0x04 0x04 0x04 0x00 0x00
$ ipmitool sdr type 'Fan'
CPU_FAN1         | 0Fh | ok  |  7.0 | 600 RPM
REAR_FAN1        | 11h | ok  |  7.0 | 800 RPM
FRNT_FAN1        | 13h | ok  |  7.0 | 500 RPM
FRNT_FAN2        | 14h | ok  |  7.0 | 600 RPM
REAR_FAN2        | 15h | ns  |  7.0 | No Reading
CPU_FAN2         | 17h | lnc |  7.0 | 0 RPM

(Smart Fan)
$ sudo ipmitool raw 0x3a 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x00 0x00
$ ipmitool sdr type 'Fan'
CPU_FAN1         | 0Fh | ok  |  7.0 | 1300 RPM
REAR_FAN1        | 11h | ok  |  7.0 | 800 RPM
FRNT_FAN1        | 13h | ok  |  7.0 | 500 RPM
FRNT_FAN2        | 14h | ok  |  7.0 | 600 RPM
REAR_FAN2        | 15h | ns  |  7.0 | No Reading
CPU_FAN2         | 17h | lnc |  7.0 | 0 RPM

なんぞCPU_FAN1の挙動がおかしいけど、他は設定値通りに動いてるようなので気にしない。

尚、本M/BのCPUはファンレスで概ね大丈夫(公式にはヒートシンクを通る風が2CFM未満の場合はファンが必要)なのだが、CPUよりも先にSATAチップの方が音を上げるので、筐体内のエアフローには配慮が必要だ。HDDへ長時間アクセスすると特定のHDDが脱落する現象に見舞われていたが、どうも原因はSATAチップの過熱のようだった。なんたって触れるとアチッとなるくらいだったので。

とりあえずクールスタッフを貼り付けて、マザボを冷やす12cmファンも設置して様子見中。

参考サイト