冷却ファンコントロールの実装

 暫く運用していたのだが、どうも冷却ファンが動いている様子が無い。
 このところ少し温かくなったので隣に置いている純正のLS−GLがどうかと見てみると冷却ファンが動いている。この温度だと当然動いていないといけないはずであるのでDebian化LS−GLはどうかと見てみるとやはり動いていない。

 本家の山下氏のページをよく見てみると、当初のLinkStation LS-GL で debian を動かそうの内容では山下氏も言っているように冷却ファンの制御が抜けていることを発見した。

 そこで、山下氏のページを参考にさせて頂き以下のとおり冷却ファンコントロールを組み込んだ。


1./usr/local/sbin/fancontrolファイルを以下のとおり作成
#!/bin/sh
# LS-GL, HS-DHGL, KURO-BOX/Pro Fancontrol
# (C) Copyright Yasunari YAMASHITA 2007. All Rights Reserved.

PATH=$PATH:/usr/sbin

# stop -> LOW |- slow -> MID |- fast -> HIGH |- full
HIGH=40
MID=30
LOW=20

if [ -f /etc/fancontrol.conf ]
then
        . /etc/fancontrol.conf
fi

#       ude:/usr/local/sbin# /usr/local/sbin/miconapl -a temp_get
#       #[miconapl.temp_get]
#       temp=45

CURTEMP=`/usr/local/sbin/miconapl -a temp_get | sed -n -e 's/temp=//p'`

echo $CURTEMP

if [ $CURTEMP -gt $HIGH ] # full
then
        /usr/local/sbin/miconapl -a fan_set_speed full
        echo fan_set_speed full
elif [ $CURTEMP -gt $MID ] # fast
then
        /usr/local/sbin/miconapl -a fan_set_speed fast
        echo fan_set_speed fast
elif [ $CURTEMP -gt $LOW ] # slow
then
        /usr/local/sbin/miconapl -a fan_set_speed slow
        echo fan_set_speed slow
else                       # stop
        /usr/local/sbin/miconapl -a fan_set_speed stop
        echo fan_set_speed stop
fi

 このスクリプトは、/etc/fancontrol.confの内容で初期設定の温度設定を変更するようになっているので

2./etc/fancontrol.confを以下のとおり作成。
#
# LS-GL, HS-DHGL, KURO-BOX/Pro Fancontrol configuration file
# (C) Copyright Yasunari YAMASHITA 2007. All Rights Reserved.

# stop -> LOW |- slow -> MID |- fast -> HIGH |- full

HIGH=45
MID=40
LOW=30

 ファンが回るとうるさいので山下氏の設定より少し温度を上げてみた。

3.cron への登録
 10分に1回起動するように設定した。

# crontab -e
*/10 * * * * nice /bin/sh /usr/local/sbin/fancontrol 2>/dev/null 1>/dev/null

 ここで、2>/dev/nullは「標準エラー出力」への出力を/dev/nullへ、また「標準出力」への出力をdev/nullへ、リダイレクトしているようである。 

4.# tail -f /var/log/syslogで動作を確認
Mar 24 20:20:01 test /USR/SBIN/CRON[1059]: (root) CMD (nice /bin/sh /usr/local/sbin/fancontrol 2>/dev/null 1>/dev/null)
Mar 24 20:30:01 test /USR/SBIN/CRON[1070]: (root) CMD (nice /bin/sh /usr/local/sbin/fancontrol 2>/dev/null 1>/dev/null)

現在の温度は以下のコマンドで知ることが出来る。ただし何処の部分の温度かは不明。
# /usr/local/sbin/miconapl -a temp_get
#[miconapl.temp_get]
temp=30