Ryzen5 2600X / B450でsensorsの出力結果が思ってたのと違う
少し前に、Kernel 5.7 で Thermal Pressure が導入されてた事を知り、直接は関係ないのですが、私の PC でも温度センサを確認してみたくなりました。
今まで PC の温度センサについては無頓着だったので、これを機に調べてみました。
そしたら、思ってたより根が深かったので、備忘録として残しておきます。
....
現在、私が Ubuntu 20.04 LTS で使用しているハード構成は、
ですが、sudo apt install linux-generic-hwe-20.04-edge
を実行済みなので、
$ uname -r
5.8.0-25-generic
カーネルは kernel 5.8 系になってます。
※追記: 後述する内容は kernel 5.4 系のままでも同様でした。
....
まずは lm-sensors を導入します。
$ sudo apt install lm-sensors
すぐに sensors を実行するとこんな感じです。
$ sensors
k10temp-pci-00c3
Adapter: PCI adapter
Vcore: 788.00 mV
Vsoc: 925.00 mV
Tctl: +26.8°C
Tdie: +26.8°C
Icore: 4.00 A
Isoc: 6.25 A
iwlwifi_1-virtual-0
Adapter: Virtual device
temp1: N/A
思ってたのと随分違ってます。CPU コアの温度が出力されてません。
◆ とりあえず調べてみる
$ sudo sensors-detect --auto
# sensors-detect version 3.6.0
# System: Gigabyte Technology Co., Ltd. B450 AORUS PRO WIFI [Default string]
# Board: Gigabyte Technology Co., Ltd. B450 AORUS PRO WIFI-CF
# Kernel: 5.8.0-25-generic x86_64
# Processor: AMD Ryzen 5 2600X Six-Core Processor (23/8/2)
〜(ざっくり省略)〜
Now follows a summary of the probes I have just done.
Driver `k10temp' (autoloaded):
* Chip `AMD Family 17h thermal sensors' (confidence: 9)
Driver `to-be-written':
* ISA bus, address 0xa40
Chip `ITE IT8686E Super IO Sensors' (confidence: 9)
Driver `it87':
* ISA bus, address 0xa60
Chip `ITE IT8792E Super IO Sensors' (confidence: 9)
Note: there is no driver for ITE IT8686E Super IO Sensors yet.
Check https://hwmon.wiki.kernel.org/device_support_status for updates.
To load everything that is needed, add this to /etc/modules:
#----cut here----
# Chip drivers
it87
#----cut here----
If you have some drivers built into your kernel, the list above will
contain too many modules. Skip the appropriate ones!
Do you want to add these lines automatically to /etc/modules? (yes/NO)
Unloading cpuid... OK
出力結果を鑑みるに、まずは it87 モジュールを入れれば良さそうです。
ITE IT8686E
や /etc/modues に it87 を追記するのは後回し。
その前に it87 モジュールをロードして、sensors を実行してみます。
$ sudo modprobe it87
$ sensors
it8792-isa-0a60
Adapter: ISA adapter
in0: 774.00 mV (min = +0.00 V, max = +2.78 V)
in1: 1.08 V (min = +0.00 V, max = +2.78 V)
in2: 1.12 V (min = +0.00 V, max = +2.78 V)
+3.3V: 1.68 V (min = +0.00 V, max = +2.78 V)
in4: 1.30 V (min = +0.00 V, max = +2.78 V)
in5: 1.17 V (min = +0.00 V, max = +2.78 V)
in6: 2.78 V (min = +0.00 V, max = +2.78 V) ALARM
3VSB: 1.67 V (min = +0.00 V, max = +2.78 V)
Vbat: 1.69 V
fan1: 0 RPM (min = 0 RPM)
fan2: 0 RPM (min = 0 RPM)
fan3: 0 RPM (min = 0 RPM)
temp1: +28.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
temp2: +33.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
temp3: +34.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
intrusion0: ALARM
k10temp-pci-00c3
Adapter: PCI adapter
Vcore: 788.00 mV
Vsoc: 931.00 mV
Tctl: +27.0°C
Tdie: +27.0°C
Icore: 7.00 A
Isoc: 6.00 A
iwlwifi_1-virtual-0
Adapter: Virtual device
temp1: N/A
それっぽい出力結果になりましたが、まだ何か違ってます。
CPU コア 6 個分の温度表示が無いし、FAN の回転数も得られてません。
◆ it87 モジュールを最新にしてみる
前述した sensors-detect の出力結果からChip `ITE IT8686E Super IO Sensors'
が解決できてない件について調べたところ「it87 モジュールを最新にすれば良い」との事なので、試してみます。
$ cd ~/work
$ git clone https://github.com/a1wong/it87.git
Cloning into 'it87'...
remote: Enumerating objects: 458, done.
remote: Total 458 (delta 0), reused 0 (delta 0), pack-reused 458
Receiving objects: 100% (458/458), 200.04 KiB | 388.00 KiB/s, done.
Resolving deltas: 100% (277/277), done.
$ cd it87
$ sudo make dkms
Creating symlink /var/lib/dkms/it87/v1.0-48-g40bec4b/source ->
/usr/src/it87-v1.0-48-g40bec4b
DKMS: add completed.
Kernel preparation unnecessary for this kernel. Skipping...
Building module:
cleaning build area...
make -j12 KERNELRELEASE=5.8.0-25-generic TARGET=5.8.0-25-generic...
Signing module:
- /var/lib/dkms/it87/v1.0-48-g40bec4b/5.8.0-25-generic/x86_64/module/it87.ko
Secure Boot not enabled on this system.
cleaning build area...
DKMS: build completed.
it87.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/5.8.0-25-generic/updates/dkms/
depmod..........
DKMS: install completed.
正常終了したら、一旦 it87 モジュールを解除して、再度ロードします。
最新モジュールにしたら sensors を実行確認します。
$ sudo modprobe -r it87
$ sudo modprobe it87
$ sensors
it8686-isa-0a40
Adapter: ISA adapter
in0: 768.00 mV (min = +0.00 V, max = +3.06 V)
in1: 2.00 V (min = +0.00 V, max = +3.06 V)
in2: 2.00 V (min = +0.00 V, max = +3.06 V)
in3: 2.02 V (min = +0.00 V, max = +3.06 V)
in4: 924.00 mV (min = +0.00 V, max = +3.06 V)
in5: 888.00 mV (min = +0.00 V, max = +3.06 V)
in6: 1.20 V (min = +0.00 V, max = +3.06 V)
3VSB: 3.26 V (min = +0.00 V, max = +6.12 V)
Vbat: 3.26 V
fan1: 385 RPM (min = 0 RPM)
fan2: 0 RPM (min = 0 RPM)
fan3: 0 RPM (min = 0 RPM)
fan4: 0 RPM (min = 0 RPM)
fan5: 0 RPM (min = 0 RPM)
temp1: +29.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
temp2: +32.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
temp3: +31.0°C (low = +127.0°C, high = +127.0°C) sensor = AMD AMDSI
temp4: +31.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
temp5: +35.0°C (low = +0.0°C, high = -120.0°C) sensor = thermistor
temp6: +41.0°C (low = +0.0°C, high = -120.0°C) sensor = thermistor
intrusion0: ALARM
k10temp-pci-00c3
Adapter: PCI adapter
Vcore: 788.00 mV
Vsoc: 925.00 mV
Tctl: +31.6°C
Tdie: +31.6°C
Icore: 7.00 A
Isoc: 7.75 A
it8792-isa-0a60
Adapter: ISA adapter
in0: 414.00 mV (min = +0.00 V, max = +2.78 V)
in1: 948.00 mV (min = +0.00 V, max = +2.78 V)
in2: 1.08 V (min = +0.00 V, max = +2.78 V)
+3.3V: 3.36 V (min = +0.00 V, max = +5.56 V)
in4: 1.30 V (min = +0.00 V, max = +2.78 V)
in5: 1.17 V (min = +0.00 V, max = +2.78 V)
in6: 2.78 V (min = +0.00 V, max = +2.78 V) ALARM
3VSB: 3.33 V (min = +0.00 V, max = +5.56 V)
Vbat: 3.38 V
fan1: 0 RPM (min = 0 RPM)
fan2: 0 RPM (min = 0 RPM)
fan3: 0 RPM (min = 0 RPM)
temp1: +28.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
temp2: +33.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
temp3: +34.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
intrusion0: ALARM
iwlwifi_1-virtual-0
Adapter: Virtual device
temp1: N/A
ようやく思ってたような出力結果が得られました。
最後に /etc/modules へ it87 を追記すれば作業完了です。
再起動して sensors を実行したところ、期待通りの出力結果になりました。
◆ 参考にしたサイト
- Monitor AMD Ryzen Temperatures In Linux with latest kernel modules - LinuxConfig.org
- drivers - ITE 8686E Super IO sensor support - Ask Ubuntu
- temperature - How to install it87 kernel module for 18.04 (ryzen 2xxx support) - Ask Ubuntu
- it87 driver for sensors has gone, alternatives.
- メインマシンを AMD Ryzen 5 2400G に: Aiming Off のブログ
- Ryzen7を買いました | nogisawa.net
※追記 2023-10-22
先日 BIOS を F64e まで更新し、OS のアップデートを実行しました。
その後、sensors を実行すると温度が正常に表示されません。
$ sensors
iwlwifi_1-virtual-0
Adapter: Virtual device
temp1: N/A
acpitz-acpi-0
Adapter: ACPI interface
temp1: +16.8°C (crit = +20.8°C)
k10temp-pci-00c3
Adapter: PCI adapter
Tctl: +49.5°C
対策として、/etc/modprobe.d/it87.conf
を用意します。
・ファイル: /etc/modprobe.d/it87.conf
options it87 ignore_resource_conflict=1
後は PC を再起動して、sensors を実行すると元通り表示されるはずです。