My Raven server is all set up, with one glaring exception: temperature sensing.Raven uses an AMD Ryzen 1700X CPU, which was just released in Q1 2017. That CPU sits in an Asus Prime X-370-PRO motherboard, which has functioned well for me (under the latest firmware with EPU OFF; early revisions had stability issues). I know this stuff is new, so software support needs some time to catch up here. Adding to the delay is Asus’ lack of official Linux support; Raven runs unRAID, a fork of Slackware. Still, although my case has plenty of fans, and I do have temperatures from the six hard drives in the case, I figured it was high time to get some actual motherboard readings!
Until today, I could not get any output from lm-sensors whatsoever. I tried loading various kernel drivers (modprobe it87, etc…) to no avail. However, there was one ray of hope from sensors-detect:
Do you want to scan for Super I/O sensors? (YES/no): Probing for Super-I/O at 0x2e/0x2f Trying family `National Semiconductor/ITE'... No Trying family `SMSC'... No Trying family `VIA/Winbond/Nuvoton/Fintek'... No Trying family `ITE'... Yes Found unknown chip with ID 0x8665 (logical device 4 has address 0x290, could be sensors)
I happened upon this Github thread, which suggested I run the key command:
modprobe it87 force_id=0x8628
This tricks sensors into believing it knows that unknown sensor chip. Apparently the id value can be any of these, YMMV: 0x8622, 0x8628, 0x8728, and 0x8732.
sensors results in:
it8628-isa-0290 Adapter: ISA adapter in0: +1.45 V (min = +0.85 V, max = +2.87 V) in1: +2.74 V (min = +0.83 V, max = +0.62 V) in2: +2.15 V (min = +1.70 V, max = +2.29 V) in3: +2.21 V (min = +0.19 V, max = +0.56 V) in4: +0.04 V (min = +1.38 V, max = +0.83 V) in5: +0.04 V (min = +1.12 V, max = +2.98 V) in6: +0.04 V (min = +1.16 V, max = +1.43 V) 3VSB: +3.58 V (min = +1.97 V, max = +5.52 V) Vbat: +3.43 V in11: +0.40 V fan1: 904 RPM (min = 11 RPM) fan3: 857 RPM (min = 22 RPM) fan5: 0 RPM (min = -1 RPM) ALARM temp1: +43.0°C (low = -29.0°C, high = -86.0°C) sensor = thermistor temp2: +30.0°C (low = -33.0°C, high = -17.0°C) sensor = thermistor temp3: +33.0°C (low = +124.0°C, high = +63.0°C) sensor = thermistor temp4: +33.0°C temp6: +33.0°C intrusion0: ALARM
Voltages (which are apparently incorrect; remember we tricked sensors into thinking it was dealing with a different chip), fan RRMs, and temps!
To load this “trick” at each boot, create the following files as root:
# /etc/modules-load.d/it87.conf # Load it87 for Ryzen motherboard and CPU sensors it87 # /etc/modprobe.d/it87.conf options it87 force_id=0x8628
This will both load the it87 kernel module and apply the chip id “trick.”