Corredor

ウェブ、プログラミングの勉強メモ。

ThinkPad X250 の CPU ファンがうるさいので回転数を制御してみる (Windows・Ubuntu 両方)

M.2 SSD に Windows 10 Pro、SATA SSD に Ubuntu 18.04 がインストールされている、物理的に分断されたデュアルブート環境の ThinkPad X250 君。

この個体の前に買った1台目の X250 は CPU が Core i5 だったためか、さほど CPU ファンの音は気にならなかったのだが、この2台目 X250 は Core i7 なためか、CPU ファンがやたらと回る。

ファンの音が結構うるさいので、回転数を制御して静音化できないか調べてみた。

Windows での対応法 : TPFanControl を使う

Windows で ThinkPad の CPU ファンを制御するには、TPFfanControl というフリーソフトが使いやすい。

どうも既に開発が終了しているっぽいが、v0.62 (tpfc_v062.zip) をインストールしたらちゃんと動いた。

↑上のページから最新版をダウンロードし、インストールすれば使える。

最初イマイチ使い方が分からなかったのだが、標準で選択されている Smart モードは、.ini ファイルで閾値を詳細に設定できる。内容は以下の日本語訳が参考になるかと。

Manual モードは、0 〜 7 の8段階でファンの回転数を制御できる。ただし、既に CPU 温度が閾値以上に高い状態だと、自動的に Smart モードに切り替わってファンが回り出す。

コレを使って CPU 温度を見てみると、ちょっとブラウジングしているだけで90度超え、いくつかタブを開いたりするとすぐに98度前後まで上昇していたので、CPU ファンを回転させないようにするのはちょっと怖いかな、と思った。何でこんな冷却性能悪いんだ…?

Ubuntu での対応法 : thinkpad_acpithinkfan コマンドを使う

ThinkPad に Linux をインストールすると、thinkpad_acpi というカーネルモジュールがインストールされていて、コイツで CPU ファンの回転数を制御できるようだ。

まずはコイツを有効にするため、以下のファイルを作成し、fan_control=1 と書いて機能を有効化する。

$ sudo vi /etc/modprobe.d/thinkpad_acpi.conf

# 次の1行を書く
options thinkpad_acpi fan_control=1

設定後、次の擬似ファイルを見ると CPU の様子が分かる。

$ cat /proc/acpi/ibm/fan

この疑似ファイルに対して level を書き込むと、ファンの回転数を指定したレベルに設定できる。

# 0 (ファン停止) 〜 7 (高速) の8段階
$ echo level 0 | sudo tee /proc/acpi/ibm/fan
$ echo level 7 | sudo tee /proc/acpi/ibm/fan

# 自動
$ echo level auto | sudo tee /proc/acpi/ibm/fan

コレで手動操作できるようになった。続いて、CPU 温度に合わせてファンの回転数を自動操作するために、thinkfan というデーモンをインストールする。

$ sudo apt install -y lm-sensors thinkfan

# センサー類をファイルに記録する
# 以下のコマンドを実行後、質問にひたすら Enter で答えていく
$ sudo sensors-detect
# …中略…
# 最後に以下の質問が出たら「yes」と入力して終える
Do you want to add these lines automatically to /etc/modules? (yes/NO)yes
Successful!
# 後略…

# 以下を見て、`coretemp` の文字が記録されていれば良い
$ cat /etc/modules

# 次のコマンドで CPU 温度などが分かる
$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +49.0°C  (high = +105.0°C, crit = +105.0°C)
Core 0:        +48.0°C  (high = +105.0°C, crit = +105.0°C)
Core 1:        +47.0°C  (high = +105.0°C, crit = +105.0°C)

# 以下でデバイス認識を確認できる
$ sudo find /sys/devices -type f -name 'temp*_input'

# thinkfan の閾値は以下で設定できる
$ sudo vi /etc/thinkfan.conf

# 手動で起動する場合
$ sudo thinkfan -n

# サービスとして起動しておく
$ sudo systemctl enable thinkfan
$ sudo systemctl start thinkfan

# ステータス確認。こんな感じ
$ sudo systemctl status thinkfan
● thinkfan.service - simple and lightweight fan control program
   Loaded: loaded (/lib/systemd/system/thinkfan.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-03-31 00:12:27 JST; 1min 0s ago
  Process: 6451 ExecStart=/usr/sbin/thinkfan $DAEMON_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 6452 (thinkfan)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/thinkfan.service
           └─6452 /usr/sbin/thinkfan -q
 331 00:12:27 Neos-ThinkPad systemd[1]: Starting simple and lightweight fan control program...
 331 00:12:27 Neos-ThinkPad thinkfan[6451]: thinkfan 0.9.1 starting...
 331 00:12:27 Neos-ThinkPad thinkfan[6451]: WARNING: Using default fan control in /proc/acpi/ibm/fan.
 331 00:12:27 Neos-ThinkPad thinkfan[6451]: WARNING: Using default temperature inputs in /proc/acpi/ibm/thermal.
 331 00:12:27 Neos-ThinkPad thinkfan[6451]: WARNING: You're using simple temperature limits without correction values, and your fan will only start at 55 °C. This can be dangerous for your hard drive.
 3月 31 00:12:27 Neos-ThinkPad systemd[1]: Started simple and lightweight fan control program.

コレで設定自体はおけおけ。

Ubuntu で見ると、CPU 温度が50度程度で済んでいるように見える。CPU ファンの回転も、Windows よりは大人しい。温度計測が間違っているのか、ホントに温度が違ってるのか…?よく分からない。ただ、動作は Windows よりも Ubuntu の方が快適なので、Ubuntu 使用時の CPU ファンの動作には問題はないと思っている。

以上

以上の方法で、Windows でも Linux でも、CPU ファンの回転数が制御できて、静音化できるようにはなった。

Ubuntu の時は温度が低く見えるが、Windows 10 Pro だと普段から CPU 温度が90度近くなっているみたいなので、物理的な問題よね。どうしたものか…。