Linux で x570/B550 マザーボード の センサー情報を取得|lm-sensors|Ubuntu 20.04

PC

lm-sensors

lm-sensors” は Ubuntu で CPU や マザーボード上の各種センサー情報を取得するのに必要なソフトウェアです。

lm-sensors を使ってセンサー情報を取得できるようになると、 Conky を使って CPU温度や負荷状況などを表示させられるようになります。

以前は BIOS のファン制御が効かなかったので、lm-sensor で取得した情報をもとに、fancontrol でファン制御を行っていました。 BIOS の設定が利用できるなら無理に行う必要はありません。

通常は下記の一連のコマンドで「lm-sensorsの導入」と「センサーの検知」をさせることで各種センサーの情報が簡単に取得できるようになります。

Terminal

導入
sudo apt-get install lm-sensors

センサーの検知
sudo sensors-detect

センサー情報の表示
sensors

ASUS/MSI製 の X570/B550系マザーボードの場合

上記のコマンド実行すればセンサー情報が取得できるようになるはずなのですが、「ASUSやMSI製のAMD系CPU対応マザーボード X570 や B550」では情報がうまく取得状態ができませんでした。

sensors を実行すると CPU関連の基礎的な情報がほんの少し表示されるだけ。
マザーボード上 の コントローラチップ の 温度情報 や 電圧、ファンの回転数 などの細かい情報は取得できません。

通常の状態で sensors 実行結果
k10temp-pci-00c3
Adapter: PCI adapter
Vcore:         1.46 V  
Vsoc:          1.08 V  
Tctl:         +48.8°C  
Tdie:         +48.8°C  
Tccd1:        +44.0°C  
Tccd2:        +40.5°C  
Icore:        27.00 A  
Isoc:         10.25 A 

本来であれば下記のようにもっと多くの情報が表示されます。
BIOS で 確認できそうな細かい数値情報をアレコレ確認できます。

対策後 sensors 実行結果
k10temp-pci-00c3
Adapter: PCI adapter
Vcore:         1.46 V  
Vsoc:          1.08 V  
nct6687-isa-0a20
Adapter: ISA adapter
+12V:           11.95 V  (min = +11.93 V, max = +11.98 V)
+5V:             5.11 V  (min =  +5.09 V, max =  +5.13 V)
+3.3V:           3.35 V  (min =  +3.35 V, max =  +3.36 V)
CPU Soc:         1.11 V  (min =  +1.11 V, max =  +1.12 V)
CPU Vcore:       1.16 V  (min =  +0.21 V, max =  +1.45 V)
CPU 1P8:         1.84 V  (min =  +1.84 V, max =  +1.85 V)
CPU VDDP:        0.00 V  (min =  +0.00 V, max =  +0.00 V)
DRAM:            1.34 V  (min =  +1.34 V, max =  +1.35 V)
Chipset:       768.00 mV (min =  +0.74 V, max =  +0.78 V)
CPU Fan:        578 RPM  (min =  458 RPM, max = 1098 RPM)
Pump Fan:       761 RPM  (min =  677 RPM, max = 1271 RPM)
System Fan #1:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #2:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #3:  791 RPM  (min =  789 RPM, max =  868 RPM)
System Fan #4:  675 RPM  (min =  673 RPM, max =  676 RPM)
System Fan #5:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #6:  928 RPM  (min =  733 RPM, max = 1174 RPM)
CPU:            +48.0°C  (low  = +40.0°C, high = +67.0°C)
System:         +42.0°C  (low  = +41.0°C, high = +44.0°C)
VRM MOS:        +40.0°C  (low  = +38.0°C, high = +42.0°C)
PCH:            +42.0°C  (low  = +42.0°C, high = +43.0°C)
CPU Socket:     +39.0°C  (low  = +36.0°C, high = +43.0°C)
PCIe x1:        +39.0°C  (low  = +38.0°C, high = +40.0°C)
M2_1:            +0.0°C  (low  =  +0.0°C, high =  +0.0°C)

nvme-pci-0100
Adapter: PCI adapter
Composite:    +40.9°C  (low  = -273.1°C, high = +81.8°C)
                       (crit = +84.8°C)
Sensor 1:     +40.9°C  (low  = -273.1°C, high = +65261.8°C)
Sensor 2:     +43.9°C  (low  = -273.1°C, high = +65261.8°C)

k10temp-pci-00c3
Adapter: PCI adapter
Vcore:         1.46 V  
Vsoc:          1.08 V  
Tctl:         +48.8°C  
Tdie:         +48.8°C  
Tccd1:        +44.0°C  
Tccd2:        +40.5°C  
Icore:        27.00 A  
Isoc:         10.25 A  

よく案内されている解決方法

「X570 + lm-sensors」 で検索してみると、センサー情報が取得に関してたくさんの質問と回答がヒットします。

ほとんどの場合、以下のような方法が案内されています。
admin権限で /etc/default/grub ファイルを編集。
GRUB_CMDLINE_LINUX_DEFAULTの項目に “acpi_enforce_resources=lax” の文字列を追加する

というもの。

使用するエディタはなんでも良いと思います。

普段から CLI環境を利用されている方は vi とか nano とか ターミナル経由で利用できるエディターが一般的だと思うのですが、使い慣れていない私にとってこれらのエディタは操作に癖があってどうしてもとっつきにくい。

そこで、GUI環境で導入される他のテキストエディタで操作をしています。
Windows 環境のテキストエディターのように マウスも使えて ブラウザーで調べ物をしつつ コピペするのも楽チンです。

まずは マウス操作で /etc/default を開いて “grub”ファイルを右クリック。
コンテクストメニューから “Open as Adminitrator” を選択。
パスワードを聞かれるので入力。

開いたファイル内で GRUB_CMDLINE_LINUX_DEFAULT の項目を見つけて編集する。
見つかりにくいときは Ctrl + F で検索。

テキストエディタ (/etc/default/grub)
変更前
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
↓
変更後
# GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_enforce_resources=lax"

追加できたらファイルを保存して以下のコマンドで grub を更新させて設定を反映させます。

grubの更新 と センサーチップの認識
sudo update-grub
sudo modprobe -v nct6775

とすることでセンサーが認識されるはずだったのだけど、どうしてもセンサーチップが認識されなかった。

「nct6687d」 に 対応させるコード (モジュール)

マザーボードに使われているセンサーチップを調べたところ、nuvoton製 の nct6687d というチップが使われていることがわかりました。

どの組み合わせで検索したのかは忘れてしまいましたが、 nct6687d に対応するためのコード(モジュール?)が Githubで公開されているのに行き当たりました。

結果としては、コレを導入することでセンサーが認識できない問題は無事解決しました。
https://github.com/Fred78290/nct6687d

ダウンロード

  • リンクを開いて、右上に表示される Codeボタンをクリック
  • ZIP形式でダウンロードを選択
  • ダウンロードされたファイルを解凍する

make コマンド で ビルド

ダウンロードしたファイルはソースファイルというものでそのままでは利用できないので make コマンドで利用できる形に ビルド(コンパイル?)する必要があります。

make コマンドを実行するにはビルド環境を事前に整える必要があるので下記のコマンドを実行。

ビルド環境の導入
apt-get install build-essential linux-headers-uname -r

導入できたら、先程 ダウンロードしたファイルを解凍してできたフォルダを開いて、何もない箇所を右クリックして「端末の中に開く」でターミナルを開いて以下のコマンドを実行。

モジュールの導入 と 有効化
ビルドコード(モジュール)の導入
sudo make install

次回起動時に自動的に読み込ませるために以下も実行しておく
sudo sh -c 'echo "nct6687" >> /etc/modules'

モジュールの有効化
sudo modprobe -v nct6687


sennsors コマンドを実行して、 “nct6687-isa-0a20” の項目が表示されれば成功です。

このモジュールの作者の環境に非常に近かったのでうまく行っただけという可能性もありますが、nuvoton製 nct6687d が採用されている X570やB550系のマザーボードで同様の問題を抱えている場合はダメ元で試して見る価値はあると思います。

アンインストールは、インストール時と同じ階層を開いて以下のコマンドを実行します。

アンインストール
sudo make uninstall

ひとりごと

実はこのセンサー情報が取得できない問題は、AMD Ryzenに乗り換えた時に X570マザーに変更して以来ずっと続いていました。
もしかしたらASUS製 X570系固有の問題かもと 思い、B550発売後に MSIに変更してみたのだけどそれでも解消できず。
なんだかんだ2年間くらいずっと悩まされていたと思います。

とはいえ、BIOSのファン制御が効くようになった後のことだったので、ファン全開のまま騒音で頭がおかしくならなくてよかったです。

Linuxの場合、新しい製品の発売から間もない時期には対応できないケースは珍しくないと思いますが、頻繁なアップデートを繰り返してにいつのまにか問題が解消される なんて事は日常茶飯事。
ところが、この問題に限ってはそうならなかったのでした。 (なぜ OSに組み込まれないのかは謎)

2年ほどの間に思い出しては検索してを繰り返しもう何度目の正直なのか忘れたけど、偶然たどり着いた Githubの情報に救われました。

このモジュールを作ってくれた 「Fred78290」 さんには猛烈に感謝。
本当にありがとう!

conky でもバッチリ情報表示できてモヤモヤが解消。
まさに気分爽快。

コメント

タイトルとURLをコピーしました