P

Supermicro X9/X10/X11 Fan Speed Control

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

DaveInTexas

Member
Oct 28, 2021
87
91
18
I've since replaced these (Broken?) fans with a silverstone branded one and it's running just fine on the FAN4 header. Can control the speed and everything. I'm leaving the other fans on the separate fan controller just so it doesn't make a ton of noise when it boots up haha.
Glad you got it sorted!
 

rekd0514

Member
May 11, 2015
39
13
8
FYI, on my X13SAE-F the "standard" fan speed seems to have the SYS headers tied to CPU temp. The SYS headers are behaving just like CPU_FAN1 in that they scale with CPU temp in a 1:1 ratio. As in the past, Optimal and Heavy I/O put the SYS headers at a fixed speed.

Not sure if this is a change for all X13 mainboards or not.

I was able to alter the critical thresholds using IPMI Util (I am on Windows, no Linux system handy on the network). This was how I set a new lower threshold:

ipmiutil sensor -N <IPMI IP> -U <IPMI username> -P <password> -n 41 -l 280 -h 2240

Where sensor #41 is the fan of interest.

The command for listing the sensors (posted elsewhere) is:

ipmiutil sensor -t -N <IPMI IP> -U <IPMI username> -P <password> -c

This netted actual low thresholds of "lo-crit" = 140 RPM and "lo-unrec" of 0 RPM. This BMC rev seems to not use the "lo-noncrit" setting or "hi-noncrit" setting and the above command does not change. They only display when no fan is connected to the header.

After moving a fan I had to reset the BMC to get it to recognize the header was now ABSENT and not just at 0 RPM.
What's the process to get ipmiutil working in Windows? I keep trying to install it with the batch file (buildwin.cmd) and running into this error. What else do I need to install, maybe I'm missing something simple.

Check that VCINSTALLDIR and LIBPATH are correct

I try to install vcvars32.bat or vcvars64.bat and get "Cannot locate vcvars for amd64, please run it manually."
 

bgrorud

New Member
Jun 27, 2024
5
0
1
There seems to be some really smart people here, so I'm hoping one of you can help me out. I just purchased a used Supermicro SSG-6028R-E1CR24N system which has an X10DSC+ system board. Using the necessary IPMI commands, I'm able to control fan speed, sensor limits, etc, but as soon as I apply the settings the system reverts fan speed back to the standard value in under 1 second.

Here are the details of my setup. I'm running Windows Server 2019 and I can communicate with / program the IPMI with IPMIUtil, IPMIView, IMPICFG-Win, and SMCIPMITool

I can set the fan mode between Standard, Full, and Heavy IO (both through the command line utilities, or the IPMIView). I cannot find any place in the bios to control the fan setting. Regardless of the initial starting config, changes to the fan speed do not stick for more than 1 second.

I can retrieve sensor info and set all sensor parameters (various upper / lower limits), the following command seems to be the most comprehensive (my fans are listed as sensor 41-45) -
ipmiutil sensor -n 41 -u 200.00:150.00:100.00:3500.00:3600.00:3700.00 -N 192.168.0.135 -U ADMIN -P ADMIN -c -g fan
I can confirm those settings come through to the IPMIView, but the fans continue to operate above the threshold.

I can set the zone to be a percentage of fan power, and the fans slow down briefly (less than a second) then go back up
IPMICFG-Win.exe -raw 0x30 0x70 0x66 0x01 0x00 0x15
I only seem to have 1 zone, if I replace the zone identifier with 0x01, it returns an error.

Whatever settings I set to zones or sensors, when I do a "cold reset" or "warm reset" on the BMC, or reboot the server, my settings are lost.
I do not need my settings to survive a reboot as I'm happy with just scripting the commands that work on startup, and I can accept louder fans during boot.

Under the "Standard" fan profile, the fans run at around 7,000 rpm, I'm looking to get / keep that number under 4,000.
The only thing that works, is if I put my zone programming command in a looping batch file, the fans will slow down and run at the configured speed. I'm just afraid of using this as a solution as I'm just pounding the IPMI setting several thousand times per hour, and the fans are just not going up because as soon as whatever is changing the value, is getting overwritten by my data before the server has a chance to respond to it.
@echo off
:STARTHERE
IPMICFG-Win.exe -raw 0x30 0x70 0x66 0x01 0x00 0x10>nul
GOTO STARTHERE
This keeps the fans around 4,000 rpm, and the CPU Temps around 45 degrees C, and the AOC_SAS Temp around 65 degrees C (which I'm assuming is the raid controller). I'm good with those numbers, they are about 40 degrees C below the threshold.

Any and all suggestions are greatly appreciated. Thanks!

-Brad
 

Vollans

New Member
Aug 10, 2022
16
13
3
I can set the fan mode between Standard, Full, and Heavy IO (both through the command line utilities, or the IPMIView). I cannot find any place in the bios to control the fan setting. Regardless of the initial starting config, changes to the fan speed do not stick for more than 1 second.
I'm far from an expert, but fan settings are in the IMPI interface (other network port), not the bios.
 

bgrorud

New Member
Jun 27, 2024
5
0
1
I'm far from an expert, but fan settings are in the IMPI interface (other network port), not the bios.
Yep. And that is where I am manipulating them (IPMI), some other posts referenced a bios setting as well, and I was thinking that setting might be overriding the IPMI commands I'm trying to set is all.
 

DaveInTexas

Member
Oct 28, 2021
87
91
18
@bgrorud have you tried this?

1. Set fan mode to FULL
2. Send fan zone speed command

raw 0x30 0x45 0x01 0x01 # fan mode = full

Incidentally, I am not familiar with the X10 DSC+ variant you have, but the X11 gen has only one fan zone, FYI.
 

southgb

New Member
Mar 4, 2023
4
0
1
(my fans are listed as sensor 41-45) -
ipmiutil sensor -n 41 -u 200.00:150.00:100.00:3500.00:3600.00:3700.00 -N 192.168.0.135 -U ADMIN -P ADMIN -c -g fan
I can confirm those settings come through to the IPMIView, but the fans continue to operate above the threshold.
I have two very different (generation-wise) Supermicro boards, my fans are labeled as such:
```
CPU_FAN1
CPU_FAN2
SYS_FAN1
SYS_FAN2
SYS_FAN3
```
And
```
FAN1
FAN2
FAN3
FAN4
FAN5
FANA
```

It seems this post is relevant to what you're experiencing. In the linked reply, @MikeWebb mentioned setting zones didn't work for him either.
 

DaveInTexas

Member
Oct 28, 2021
87
91
18
Whatever settings I set to zones or sensors, when I do a "cold reset" or "warm reset" on the BMC, or reboot the server, my settings are lost.
I do not need my settings to survive a reboot as I'm happy with just scripting the commands that work on startup, and I can accept louder fans during boot.
Brad, FYI this is expected behavior. The fan mode (e.g. optimal, full, standard, heavy I/O, etc.) will survive warm/cold boots, but manual fan speed settings will not.

EDIT: Slight clarification to my original comment here.... Custom set fan speed thresholds (e.g. LCR, which = Lower CRitical) will survive reboots. However, "set FANA to 33%" or whatever, will not.
 
  • Like
Reactions: T_Minus

bgrorud

New Member
Jun 27, 2024
5
0
1
@bgrorud have you tried this?

1. Set fan mode to FULL
2. Send fan zone speed command

raw 0x30 0x45 0x01 0x01 # fan mode = full

Incidentally, I am not familiar with the X10 DSC+ variant you have, but the X11 gen has only one fan zone, FYI.
I have tried it, but was wondering if I missed a step or if there was something else, or maybe a certain timing to the commands. If I restart the server, let it boot under "Standard" then run the command to switch to full, then run the command to set fan zone speed, it starts to dip for a half second then goes right back to Full

I'll repeat the steps again tomorrow night a couple times just to confirm.
 

bgrorud

New Member
Jun 27, 2024
5
0
1
I have two very different (generation-wise) Supermicro boards, my fans are labeled as such:
```
CPU_FAN1
CPU_FAN2
SYS_FAN1
SYS_FAN2
SYS_FAN3
```
And
```
FAN1
FAN2
FAN3
FAN4
FAN5
FANA
```

It seems this post is relevant to what you're experiencing. In the linked reply, @MikeWebb mentioned setting zones didn't work for him either.
The ipmiutil utility I'm using can reference the fans by SNum, which correspond to the FAN1,FAN2,etc.

092d SDR Full 01 01 20 a 04 snum 41 FAN1 = 28 AboveCrit 4000.00 RPM
0970 SDR Full 01 01 20 a 04 snum 42 FAN2 = 28 AboveCrit 4000.00 RPM
09b3 SDR Full 01 01 20 a 04 snum 43 FAN3 = 28 AboveCrit 4000.00 RPM
09f6 SDR Full 01 01 20 a 04 snum 44 FAN4 = 28 AboveCrit 4000.00 RPM
0a39 SDR Full 01 01 20 a 04 snum 45 FAN5 = 28 AboveCrit 4000.00 RPM

That post seems promising and I'll go read through the thread. The notion that something about how I'm trying to set the fans in not within spec so therefore it reverts back to default values makes sense.
 

southgb

New Member
Mar 4, 2023
4
0
1
The ipmiutil utility I'm using can reference the fans by SNum, which correspond to the FAN1,FAN2,etc.
Apologies, I didn't notice you were using a different tool.

The post from @DaveInTexas agrees. Hopefully this gets you a solution. I can still hear the fans screaming at me when I was dealing with this issue.

Brad, FYI this is expected behavior. The fan mode (e.g. optimal, full, standard, heavy I/O, etc.) will survive warm/cold boots, but manual fan speed settings will not.
 

peter_s

New Member
Oct 15, 2021
20
11
3
There seems to be some really smart people here, so I'm hoping one of you can help me out. I just purchased a used Supermicro SSG-6028R-E1CR24N system which has an X10DSC+ system board. Using the necessary IPMI commands, I'm able to control fan speed, sensor limits, etc, but as soon as I apply the settings the system reverts fan speed back to the standard value in under 1 second.
...
-Brad
I had a conversation here about a similar HW (Super Micro 6028U-TR4T+ server with the X10DRU-i+ motherboard).
The IPMI zone definition was different for this board. smfc was able to handle CPU zone but HD zone was problematic.

In your case, I think you have to setup the lower threshold for your fans as well, see this chapter about this topic.
 

DaveInTexas

Member
Oct 28, 2021
87
91
18
I have tried it, but was wondering if I missed a step or if there was something else, or maybe a certain timing to the commands. If I restart the server, let it boot under "Standard" then run the command to switch to full, then run the command to set fan zone speed, it starts to dip for a half second then goes right back to Full

I'll repeat the steps again tomorrow night a couple times just to confirm.
I'll attempt to share my thoughts without getting in the weeds, and keeping advice as concise as possible. If this does not make sense to you, please let me know and I'll explain in more detail.

There's a few complications that could be happening here:
  1. Scenario 1: Presuming no BIOS overrides are happening.... Fan speed thresholds are set too low. Your manual fan speed commands cause fan speeds to fall below minimum BMC thresholds for Lower CRitical (LCR) or Lower Non-Recoverable (LNR) thresholds for ANY fan.
  2. Scenario 2: BIOS overrides exist and your IPMI commands are causing fan speeds to drop below the invisible BIOS thresholds. These cannot be modified by end user and are hard-coded into the BIOS. Nothing you can do about this. The BIOS has priority over anything else (e.g. user commands) and will continuously poll the BMC to get fan speeds, and then instruct the BMC to ramp fans up if the BIOS perceives a lower fan speed threshold violation. This is worst-case scenario as you cannot defeat it.
  3. Scenario 3: Your fan speed command to one or more fans is too low for the fan to support, causing one or more fans to slow below their lower BMC fan speed threshold, triggering BMC panic mode. For example, let's say one of your fans cannot spin below 300 RPM, and even though you set your lower BMC fan speed thresholds at 200 RPM to try and prevent the BMC panic situation, the fan physically cannot spin that low. So, when you try and crank down the fan speed (e.g. to 0% or 1%), the fan attempts to comply with its fan duty instruction from IPMI, but the fan stalls out because it is not capable of spinning at that low of an RPM. Then the fan RPM = 0, and the BMC hits panic mode, causing all your fans to go to 100% PWM as a failsafe measure.
  4. Scenario 4: manual fan speed changes are not allowed for your mobo (blocked by BMC settings or BIOS settings)
Scenario # 1 is plausible.
Scenario # 2 is extremely unlikely for a Supermicro X10 board.
Scenario # 3 is plausible.
Scenario # 4 is very unlikely, but not impossible for a Supermicro X10 board.

EDIT: I should have worded that 3rd scenario a bit better when I wrote this post. What's actually happening in that scenario is a low speed command is sent to a fan... say "spin down to 5% fan speed" or whatever. But, the fan in question does not like low RPM commands. Some fans don't like to cooperate when you set a very low PWM fan duty (percentage). The board reduces power to the fan and the fan stalls out (speed now = 0). This can happen for a variety of reasons, but one use case is when people mix up different fans in the same fan zone (not suggesting you're doing this, but just saying this is one reason why such behavior is discouraged... namely, one fan might not be able to handle a very low PWM).
 
Last edited:
  • Like
Reactions: peter_s and nexox

DaveInTexas

Member
Oct 28, 2021
87
91
18
... some other posts referenced a bios setting as well, and I was thinking that setting might be overriding the IPMI commands I'm trying to set is all.
Possibly. Unlikely for an X10 board as I mentioned above, but possible.

Here's a practical experiment you can try to determine if that is what's going on:
  1. Using IPMI, set Fan Mode to FULL (normally 0x01)
  2. Wait 10-15 seconds for the fans to adjust
  3. Measure all your fan RPMs using IPMI and record speed of each fan (by fan ID)
  4. Using IPMI, set Fan Mode to OPTIMAL (normally 0x02)
  5. Wait 10-15 seconds for the fans to adjust
  6. Confirm your server operates the fans in Optimal mode, which should be somewhere between 30-50% of max speed. If this doesn't happen, then you can stop here as there's something else going on.
  7. Measure all your fan RPMs using IPMI and record speed of each fan
  8. Divide Optimal fan speed of a fan (pick one) into the same fan's Full fan speed (e.g. 3000 / 8000)
  9. Take the fraction you calculated in # 7 and multiply it by 255 (e.g. 3/8 * 255 = 0.375 * 95.6)
    • caveat: most X10 boards use a range of 0-255, but some use 0-100 (converted to hex); generally speaking the 0-100 method is an X11 and later gen approach, but there might be a few late-gen X10's that use this method too... depends on your BMC chip and its programming... but presume 0-255 method unless proven otherwise
  10. Round up if necessary and convert to 8-bit hex (e.g. 95.6 = 96 = 0x60)
  11. Using IPMI, set Fan Mode to FULL
  12. Using IPMI, set manual fan speed for fan zone 0 to your calculated power ratio (e.g. 0x60)
  13. Wait 10-15 seconds for the fans to adjust
  14. Measure all your fan RPMs using IPMI and record speed of each fan
  15. Is current fan speed close to the Optimal mode fan speeds? They should be.
  16. Does the server immediately revert to full speed fan mode for all fans? Expected behavior is 'no' (fan speeds should remain near "optimal" level)
How and why this test is helpful
By plugging in a known value for fan speeds ( = optimal mode fan speeds ) that we know doesn't trigger panic mode normally, we can attest to the fact the fan speed threshold settings (e.g. LCR, LNR, UCR, UNR) are currently set such that running the fans at this PWM setting does not trigger fan panic mode due to exceeding a fan speed threshold of some sort. Therefore, if your fans won't hold the same value when set manually, and auto ratchet back up to full speed when the Fan Mode is FULL, then something else (besides you) is instructing the BMC to do that, which means it's the BIOS.

If your fans remain stable at the equivalent to Optimal fan speed mode and don't auto-ramp up into full speed, then you know your commands work and it's matter of tweaking 1) your lower/upper fan speed thresholds; and 2) make sure your fan duty (PWM percentage) in your IPMI commands is not too low for the hardware (one or more fans) to handle. At this point, it comes down to fixing the fan speed thresholds and a bit of experimentation on the fan duty setting.
 
Last edited:
  • Like
Reactions: peter_s

Falloutboy

Active Member
Oct 23, 2011
306
32
28
I was just having a thought which I posted in the DIY hardware area - see what you guys think..

At the moment Supermicro Motherboard IPMI controls fans VIA Zones which means you can't run an individual fan in a zone at a higher speed than the others as you can only set the duty cycle.

My thought is this - and I'm no hardware engineer but, all SuperMicro boards have a USB connector on board, sometimes two on one header, peel off of one of those and pass through the other, with the USB port you have now taken over run a multiplexed 4 Pin fan controller which sends the PWM signal out to the board and returns the value back to the controller so that you can confirm the fan is rotating and the speed. The 12V and ground are to come from the board.
Set up the USB device to act like a normal Serial port over which you can send commands for the fans.. something like..

0F (FN) speed 0F means set, FN refers to which Fan you want to control say 1 through 8 followed by a two byte value for the speed.
F0 (FN) F0 means read,, FN refers to the Fan number you want to read from - again 1 through 8 and the unit would then send a two byte value back representing the fan speed.

This of course could also be done with a normal serial port if you had a board that would terminate one inside the case.

What do you think..
 

southgb

New Member
Mar 4, 2023
4
0
1
I have tried it, but was wondering if I missed a step or if there was something else, or maybe a certain timing to the commands. If I restart the server, let it boot under "Standard" then run the command to switch to full, then run the command to set fan zone speed, it starts to dip for a half second then goes right back to Full

I'll repeat the steps again tomorrow night a couple times just to confirm.
I'll chime in to confirm you definitely have to set the fans to "Full" to manually set fan speeds, the other settings allow IPMI to control the fans based on temperature.

Also, perhaps the smfc script could be helpful to you. I don't recall seeing it suggested yet.