ArchLinux、ファンの回転速度を fancontrol で制御する

死蔵してた 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 の動作確認

$ 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 を選択、ファンの出力テストが行われる。最後にファイルを保存することを忘れずに。

 fancontrol を編集確認する

 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

systemd の設定

fancontrol を起動する。

# systemctl start fancontrol

systemd に fancontrol をブート時に起動させる。

# systemctl enable fancontrol

サスペンド時に 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:

コメントを残す

メールアドレスが公開されることはありません。