Well, a new motherboard: the MSI Z77A-GD65 (internal code name MS-7751 v2.1). If you’re interested why I chose it, ask. If not, let’s get on with a favourite pet peeve of mine: monitoring with lm-sensors.
One of the reasons I chose the MSI Z77A-GD65 was the fact it has 5 fan headers: 1 for the CPU fan and 4 for case fans. Digging into docs, turns out 2 fan headers can be controlled through PWM (headers have 2 pins for power, 1 pin for reading the fan speed and 1 pin for setting the fan speed) while the other two fan headers are 3 pin (no fan speed setting, just monitoring). Oh well I said, good enough. Unfortunately, it seems MSI were lying a bit: just the 2 PWM fan headers have the speed monitoring pin connected, while the other two are just power supply headers and provide no fan speed monitoring (even if they have 3 pins).
The MSI Z77A-GD65 uses a F71889A IO chip from Fintek. It seems pretty capable, but it’s not fully used inside the Z77A-GD65. Support in lm-sensors for the F71889A was added since ~June 2011 and running the classical sensors-detect does a good job in finding and configuring the chip. Reading the F71889A data sheet, we can see why only 3 fans are monitored and controlled by the board: it’s a limitation of the monitoring chip. Oh well.
Here’s the relevant section from /etc/sensors3.conf:
chip "f71808e-*" "f71808a-*" "f71862fg-*" "f71869-*" "f71869a-*" "f71882fg-*" \
"f71889fg-*" "f71889ed-*" "f71889a-*"
label in0 "+3.3V"
label in7 "3VSB"
label in8 "Vbat"
# compute in0 @*2, @/2
# compute in7 @*2, @/2
# compute in8 @*2, @/2
label temp1 "Temp1"
label temp3 "Temp3"
ignore temp2
label fan1 "CPU FAN"
label fan2 "SYSFAN1"
label fan3 "SYSFAN2"
What’s changed beside the stock configuration ? the compute modifications don’t seem to be required, so they’re commented out. The two temperature inputs are properly labeled (Temp1 and Temp3) while Temp2 is not connected – so it’s set to be ignored. Add the 3 fan labels and that’s pretty much it.
Output from sensors shows the ACPI thermal zone temperatures, the CPU core temperatures and the inputs from the F71889A chip:
acpitz-virtual-0
Adapter: Virtual device
temp1: +27.8 C (crit = +106.0 C)
temp2: +29.8 C (crit = +106.0 C)
coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +34.0 C (high = +85.0 C, crit = +105.0 C)
Core 0: +34.0 C (high = +85.0 C, crit = +105.0 C)
Core 1: +28.0 C (high = +85.0 C, crit = +105.0 C)
Core 2: +23.0 C (high = +85.0 C, crit = +105.0 C)
Core 3: +33.0 C (high = +85.0 C, crit = +105.0 C)
f71889a-isa-0290
Adapter: ISA adapter
+3.3V: +3.34 V
in1: +0.85 V (max = +2.04 V)
in2: +0.01 V
in3: +0.94 V
in4: +1.10 V
in5: +0.74 V
in6: +1.05 V
3VSB: +3.34 V
Vbat: +3.38 V
CPU FAN: 572 RPM
SYSFAN1: 1347 RPM
SYSFAN2: 1338 RPM
Temp1: +32.0 C (high = +255.0 C, hyst = +251.0 C) ALARM (CRIT)
(crit = +255.0 C, hyst = +251.0 C) sensor = transistor
Temp3: +28.0 C (high = +255.0 C, hyst = +253.0 C) ALARM (CRIT)
(crit = +255.0 C, hyst = +253.0 C) sensor = transistor
Unfortunately, the two temperature limits are not software configured through lm-sensors, but directly reported from the F71889A chip (it permanently raises the alarm flag which means it’s not properly connected/configured). That’s it. If you manage to improve it, do drop a comment below.