Arduino で ML110 G7 のファンを静音化する

サーバ管理
OLYMPUS DIGITAL CAMERA
スポンサーリンク

先日購入した格安のタワー型サーバ HP ProLiant ML110 G7 だが、外気が一定の温度 (25℃くらい?) を超えたあたりで噂通りの爆音を轟かせ始める。ワンルームのアパートで、シャワーを浴びている最中にも音が気になるレベルだ。

安いとは言えれっきとしたサーバ機なので仕方ないのだが、さすがにこの状態のまま自宅で運用するのは気が引けるので、ご多分に漏れず静音化に挑戦してみる。

方法

調べてみると多数のブログ記事が見つかったが、解決策は大きく分けて次の2つであることがわかった。

  1. ファン自体を静かなものに換装する
  2. ファンに制御信号を送って、回転数を調節する

前者の方が手軽そうだが、温度に応じた回転数の調節ができなくなってしまうのと、フロント、リア、CPU それぞれのファンを調達しなければならないというデメリットがある。一方の後者は、ファンに制御信号を送るファンコンを用意する必要があるものの、標準のファンをそのまま使用でき、かつ回転数も比較的柔軟に調整できそうなことから、今回はこちらを試してみることにする。

なお、いずれの方法も iLO3 からは正しい回転数を取得できなくなるので、その点は妥協が必要となる。

材料

ファンに PWM (Pulse Width Modulation) 信号を送るファンコンを自作するために、以下のようなパーツを調達した。

Arduino UNO

“アルデュイーノ” と読むらしい。「初心者でも簡単に扱える」と言う触れ込みのマイコンボード。秋葉原の千石電商の本店2階で2,940円で購入した。

Arduino UNO
Arduino UNO

USB ケーブル (A オス – B オス)

Arduino とマシンをつなぎ、電力を供給したり制御プログラムを書き込むために使う。同じく千石電商で140円で購入した。

ピンコネクタ、リード線

ファンと Arduino を接続するために使う。ピンコネクタ3つと、適当なリード線を 1m × 3本 + αくらい用意しておけば良いと思う。

電気工作グッズ

ハンダゴテとか絶縁テープとか、必要に応じて。

制御プログラムの書込み

Arduino からファンを制御する方法としては、次のような案が挙げられる。

  1. 常に一定の回転をするような信号を送る
  2. Arduino に温度センサを取り付けて、気温に応じた回転数の信号を送る
  3. 元の MB からの信号を Arduino で加工 (低回転するように) してファンに送る
  4. ML110 側から USB 経由で Arduino に命令を出し、信号を制御する

今回はひとまず、一番手軽な 1. の方法をとることにする。

ということで、Arduino にファンの制御プログラムを書き込むこととする。書込みは Mac から行なう。プログラムは下記のページのものをほぼそのまま流用させていただく (“delayMicroseconds” は適宜調整)。

Mac から Arduino に USB 経由でプログラムを書き込む方法は、下記のページが参考になる。

マイコンの知識がなくてもファンコンを用意することができ、先人たちの知恵に感謝したい。

結線

材料が用意できたら、それぞれのパーツを接続していく。結線は前出の参考ページの回路図通り、Arduino の 11, 12, 13 番 PIN を各ファンの信号線 (青) と接続する。ただし追記されている通り、緑 <-> MB は接続していない。

ファンに供給する 12V は、元のファンコネクタの黒と黄色からそのまま引っ張った。緑は GND (黒の2本) と結線した。青はどこにも接続していない。

ファンコネクタの結線図
ファンコネクタの結線図

最後に ML110 の MB にある USB コネクタと Arduino を接続する。もし別の方法で給電するなら、Arduino と ML110 で GND を取ってやる必要がある。

結果

いよいよ電源を入れてみる。すると、以前の爆音が嘘のように、ささやかにファンが回転しはじめる。どうやら成功したようだ。欲を言えばどんな波形が出ているのかオシロスコープで確認したいところだが、そんなものは自宅にはないので保留とする。ちなみに Arduino への電源供給を絶つ、つまりファンへのパルス信号を停止すると、あの悪夢がよみがえる。

室温27℃の部屋で負荷をかけてしばらく様子を見てみたが、ひとまず問題はなさそうだ。

iLO3 の温度情報
iLO3 の温度情報

以上のようにして、ML110 の静音化に成功し、自宅でも快適に運用できるようになった。ただし今回は温度を考慮せずに回転数を下げただけなので、ちゃんと冷却されているかどうか監視して適切な回転数に調整する必要がある。今後は ML110 の IPMI から得られる温度情報などを基に、最適な回転数に制御できるような仕組みにパワーアップしたい。

コメント

タイトルとURLをコピーしました