Setting custom fan thresholds with ipmitool
Jun 17, 2017
3 minute read

My file server is sporting a SuperMicro X10SDV-4C-TLN2F-O motherboard and the case has two Noctua NF-R8 Redux-1800 PWM exhaust fans to keep things cool and quiet. However I noticed that whenever I set the fan mode in IPMI to Optimal, the fans began to pulse.

They slow down, IPMI decides they’ve slowed down to critical levels and spins them back up again. Having no reason to be spinning this fast, they slow back down and the cycle continues again.

Using ipmitool to look at the current sensor data. FAN3 is showing critical, having slowed to 400 RPM.

# ipmitool sensor list all | grep FAN
FAN1  | 5400.000 | RPM  | ok  | 300.000 | 500.000 | 700.000 | 25300.000 | 25400.000 | 25500.000
FAN2  | na       |      | na  | na      | na      | na      | na        | na        | na
FAN3  | 400.000  | RPM  | cr  | 300.000 | 500.000 | 700.000 | 25300.000 | 25400.000 | 25500.000
FAN4  | 800.000  | RPM  | ok  | 300.000 | 500.000 | 700.000 | 25300.000 | 25400.000 | 25500.000

On my system the CPU fan is plugged into the FAN1 motherboard header and there is nothing plugged into the FAN2 header. The two Noctua exhaust fans are plugged into headers FAN3 and FAN4 on the motherboard.

The IPMI event log shows repeated entries for both FAN3 and FAN4. Going critical, recovering and then going critical again. This repeats over and over until the IPMI fan mode is changed to Full. However I don’t want the fans spinning full speed all the time, I purchased the Noctua fans because they are quiet and will spin down when not needed.

ipmi event log

Unfortunately the pulsating happens because they can spin at RPMs that are below the configured IPMI lower fan thresholds. Examining the output again, the column headers are:

  • Name
  • Reading
  • Unit
  • Status
  • Lower Non-Recoverable
  • Lower Critical
  • Lower Non-Critical
  • Upper Non-Critical
  • Upper Critical
  • Upper Non-Recoverable

In the output above FAN3 is showing critical spinning at 400RPM, while the IPMI configuration has the lower fan thresholds set at: 300, 500 and 700 respectively. To resolve this problem these values need to be changed to levels which match the specs of the fans. The lowest I’ve seen the fans spin is 400 RPM, so the thresholds were updated accordingly.

Setting thresolds for FAN3

# ipmitool sensor thresh FAN3 lower 200 300 400
Locating sensor record 'FAN3'...
Setting sensor "FAN3" Lower Non-Recoverable threshold to 200.000
Setting sensor "FAN3" Lower Critical threshold to 300.000
Setting sensor "FAN3" Lower Non-Critical threshold to 400.000

Setting thresolds for FAN4

# ipmitool sensor thresh FAN4 lower 200 300 400
Locating sensor record 'FAN4'...
Setting sensor "FAN4" Lower Non-Recoverable threshold to 200.000
Setting sensor "FAN4" Lower Critical threshold to 300.000
Setting sensor "FAN4" Lower Non-Critical threshold to 400.000

No more pulsating fans, no more IPMI false alarms and most importantly no more fan noise.

# ipmitool sensor list all | grep FAN
FAN1  | 5400.000 | RPM  | ok  | 300.000 | 500.000 | 700.000 | 25300.000 | 25400.000 | 25500.000
FAN2  | na       |      | na  | na      | na      | na      | na        | na        | na
FAN3  | 600.000  | RPM  | ok  | 200.000 | 300.000 | 400.000 | 25300.000 | 25400.000 | 25500.000
FAN4  | 700.000  | RPM  | ok  | 200.000 | 300.000 | 400.000 | 25300.000 | 25400.000 | 25500.000

If required, upper level thresholds can be changed using the same command, changing lower to upper.