# Fan Speeds on SuperMicro System via IPMI

I have a SuperMicro 4027GR-TRT server that I am running multiple GPUs in. I would like to set the cases fan speed higher that what they are right now using IPMI, although I am not sure how to do it.

I am currently able to interact with the system using `ipmitool` using raw commands. I have been able to get and set the systems fan settings using the following commands (via http://www.supermicro.com/support/faqs/faq.cfm?faq=18009):

`ipmitool -I raw 0x30 0x45 0x01 0x00`

This will set the fans to "Normal, Full or Optimal". My fans are currently running on the optimal setting at right around 4,700 RPM.

How can I increase my case fan speed to ~8,000 RPM or so? I have tried changing the fan thresholds but I don't understand what those settings are doing.

Is there a way to set the fan speed to a single value? If not, how would I set the lowest threshold so that its lower limit is 8,000 RPM?

My current threshold settings are as follows:

```FAN1 4800.000 | RPM | OK | 300.000 | 500.000| 700.000| 25500.000 | 25500.000 | 25500.000 ```

I have tried setting the lower threshold to 8,000 but that made all of the fans run at 14,000 RPM. I am not sure how the lower thresholds work.

In order to force the fans at a particular speed all the time, you need to do the following on a Supermicro X9 board:

1. Set IPMI fan mode to "Full"
2. Set fan speed for the particular zone to the percentage fan speed you desire, expressed as a hexadecimal number. On the X9 boards, the possible speed range is 0-255, which is 0-100% expressed as hex, but on a scale where 0% = 0x00 and 100% = 0xff.

In your case, with 14k fans, you want their speed at 8k, so the ratio is 57% (8000 / 14000 = .57142...)

Take 255 * .57 = 145.35 = 0x91 would be your speed value. Now plug that in.

Step 1: Set "fan mode" to "Full"

``````{ipmitool command syntax} raw 0x30 0x45 0x01 0x01
``````

Step 2: Set "fan speed" to 57%

For Zone 0 (normally CPU fans or FAN_ where _ = a number, e.g. FAN1):

``````{ipmitool command syntax} raw 0x30 0x91 0x5A 0x03 0x00 0x91
``````

For Zone 1 (normally peripheral fans or FAN_ where _ = a letter, e.g. FANA):

``````{ipmitool command syntax} raw 0x30 0x91 0x5A 0x03 0x01 0x91
``````

NOTE1: Verified on a Supermicro X9DRi-F with Nuvoton WPCM450 BMC.

NOTE2: X10 boards operate differently. Some raw commands are different, and their %age fan speed is 0-100, not 0-255.

• where do you get these values from? Apr 16, 2023 at 4:21
• @ЯрославРахматуллин a combination of various sources: BMC technical documentation, experimentation on motherboards I have access to, information exchange with others who have performed similar experiments, motherboard manuals. Most motherboards follow particular patterns based on their manufacturer, board generation, and BMC chipset. There are exceptions, though rare. Generally speaking, only server boards allow granular or group fan header control. Apr 18, 2023 at 15:02

Supermicro has bad data in the IPMI full sensor record. The fans don't have a max of 25K RPM. Fans at 8K are loud and OSHA and the telecom unions get involved. Try this

``````ipmitool -I raw 0x30 0x45 0xFF 0xFF
``````
• Hey @user3699374, can you tell me what the raw command does? What do the last `0xFF 0xFF` do? Do you know how to determine what raw commands are available for a given system via IPMI?
– ajt
Jan 27, 2015 at 10:58
• This did not work at all
– ajt
Feb 6, 2015 at 21:24

I think the X9 motherboards have the same raw command as the X10 series. A la https://www.supermicro.com/support/faqs/faq.cfm?faq=20882

``````ipmitool -U <user name> -P <password> -H <hostname or IP> raw 0x30 0x70 0x66 0x01 0x00 0x<01 - 64>
``````

If your fans spin at a max of 14000 RPM and you wanted them to spin at 8000 RPM then you'd set the duty to 0x37

``````ipmitool -U <user name> -P <password> -H <hostname or IP> raw 0x30 0x70 0x66 0x01 0x00 0x37
``````
• it looks like these commands don't work on X9's; at least not on my super loud desktop X9DRU system.
– user378380
Sep 29, 2016 at 21:19
• +1 as this worked for me on a Supermicro 4028GR-TR (X9-Board)! To get the current values use `ipmitool raw 0x30 0x70 0x66 0x00 0x0[0|1]` with the last value specifying the region (`0`==CPU-zone, `1`=peripheral-zone) Jun 29, 2017 at 19:30
• @user378380 supermicro systems run fans at 100% if there is only one power supply detected of a possible 2 Mar 30, 2021 at 0:06
• They do not. The X10/X11 boards use the same or similar IPMI commands. The X9 boards are different. Furthermore, it can also depend on which BMC chip your board has. The X9 gen boards have either no BMC, or one of 4 BMC chips from 3 different manufacturers. Mar 7, 2023 at 23:06

The `0xFF` is used by some vendors to set fan speed to the max. There is no way to find what raw commands work with a specific vendor without consulting the vendor's documentation.

The 25K values you see are very, very out of range. Fans don't run at 25K RPM. So there is a bug in the SuperMico IPMI full sensor record for the fans or ipmitool has a bug.