死蔵してた NEC Express5800/S70 type hf を引っ張りだして Arch をインストールしました。オンボードでサウンドカードもついてるし、12000円の商品にしては中々のものです。しかし腐ってもサーバなので冷却ファンの回転数が高く、音がすさまじい。
対策として騒音源であるリアの4cmファンを取り外し、他のファンをマザボードではなく fancontrol に制御させるよう設定しました。
マニュアルはここ=> ArchWiki
lm_sensors をインストールする
ハードウェアのセンサから情報をもらってくるプログラムをインストール
# pacman -S lm_sensors
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)を生成してもらう。
# 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
ファン制御サービスを起動させる
fancontrol を起動する。
# systemctl start 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: