linuxでRyzenの温度センサーを動くようにする
Ryzenには温度監視機能があるのですが、本記事執筆現在、linuxのいわゆるupstream kernel(最新版は4.13)ではドライバが無いのでこの機能が使えません。温度監視をしたければWindowsかFreeBSDを使うしかないという悲しい状況です。sensorsコマンドを実行しても次の通り、温度に関する情報は得られません。
$ sensors asus-isa-0000 Adapter: ISA adapter cpu_fan: 0 RPM $
しかし、まだupstreamにマージされていないパッチを適用すれば、この機能を使えます。
AMD Zen Temperature Monitoring On Linux Is Working With Hwmon-Next - Phoronix
今使っているカーネルに関連パッチをcherry-pickしてきてもいいのですが、とりあえず試してみるだけなので、手間を省いて次のように関連パッチが入ったbranch, hwmon-nextをそのままビルドします。
$ cd ~/src/linux $ git remote add staging git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git $ git fetch staging ... $ git checkout staging/hwmon-next ... $ cp /boot/config-$(uname -r) .config $ make olddefconfig ... $ make menuconfig # SENSORS_K10TEMP(Device Drivers -> Hardware Monitoring support -> AMD Family 10h+ temperature sensor)を選択 ... $ make -j$(grep -c processor /proc/cpuinfo) ... $
できたカーネル上でsensorsコマンドを実行してみましょう(インストールとリブートの手順は省いています)。
$ sensors k10temp-pci-00c3 Adapter: PCI adapter temp1: +31.0°C (high = +70.0°C) # 温度情報が出力されている asus-isa-0000 Adapter: ISA adapter cpu_fan: 0 RPM $
うまく動いているようです。よかったよかった。後はupstream kernelにパッチがマージされるまで待ちです。残念ながら4.14のマージウィンドウは逃しているので4.15以降です。
ちなみに関連パッチは次の3つです。4.13に以下3つのパッチをcherry-pickした状態で温度情報が採取できていることを確認済です。
- 398f86f hwmon: (k10temp) Add support for temperature offsets
- 3b7317cc hwmon: (k10temp) Add support for family 17h
- 12dbb1a hwmon: (k10temp) Move chip specific code into probe function