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.

Deligator

New Member
Jul 31, 2023
2
4
3
I had a similar problem with a recently acquired SYS-5019S-TN4 that uses the X11SSV-M4F. It was running LOUD at idle. I could get the IPMI raw commands to get it to a healthy noise level .. but then it would stay there when under load .. and so I figured I would put together a little script. It is working for me and thought it was a good little give back to the world as I am only as good as the information I get .. and forums like this help a mediocre techie way outperform his gifts. This box was in a windows environment so I put it together as a PowerShell Script. feel free to use and share. I might go back and do a full PID loop for it but as of now I just go into Quiet Mode when the CPU is below the threshold (currently 50C) and goes into "standard" fan mode (ramps from 45% to 100% based on IPMI temps) above a threshold (currently 53C).. then when it drops back below the quiet temp it goes back to the quiet mode. this assumes you have the SuperMicro Tool IPMICFG-Win.exe in the Path of your windows install. you can tune the switchover points of 50 53 as well as the quiet mode level I currently have at 0x06 but that is MB specific and can be 0-64 or 00-FF depending .. just play around with that command before you load this on startup.



Code:
# Function to get CPU temperature using IPMI

function GetCpuTemperatureFromIPMI {

$ipmiOutput = & "ipmicfg-win.exe" -sdr

$cpuTemp = $ipmiOutput | Where-Object { $_ -match '\(4\) CPU Temp\s+\|\s+(\d+(?:\.\d+)?)C/' } | ForEach-Object { $matches[1] }
return [double]$cpuTemp
}
# Function to set fan mode to auto using IPMICFG-Win.exe

function SetFanModeAuto() {



Start-Process -FilePath "IPMICFG-Win.exe" -ArgumentList "-fan 0" -Wait



}

# Function to set fan mode to quiet using IPMICFG-Win.exe

function SetFanModeQuiet() {

Start-Process -FilePath "IPMICFG-Win.exe" -ArgumentList "-fan 1" -Wait



Start-Process -FilePath "IPMICFG-Win.exe" -ArgumentList "-raw 0x30 0x70 0x66 0x01 0x00 0x06" -Wait

}

# Main script logic

try {

$currentFanMode = $null  # Variable to store the current fan mode



while ($true) {

$cpuTemperature = GetCpuTemperatureFromIPMI

if ($currentFanMode -ne 1 -and $cpuTemperature -lt 50) {

SetFanModeQuiet

$currentFanMode = 1  # Set the current fan mode to quiet (1)



Write-Host "CPU temperature is below 50°C. Fan mode set to quiet."

} elseif ($currentFanMode -ne 0 -and $cpuTemperature -ge 53) {

SetFanModeAuto

$currentFanMode = 0  # Set the current fan mode to auto (0)

Write-Host "CPU temperature is above 53°C. Fan mode set to auto."

}

# Wait for 20 seconds before the next check

Start-Sleep -Seconds 20

}



} catch {

Write-Host "Error occurred: $_"

}
 

frogtech

Well-Known Member
Jan 4, 2016
1,488
272
83
36
Does anyone know if fan control is available on the 2U 4 node SuperMicro chassis?
 

Satan023

New Member
Oct 15, 2023
6
0
1
My chassis is chenbro rm252 it has 4 nidec 10000 rpm fans (80x80x38), mobo is x10drl-i.

This leads to the following issues:
1. When I set the fan mode to "full" and the server turns on, the 4 fans will run at a speed of 10000 rpm. That noise is really unbearable! I can't stay for even 1 minute unless I wear mute earplugs.

2. During the BIOS POST I can use ipmi in PC to control the fan speed.This no problem. But...I installed a 9364-8i raid card, when the startup process enters the RAID POST, the fan will return to “full”. I must execute the imptool command again. It's not over yet. After the RAID POST, the mobo finally entered the ESXI startup process. You've got it, the fan speed has returned to “full” again. I must execute the ipmitool command one last time to maintain the fan speed at 5% (2100 rpm).

Restarting or shutting down can cause loss ipmitool fan settings.
This made me mad....:eek::eek::eek:
I also have Dell R630. R630 can maintain the ipmi setting unless you unplug the power. I don't know why the supermicro motherboard can't do it?

I urgently need a method to maintain the ipmi fan speed setting even if I restart or shutdown the server (not unplug the PSU).

Anyone have any ideas?
 

frogtech

Well-Known Member
Jan 4, 2016
1,488
272
83
36
My chassis is chenbro rm252 it has 4 nidec 10000 rpm fans (80x80x38), mobo is x10drl-i.

This leads to the following issues:
1. When I set the fan mode to "full" and the server turns on, the 4 fans will run at a speed of 10000 rpm. That noise is really unbearable! I can't stay for even 1 minute unless I wear mute earplugs.

2. During the BIOS POST I can use ipmi in PC to control the fan speed.This no problem. But...I installed a 9364-8i raid card, when the startup process enters the RAID POST, the fan will return to “full”. I must execute the imptool command again. It's not over yet. After the RAID POST, the mobo finally entered the ESXI startup process. You've got it, the fan speed has returned to “full” again. I must execute the ipmitool command one last time to maintain the fan speed at 5% (2100 rpm).

Restarting or shutting down can cause loss ipmitool fan settings.
This made me mad....:eek::eek::eek:
I also have Dell R630. R630 can maintain the ipmi setting unless you unplug the power. I don't know why the supermicro motherboard can't do it?

I urgently need a method to maintain the ipmi fan speed setting even if I restart or shutdown the server (not unplug the PSU).

Anyone have any ideas?
that seems intended and just how SM baseboard firmware is designed, the only way to get around it is to just leave the machine running or not send an IPMI command until the OS is booted using some ESXi startup script. i have observed the same behavior on other supermicro x10 boards.
 
  • Like
Reactions: Satan023

Satan023

New Member
Oct 15, 2023
6
0
1
that seems intended and just how SM baseboard firmware is designed, the only way to get around it is to just leave the machine running or not send an IPMI command until the OS is booted using some ESXi startup script. i have observed the same behavior on other supermicro x10 boards.
So this is normal behavior?

It seems like I can only replace the low rpm 8038 fan...
 

peter_s

New Member
Oct 15, 2021
20
11
3
So this is normal behavior?

It seems like I can only replace the low rpm 8038 fan...
Hi, have you checked/configured the threshold values for the fans?
Read more about this here.
If the threshold values are correct (fan rotation speed is always between LOWER and UPPER limits) then the OPTIMAL fan mode should be able to control the fans dynamically in a quite way.

Also my service here was created for the same purpose, to minimize the fan noise.
 
Last edited:
  • Like
Reactions: Satan023

frogtech

Well-Known Member
Jan 4, 2016
1,488
272
83
36
So this is normal behavior?

It seems like I can only replace the low rpm 8038 fan...
what @peter_s has said is also another thing worthy of consideration, but i feel like i set my fan thresholds to the typical 225 values that you see and i still see fans ramp back up until the OS is booted. id thought that the thresholds not only throw an error in the IPMI but revert the fan speed to be within the threshold range. at any rate, if i had to guess i'd say the bmc is the "hardware owner" until OS take over, which causes the fans to always revert back.
 

Satan023

New Member
Oct 15, 2023
6
0
1
Hi, have you checked/configured the threshold values for the fans?
Read more about this here.
If the threshold values are correct (fan rotation speed is always between LOWER and UPPER limits) then the OPTIMAL fan mode should be able to control the fans dynamically in a quite way.

Also my service here was created for the same purpose, to minimize the fan noise.
does smfc worked in "OPTIMAL" mode ? Will the fan speed setting of smfc be overwritten by BMC?
 
Last edited:

Satan023

New Member
Oct 15, 2023
6
0
1
what @peter_s has said is also another thing worthy of consideration, but i feel like i set my fan thresholds to the typical 225 values that you see and i still see fans ramp back up until the OS is booted. id thought that the thresholds not only throw an error in the IPMI but revert the fan speed to be within the threshold range. at any rate, if i had to guess i'd say the bmc is the "hardware owner" until OS take over, which causes the fans to always revert back.
I don't understand the meaning of setting fan thresholds.
In "OPTIMAL" mode, if I set the fan thresholds to "0 200 300 2400 5000 10000" , will the fan run at between 300~2300 RPM?
 

RolloZ170

Well-Known Member
Apr 24, 2016
6,684
2,069
113
I don't understand the meaning of setting fan thresholds.
In "OPTIMAL" mode, if I set the fan thresholds to "0 200 300 2400 5000 10000" , will the fan run at between 300~2300 RPM?
no. threshold are the upper and lower levels within normal operation. outside gives BMC Alarm and 100% FAN RPM.
 
  • Like
Reactions: Satan023

ericloewe

Active Member
Apr 24, 2017
327
153
43
31
To clarify: It's not possible to nudge the built-in fan control loops, aside from the BMC panicking and setting all fans to 100% if one goes outside its set thresholds. All fan control scripts work around this by manually sending the BMC less-than-well-documented fan PWM commands, based on sensors available to the script, overriding the BMC's internal fan control loop for a while and replacing it with an external control system.
 
  • Like
Reactions: DaveInTexas

peter_s

New Member
Oct 15, 2021
20
11
3
I don't understand the meaning of setting fan thresholds.
In "OPTIMAL" mode, if I set the fan thresholds to "0 200 300 2400 5000 10000" , will the fan run at between 300~2300 RPM?
The safe interval here is rather 400-2300 rpm. Unfortunately the rotation speed of the fans is not stable, there is a small variance.
Please check the specification of your fans and setup threshold based on that. For example if your fan has minimum 300 rpm rotation speed I would use 0, 100, 200 values for low limits. My experience with Noctua fans that they are not stable below 500 rpm (i.e. fan level 35%), sometimes they can trigger switching back to 100% in FULL mode.
 
  • Like
Reactions: Satan023

SnJ9MX

Active Member
Jul 18, 2019
148
96
28
I wrote some python to control my AsrockRack fan speed via PID loops. Pretty sure this could be easily adapted to Supermicro.

 
  • Like
Reactions: peter_s

i386

Well-Known Member
Mar 18, 2016
4,444
1,660
113
35
Germany
My experience with Noctua fans that they are not stable below 500 rpm (i.e. fan level 35%), sometimes they can trigger switching back to 100% in FULL mode.
Noctua lists in the datasheet the tolerances for the different pwm levels, you have to calculate the possible rpms before deploying them.

Example with the industrial 3000 rpm 120 fan (NF-F12 industrialPPC-3000 PWM).
100% PWM = 3000 rpm and 10% (300rpm) tolerances => 100% pwm will between 2700 to 3300 rpm
20% PWM = 750 rpm and 20% (150rpm) tolerances => 20% pwm will be 600 to 900 rpm (and not trigger warnings/ramping up all fans to 100%)
 

peter_s

New Member
Oct 15, 2021
20
11
3
Noctua lists in the datasheet the tolerances for the different pwm levels, you have to calculate the possible rpms before deploying them.

Example with the industrial 3000 rpm 120 fan (NF-F12 industrialPPC-3000 PWM).
100% PWM = 3000 rpm and 10% (300rpm) tolerances => 100% pwm will between 2700 to 3300 rpm
20% PWM = 750 rpm and 20% (150rpm) tolerances => 20% pwm will be 600 to 900 rpm (and not trigger warnings/ramping up all fans to 100%)
True. Based on this my NF-F12 PRM (300-1500 RPM) is fluctuating on minimal 240 - 360 RPM interval. I think also a stable power will be needed from the motherboard. Splitters and Low Noise adapters could also change the minimum speed.