死蔵してた NEC Express5800/S70 type hf を引っ張りだして Arch Linux をインストールしました。オンボードでサウンドカードもついてるし、12000円の商品にしては中々のものです。
しかし Express5800 は腐ってもサーバなので冷却ファンの回転数が高く、音がすさまじいです。対策として騒音源であるリアの4cmファンを取り外し、他のファンをマザボードではなく fancontrol
に制御させるよう設定しました。
ここでは fancontrol
をどのように設定をしたのかメモを残します。
昨今のPCはマザーボードの BIOS からファンスピードを制御できることがほとんどですが、 BIOS の機能が制限されているサーバ用途のマシンでは有効な設定だと思います。
lm_sensors をインストールする
ハードウェアのセンサから情報をもらってくるプログラム lm_sensors
をインストールします。
$ sudo pacman -S lm_sensors
温度センサの検知する
デバイスに搭載されている温度センサーを検知し、センサを読み込むための設定ファイルを作ります。
# sensors-detect
選択肢がたくさん出てきますが Enter キーを押していけばほとんどの場合は問題ありません。むしろそのほうが安全です。最後に /etc/conf.d/lm_sensors
という設定ファイルが生成される。
動作確認
センサから情報を読み取れるか確認します。
$ sensors
出力結果は下記のようになります。
coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +48.0°C (high = +82.0°C, crit = +102.0°C)
Core 0: +43.0°C (high = +82.0°C, crit = +102.0°C)
Core 1: +45.0°C (high = +82.0°C, crit = +102.0°C)
nct6776-isa-0a30
Adapter: ISA adapter
Vcore: +1.05 V (min = +0.25 V, max = +1.53 V)
in1: +1.22 V (min = +1.08 V, max = +1.32 V)
AVCC: +3.34 V (min = +2.98 V, max = +3.63 V)
+3.3V: +3.33 V (min = +2.98 V, max = +3.63 V)
in4: +1.02 V (min = +0.90 V, max = +1.10 V)
in5: +1.01 V (min = +0.90 V, max = +1.10 V)
in6: +0.72 V (min = +0.00 V, max = +0.00 V) ALARM
3VSB: +3.34 V (min = +2.98 V, max = +3.63 V)
Vbat: +3.25 V (min = +2.70 V, max = +3.63 V)
fan1: 1048 RPM (min = 0 RPM)
fan2: 2295 RPM (min = 0 RPM)
fan3: 0 RPM (min = 0 RPM)
fan4: 0 RPM (min = 0 RPM)
SYSTIN: +38.0°C (high = +65.0°C, hyst = +0.0°C) sensor = thermistor
CPUTIN: +123.5°C (high = +80.0°C, hyst = +75.0°C) ALARM sensor = CPU diode
AUXTIN: +42.5°C (high = +80.0°C, hyst = +75.0°C) sensor = thermistor
PECI Agent 0: +45.0°C (high = +80.0°C, hyst = +75.0°C)
(crit = +100.0°C)
PCH_CHIP_TEMP: +0.0°C
PCH_CPU_TEMP: +0.0°C
PCH_MCH_TEMP: +0.0°C
intrusion0: ALARM
intrusion1: ALARM
beep_enable: disabled
ファンの検出と設定
pwmconfig
を実行し fancontrol
の設定ファイル /etc/fancontrol
を生成します。
# pwmconfig
選択肢にはマニュアルで設定するように y
を選択したら搭載されているファンの出力テストが行われます。最後にファイルを保存することを忘れずに。
設定ファイルを編集・確認する
pwmconfig
で自動生成されたファイルは /etc/fancontrol
として保存されています。
初期設定だと MINSTART 0
の状態でも1000回転するように設定されています。調べた限り当機種(NEC Express5800/S70 type hf)のクーラーが完全に停止することはないので。
INTERVAL=10
DEVPATH=hwmon0=devices/platform/coretemp.0 hwmon1=devices/platform/nct6775.2608
DEVNAME=hwmon0=coretemp hwmon1=nct6776
FCTEMPS=hwmon1/pwm2=hwmon0/temp1_input hwmon1/pwm1=hwmon0/temp1_input
FCFANS=hwmon1/pwm2=hwmon1/fan2_input hwmon1/pwm1=hwmon1/fan1_input
MINTEMP=hwmon1/pwm2=45 hwmon1/pwm1=45
MAXTEMP=hwmon1/pwm2=69 hwmon1/pwm1=69
MINSTART=hwmon1/pwm2=0 hwmon1/pwm1=0
MINSTOP=hwmon1/pwm2=0 hwmon1/pwm1=0
6行目からが重要で MINTEMP
や MAXTEMP
では最後の数値が何度でファンを回し始めたいか、何度で最大回転させたいかといじることができます。 例) MINTEMP=hwmon1/pwm2=45
赤文字をいじります。
ファン制御サービスを起動させる
Systemd でファンコン・サービスを制御します。
fancontrol
を起動する。
# systemctl start fancontrol
fancontrol
停止する。
# systemctl stop fancontrol
systemd
に fancontrol
をブート時に起動させる設定。
# systemctl enable fancontrol
無効化させるには下記のコマンドを実行
# systemctl disable fancontrol
サスペンド時にファン制御サービスを再起動させる
マシンのサスペンドすると fancontrol
が正常に作動しなくなります。レジューム時に再起動し再び上記で作成した設定ファイルを読み込みようにします。
/
etc/systemd/system/root-resume.service
として下記のスクリプトを保存。サービス名は既存のものと被らなければなんでも良いです。
[Unit]
Description=Local system resume actions
After=suspend.target
[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl restart fancontrol
[Install]
WantedBy=suspend.target
上記のサービスをマシンブート時に起動する設定をします。
# systemctl enable root-resume.service
おわり
参考サイト
re-run after suspend · Issue #1 · nicolai-rostov/asus-fancontrol · GitHub:
コメント