Resource icon

How To: Change IPMI Sensor Thresholds using ipmiutil

Many server motherboards, including the Supermicro X10 series, have their fans monitored by the BMC, which automatically attempts to recover stalling (of the motor, not in the aerodynamic sense) fans by spinning them up to maximum (PWM set to 100% speed). This behavior is determined by the sensor thresholds.

Supermicro X10 motherboard fan profiles are controlled via IPMI. Unfortunately, only very basic functions are exposed via its web interface and Supermicro's own IPMI utility is superbly well hidden on Supermicro's website and uses Java. The pragmatists among us would complain about Java, use the application, and move on - however, for some reason (*cough* Java *cough*) Supermicro application and its nice GUI do not always work properly. Thus, third-party universal IPMI tools are needed.

This guide should also be helpful for owners of other motherboards with similar problems or for those trying to learn how to interact with the motherboard's sensors using IPMI.

This is Part 2 of this guide. Part 1 covers how to perform these operations "locally" using ipmitool (in other words, directly on FreeNAS, via SSH). Part 2 covers how to perform these operations remotely (from a client computer), using ipmiutil.

I will be using IPMIUTIL, running on a client computer.
While I will provide the necessary steps and explain some options, I recommend you read through the appropriate man page sections (included in README.txt) to learn about the various options.

Download the appropriate version for your client computer's OS and browse to the appropriate folder using the command line. The following examples are from Windows 7 x64, but the application should display identical behavior on all OSes.

Please note that all input may be case sensitive. For details, check the relevant man pages.

Run the following command to get a list of all sensors (Append "-g fan" if you only want to see fans. Similar strings can be used for other sensor types.):

~# ipmiutil sensor -N *IP address* -U *Username* -P *Password* -c

The -c option presents the results in a much friendlier format than the default format.
Replace *IP address*, *Username* and *Password* with the appropriate values for your server's IPMI.

You'll get a list like this:

Code:
ipmiutil ver 2.93
isensor: version 2.93
Opening lan connection to node 192.168.1.15 ...
Connecting to node  192.168.1.15
-- BMC version 1.42, IPMI version 2.0
ID   | SDRType | Type			|SNum| Name			 |Status| Reading
0004 | Full	| Temperature	 | 01 | CPU Temp		 | OK   | 37.00 C
0047 | Full	| Temperature	 | 0b | System Temp	  | OK   | 31.00 C
008a | Full	| Temperature	 | 0c | Peripheral Temp  | OK   | 41.00 C
00cd | Full	| Temperature	 | 0a | PCH Temp		 | OK   | 48.00 C
0110 | Full	| Temperature	 | 48 | VRM Temp		 | OK   | 40.00 C
0153 | Full	| Temperature	 | b0 | DIMMA1 Temp	  | Absent | 0.00 na
0196 | Full	| Temperature	 | b1 | DIMMA2 Temp	  | OK   | 32.00 C
01d9 | Full	| Temperature	 | b4 | DIMMB1 Temp	  | Absent | 0.00 na
021c | Full	| Temperature	 | b5 | DIMMB2 Temp	  | OK   | 33.00 C
025f | Full	| Fan			 | 41 | FAN1			 | Absent | 0.00 na
02a2 | Full	| Fan			 | 42 | FAN2			 | Absent | 0.00 na
02e5 | Full	| Fan			 | 43 | FAN3			 | OK   | 1000.00 RPM
0328 | Full	| Fan			 | 44 | FAN4			 | OK   | 1000.00 RPM
036b | Full	| Fan			 | 45 | FANA			 | OK   | 1100.00 RPM
03ae | Full	| Voltage		 | 20 | Vcpu			 | OK   | 1.76 V
03f1 | Full	| Voltage		 | 24 | VDIMM			| OK   | 1.45 V
0434 | Full	| Voltage		 | 30 | 12V			  | OK   | 12.00 V
0477 | Full	| Voltage		 | 31 | 5VCC			 | OK   | 4.97 V
04ba | Full	| Voltage		 | 32 | 3.3VCC		   | OK   | 3.34 V
04fd | Full	| Voltage		 | 33 | VBAT			 | OK   | 3.00 V
0540 | Full	| Voltage		 | 35 | AVCC			 | OK   | 3.33 V
0583 | Full	| Voltage		 | 36 | VSB			  | OK   | 3.28 V
05c6 | Full	| Platform Securi | aa | Chassis Intru	| OK   | 0.00 na
ipmiutil sensor, completed successfully

Take note of the SNums for the fans you want to edit (if you don't know which fans you want to edit, I recommend you check the IPMI log in the web interface to see which fans have sensor events being asserted).

Now, calculate the lowest and highest angular velocities your fan is rated to run at (check the manufacturer's specs). For instance, my Noctua NF-F12 IndustrialPPC 3000 PWM are rated at 750RPM +-20% at the low end, so 600RPM or less is an appropriate lower threshold value.

Take note of your results and input them in the following commmand:

~# ipmiutil sensor -N *IP address* -U *Username* -P *Password* -n *snum* -l *lower threshold* -h *upper threshold*

-n selects the appropriate sensor, using its Snum
-l sets the lower thresholds - the input is the highest value, the other, lower thresholds are one notch lower each
-h sets the higher thresholds - the input is the lowest value, the other, higher thresholds are one notch higher each

Repeat this command for all fans whose thresholds you wish to change.

Please note that specifying only -l without -h or vice versa will write 0 to the non-specified threshold! This will lead to unwanted behavior. Please always include both upper and lower thresholds!
  • Like
Reactions: averyfreeman
Author
Ericloewe
Views
8,384
First release
Last update
Rating
0.00 star(s) 0 ratings

More resources from Ericloewe

Latest updates

  1. Initial migration

    This is the original migration of the document to the Resources section.
Top