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.