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
93
93
18
What do you think..
I'm not sure you're going to get many helpful comments on this here, as this thread is focused on how to utilize existing on-board hardware control of the fans, whereas your proposal would require not only a hardware device, but also a device driver of some sort.

I can think of a few challenges off-the-top-of-my-head.
  1. During boot process, you will not be able to control the fan speeds. This is not a loss compared with sending commands to the on-board fan controller (same behavior), but just pointing this out.
  2. On some boards, depending on how the user sets the fan speeds via your USB controller, versus what the on-board fan controller expects the fans' rotational fan speeds to be, you'll receive continuous warnings in some logs that the fans are too slow/fast (many times you'll only receive these messages if the fans are too slow compared to the fan controller's expectations).
  3. Lower/Upper fan speed thresholds in the BMC still need to be managed. Otherwise, you're risking out-of-range errors when read fan speeds fall outside of one range trigger or another. This may also cause the fan controller and/or the BIOS to think you have a failed fan or to try and push all fans to 100% speed.
Personally, I think it's an interesting concept if suitable hardware exists. Though, I would not be inclined to use such a method unless I was not able to wrangle the fan speeds using the incumbent hardware. An advantage of your suggested approach is it's relatively hardware agnostic, outside the scope of having 2 internal USB ports. I think the presence of that or not is probably your biggest obstacle (i.e. how many boards have 2 internal USB ports you can leverage?) along with the aforementioned need for software drivers (I would think you'd want Windows x64 and Linux drivers at the very least).
 

frogtech

Well-Known Member
Jan 4, 2016
1,497
277
83
36
Can anyone comment on whether LGA3647 X11 supermicro boards still allow fan control through adjusting the system and peripheral zones as outlined in the OP?
 

DaveInTexas

Member
Oct 28, 2021
93
93
18
I can't say for sure, but it *should* work on that board. It has 8x 4-pin fan headers, all belonging to the same fan zone as far as I can tell (should be all under Zone 0). Try the X11 standard commands that work on other boards. The board has an AST2500 BMC chipset. I'll be surprised if it does not work. Manual says PWM control is supported. If it does _not_ work then it's likely indicating the fan controller is locked out for BIOS control only.

If the X11 commands don't work, try the X10 commands. If those don't work, you're probably out of luck. Post another comment here if you run into trouble or need help identifying the commands to try out.
 

DaveInTexas

Member
Oct 28, 2021
93
93
18
This info may help...

1. Set fan mode to FULL
2. Set manual fan speed for a given zone

sudo ipmitool raw 0x30 0x45 0x01 0x01
sudo ipmitool raw 0x30 0x70 0x66 0x01 0x00 0x___

last digit is fan speed 0-100 expressed as 0-100 in hexadecimal (e.g. 100% speed = 0x64)


##############################################
IPMI cheat-sheet for Supermicro motherboards
##############################################
1. get current IPMI fan mode: raw 0x30 0x45 0x00
2. set IPMI fan mode: raw 0x30 0x45 0x01 <fan mode>
fan mode 0 = standard
fan mode 1 = full
fan mode 2 = optimal
fan mode 4 = heavy i/o
any other fan mode value (including 3) will return null or an error message
3. read and display all available sensor info
:: sudo ipmitool -U {username with root access} -P {password} sensor
4. abbreviated sensor info display (all available sensors)
:: sudo ipmitool -U {username with root access} -P {password} sdr
:: SDR means "Sensor Data Records"

# set fan speed for specified zone
#
# duty range 0-100 to hexadecimal

ipmitool raw 0x30 0x70 0x66 0x01 "0x0${zone}" $duty_hex
 
  • Like
Reactions: dawsonkm

metag

Member
Apr 26, 2016
67
17
8
I struggled a bit to figure this out. Sharing here in case it can help someone else in similar situation.

I have a 4029GP-TRT2 system, with ASPEED AST2500 BMC. There are a total of 10 fans, including 8 Hot-swap 92mm cooling fans and 2 CPU fans from the dual CPU setup. They are named FAN1-10 in the sensor data. Normally all of them would be in fan zone 0. That is not the case for me. Instead:

FAN 10 => Zone 0, CPU 1 fan
FAN 9 => Zone 1, CPU 2 fan
FAN 5,6,7,8 => Zone 2, Hot swap chassis fans
FAN 1,2,3,4 => Zone 3, Hot swap chassis fans
 
Last edited:

DaveInTexas

Member
Oct 28, 2021
93
93
18
I struggled a bit to figure this out. Sharing here in case it can help someone else in similar situation.

I have a 4029GP-TRT2 system, with ASPEED AST2500 BMC. There are a total of 10 fans, including 8 Hot-swap 92mm cooling fans and 2 CPU fans from the dual CPU setup. They are named FAN1-10 in the sensor data. Normally all of them would be in fan zone 0. That is not the case for me. Instead:

FAN 10 => Zone 0, CPU 1 fan
FAN 9 => Zone 1, CPU 2 fan
FAN 6,7,8,9 => Zone 2, Hot swap chassis fans
FAN 1,2,3,4 => Zone 3, Hot swap chassis fans
Actually, “normal” as in “most common” for SuperMicro is to a) use fan zones; and b) have 2 zones (CPU cooling + system cooling).

That’s very interesting though, regarding your server’s fan config.

Have you found the standard AST2500 commands (for Supermicro) work for each fan zone?

Note: SuperMicro’s use of fan ‘zones’ is effectively arbitrary. There is a limit to the addressable fans via these BMC chips (normally 16 at the most). It’s the middleware that sometimes conflates the addressing of the fans between direct (fan ID x) vs “zone” or group.

I don’t know why SM does it this way, but they’ve been doing it for a long time. AsRock’s approach is much better IMHO, though overall I prefer the hardware package from SM when looking at the bigger picture (i.e. not just the fan controller).
 
Last edited:

DaveInTexas

Member
Oct 28, 2021
93
93
18
Last edited:

metag

Member
Apr 26, 2016
67
17
8
Actually, “normal” as in “most common” for SuperMicro is to a) use fan zones; and b) have 2 zones (CPU cooling + system cooling).

That’s very interesting though, regarding your server’s fan config.

Have you found the standard AST2500 commands (for Supermicro) work for each fan zone?

Note: SuperMicro’s use of fan ‘zones’ is effectively arbitrary. There is a limit to the addressable fans via these BMC chips (normally 16 at the most). It’s the middleware that sometimes conflates the addressing of the fans between direct (fan ID x) vs “zone” or group.

I don’t know why SM does it this way, but they’ve been doing it for a long time. AsRock’s approach is much better IMHO, though overall I prefer the hardware package from SM when looking at the bigger picture (i.e. not just the fan controller).
Yes, I was able to get and set fan mode/speed using those commands.
 
  • Like
Reactions: DaveInTexas

karminski

New Member
Mar 25, 2019
1
3
3
bento.me

dashpuppy

Member
Dec 16, 2018
54
21
8
Home labbers, I am looking for some help to use the ipmi tool to change the fan speeds. I have the Supermicro X11spi-tf motherboard. Has a Xeon Silver 4210 with 256g ram and a single raid card. However the server lives in my cold garage and the fans are still sitting at 3400rpm. Id like to set them to say 2000 ish.

How do i go about doing this ?

I ran the ipmi tool to get the fan speeds & information, but lost from here.ipmi.jpg
 

DaveInTexas

Member
Oct 28, 2021
93
93
18
Apologies in advance for my brain-dump notes here... about to AFK... saw this and thought I'd reply real quick beforehand.

Home labbers, I am looking for some help to use the ipmi tool to change the fan speeds. I have the Supermicro X11spi-tf motherboard. Has a Xeon Silver 4210 with 256g ram and a single raid card. However the server lives in my cold garage and the fans are still sitting at 3400rpm. Id like to set them to say 2000 ish.

How do i go about doing this ?
That board has ASPEED AST2500 BMC chip, so the typical commands for X10/X11 boards should work, presuming your board is compatible. It very likely is, but I'm never 100% certain until confirmed as there are some weird edge cases where SM decided to block functionality with some boards. I think it's actually not always intentional as it can sometimes be an issue with the BIOS, etc. But, let's proceed presuming you're in the 90% chance it works category.

-----------------------------------------------------

From my notes:

• set fan mode to OPTIMAL (X11 boards are a little weird... in the weird world of supermicro... lol); other factors should be the same as X10
• fan speed range is 0x00 - 0x64 (0-100)
• fan speeds manipulated by pre-defined and fixed groups of fans called fan zones (your board has 2: zone 0 and zone 1)
• one zone has 5 fans, the other 2... is this a dual CPU board (??) the 2-fer is presumably CPU fans, but I don't have the manual in front of me, so I don't know for sure... just be certain which fans you're manipulating

-----------------------------------------------------

##############################################
IPMI cheat-sheet for Supermicro motherboards
##############################################
1. get current IPMI fan mode: raw 0x30 0x45 0x00
2. set IPMI fan mode: raw 0x30 0x45 0x01 <fan mode>
fan mode 0 = standard
fan mode 1 = full
fan mode 2 = optimal
fan mode 4 = heavy i/o
any other fan mode value (including 3) will return null or an error message
3. read and display all available sensor info
:: sudo ipmitool -U {username with root access} -P {password} sensor
4. abbreviated sensor info display (all available sensors)
:: sudo ipmitool -U {username with root access} -P {password} sdr
:: SDR means "Sensor Data Records"
5. review your IPMI's LAN interface settings
:: sudo ipmitool -U {username with root access} -P {password} lan print

-----------------------------------------------------

AST2500 set fan speed control commands (IPMI)

BYTE: VALUE

1: 0x30
2: 0x70
3: 0x66
4: 0x01
5: zone id
6: duty_hex range 0-100 (same as human %age)

e.g., "ipmi raw 0x30 0x70 0x66 0x01 0x00 0x1D" = "set speed of fans in fan zone 0 to 30%"
explanation: 0x1D hex = 30 decimal (16+14) | 5th byte is zone number (0x00 = zone 0)

-----------------------------------------------------

X11 boards fan sensor thresholds

lo-unrec low non-recoverable
lo-crit low critical
lo-noncr low non-critical

hi-noncr high non-critical
hi-crit high critical
hi-unrec high non-recoverable
 

DaveInTexas

Member
Oct 28, 2021
93
93
18
@dashpuppy I have very little hands-on experience with the X11 gen SM boards, so if above does not work, try the "set mode = FULL" first and then try the manual commands (X10 style procedure).

The order of ops is:
1. Set fan mode
2. Set fan speed by fan zone

Should be relatively straightforward if you have the correct commands AND the board allows manual fan control.
 

dashpuppy

Member
Dec 16, 2018
54
21
8
@dashpuppy I have very little hands-on experience with the X11 gen SM boards, so if above does not work, try the "set mode = FULL" first and then try the manual commands (X10 style procedure).

The order of ops is:
1. Set fan mode
2. Set fan speed by fan zone

Should be relatively straightforward if you have the correct commands AND the board allows manual fan control.
Thats the fun part of the question, knowing the correct commands ! :p

1st, can i use ipmiutil ? or do i need ipmi.exe ? I would use the command with ip & username & password then what ?
2nd, im trying to set the fans to say 25-30% speed as the room is cold and doesn't need fans to keep it cool.

YES i suck at software but good at hardware ! :0

Any example of what i would type / copy and use ?

So far i used " ipmiutil sensor -N 192.168.80.19 -U admin -P mypassword -g fan"
 

frogtech

Well-Known Member
Jan 4, 2016
1,497
277
83
36
Thats the fun part of the question, knowing the correct commands ! :p

1st, can i use ipmiutil ? or do i need ipmi.exe ? I would use the command with ip & username & password then what ?
2nd, im trying to set the fans to say 25-30% speed as the room is cold and doesn't need fans to keep it cool.

YES i suck at software but good at hardware ! :0

Any example of what i would type / copy and use ?

So far i used " ipmiutil sensor -N 192.168.80.19 -U admin -P mypassword -g fan"
Set CPU zone zone fan headers speed to 22%(headers labeled as FAN1, FAN2, etc)
.\ipmitool.exe -I lanplus -H 192.168.80.19 -U admin -P mypassword raw 0x30 0x70 0x66 0x01 0x00 0x16

Set Peripheral zone fan headers speed to 22%(headers labeled as FANA, FANB, etc)
.\ipmitool.exe -I lanplus -H 192.168.80.19 -U admin -P mypassword raw 0x30 0x70 0x66 0x01 0x01 0x16

look here for explanation, these values that you put after "raw",
*[0x30 0x70 0x66 0x01] **[0x00] ***[0x16]

*[0x30 0x70 0x66 0x01] **[0x01] ***[0x16]

* never changes
** system zone, 0x00 = CPU zone, 0x01 = peripheral zone
*** this is your value, in hex, that you want to set the speed to, use a decimal to hex calculator for values you would want, for example, if you used an online calculator and want a fan speed of 50%, you will put the 2 digit hex after the "0x" , e.g. 0x32

1735832341113.png
 

dashpuppy

Member
Dec 16, 2018
54
21
8
Set CPU zone zone fan headers speed to 22%(headers labeled as FAN1, FAN2, etc)
.\ipmitool.exe -I lanplus -H 192.168.80.19 -U admin -P mypassword raw 0x30 0x70 0x66 0x01 0x00 0x16

Set Peripheral zone fan headers speed to 22%(headers labeled as FANA, FANB, etc)
.\ipmitool.exe -I lanplus -H 192.168.80.19 -U admin -P mypassword raw 0x30 0x70 0x66 0x01 0x01 0x16

look here for explanation, these values that you put after "raw",
*[0x30 0x70 0x66 0x01] **[0x00] ***[0x16]

*[0x30 0x70 0x66 0x01] **[0x01] ***[0x16]

* never changes
** system zone, 0x00 = CPU zone, 0x01 = peripheral zone
*** this is your value, in hex, that you want to set the speed to, use a decimal to hex calculator for values you would want, for example, if you used an online calculator and want a fan speed of 50%, you will put the 2 digit hex after the "0x" , e.g. 0x32

View attachment 41071

OMG,, thank you so much, i will attempt this when i get home and shoot you guys some info :). very excited !!
 

DaveInTexas

Member
Oct 28, 2021
93
93
18
Thats the fun part of the question, knowing the correct commands ! :p

1st, can i use ipmiutil ? or do i need ipmi.exe ? I would use the command with ip & username & password then what ?
2nd, im trying to set the fans to say 25-30% speed as the room is cold and doesn't need fans to keep it cool.

YES i suck at software but good at hardware ! :0

Any example of what i would type / copy and use ?

So far i used " ipmiutil sensor -N 192.168.80.19 -U admin -P mypassword -g fan"
I have not used ipmiutil. I'm typically running local on a machine using ipmitool, after SSH'ing into the machine.

Generally, any IPMI tool should work. I personally use ipmitool frequently for raw commands on Debian systems, but ipmiutil ought to be fine. Anything IPMI 2.0 compatible should work.

Make sure you wait a second or two between sending the 2 commands, to be sure the fan controller receives both.

1. Set fan mode to OPTIMAL
Code:
ipmiutil raw -n 192.168.80.19 -u admin -p mypassword 0x30 0x45 0x01 0x02

2. Set fan speeds of Zone x (0 or 1)
Code:
ipmiutil raw -n 192.168.80.19 -u admin -p mypassword 0x30 0x70 0x66 0x01 0x0{zone_id} 0x{fan_duty}

example 1: set fan Zone 0 to 50% power:
Code:
ipmiutil raw -n 192.168.80.19 -u admin -p mypassword 0x30 0x70 0x66 0x01 0x00 0x32

example 2: set Zone 1 to 20% power:
Code:
ipmiutil raw -n 192.168.80.19 -u admin -p mypassword 0x30 0x70 0x66 0x01 0x01 0x14

If those commands do not work, replace the first command with:

1. Set fan mode to FULL
Code:
ipmiutil raw -n 192.168.80.19 -u admin -p mypassword 0x30 0x45 0x01 0x01
Please post back here and let everyone know if it worked!
 
  • Like
Reactions: dashpuppy