Supermicro IPMI Fan Control on Windows

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

Sayger

New Member
Oct 10, 2019
5
0
1
Hi,

I have a Supermicro H11DSi-NT motherboard that I am using for a dual boot (Ubuntu 18.04 and Windows 10) workstation. I am trying to lower the fan speed.

I successfully lowered the fan speed on Ubuntu 18.04 using the excellent reference put together by PigLover:
https://forums.servethehome.com/index.php?resources/supermicro-x9-x10-x11-fan-speed-control.20/

I put together a startup script that utilizes IPMI "raw" controls to set a target speed percentage. Although I will look into controlling fan speed based on temperature later, I am currently only looking to set a specific level of fan speed.

However, I have not figured out how to control the fan speed when booting into Windows 10. My initial attempt was to perform a similar procedure by installing Cygwin and ipmitool, but I am unable to package the IPMI binary and the dlls to build ipmitool in Windows (see reference: ipmitool for windows).

Could anyone provide instructions on how to build ipmitool in Windows to control fan speed? Or suggest an alternative solution for Windows?

Thanks.
 

Jeff Robertson

Active Member
Oct 18, 2016
429
115
43
Chico, CA
Question, do you not have a windows copy of ipmitool? If not I can send a copy to you... My understanding is the IPMI controls the fans so it shouldn't matter which OS you boot once you sent the fan speed using ipmitool.

Here are my notes, not sure if this will help:
Set fans:



How To: change sensor thresholds with IPMI using ipmiutil

Extract
Ipmiutil-3.0.1-win64.zip to the c:\windows directory


To view fans:
ipmiutil sensor -N *IPAddress* -U *uname -P *pword* -c


To set fans speeds:
ipmiutil sensor -N *IPAddress* -U *uname* -P *pword* -n *Snum* -l 200 -h 1900

Where the -l is the low threshhold and the -h is the high threshhold
 
  • Like
Reactions: Sayger

Sayger

New Member
Oct 10, 2019
5
0
1
Question, do you not have a windows copy of ipmitool? If not I can send a copy to you... My understanding is the IPMI controls the fans so it shouldn't matter which OS you boot once you sent the fan speed using ipmitool.
I had issues with building ipmitool in Windows after downloading the source code from ipmitool/ipmitool.

When I controlled the fans using ipmitool in Ubuntu 18.04 following Piglover's reference, the fan speed settings are reverted to "full" speed after rebooting because the BIOS is competing for control. It doesn't matter whether I boot into Ubuntu or Windows. As a tentative solution, I added a startup script to run after loading Ubuntu, but it does result in the fans running at full speed between the the time that the BIOS POSTs and the fan speed settings based on ipmitool are configured (Piglover mentions what I'm experiencing in this thread: https://forums.servethehome.com/index.php?threads/supermicro-ipmi-fan-control.12025/).

Here are my notes, not sure if this will help:
Set fans:

How To: change sensor thresholds with IPMI using ipmiutil

Extract
Ipmiutil-3.0.1-win64.zip to the c:\windows directory


To view fans:
ipmiutil sensor -N *IPAddress* -U *uname -P *pword* -c


To set fans speeds:
ipmiutil sensor -N *IPAddress* -U *uname* -P *pword* -n *Snum* -l 200 -h 1900

Where the -l is the low threshhold and the -h is the high threshhold
I didn't know about changing the fan thresholds using ipmiutil. Thanks for the suggestion, Jeff! I will try it and report back later with the results.
 

Jeff Robertson

Active Member
Oct 18, 2016
429
115
43
Chico, CA
Good luck. On my x10 boards I would occasionally have an issue where the fans got stuck at high RPMs, the only fix was to pull the power cable to reset the IPMI. After that everything went back to normal for a few months.
 

Sayger

New Member
Oct 10, 2019
5
0
1
Still having some issues.

Previous settings:
My default threshold settings were: 700:500:300:25300:25400:25500 (low non-critical; low critical; low non-recoverable; high non-critical; high critical; high non-recoverable). At "full" BMC fan speed, my fans ran at around 1600 RPM. Details regarding the four Supermicro BMC fan speed options below.

  • Standard: BMC control of both fan zones, with CPU zone based on CPU temp (target speed 50%) and Peripheral zone based on PCH temp (target speed 50%)
  • Optimal: BMC control of the CPU zone (target speed 30%), with Peripheral zone fixed at low speed (fixed ~30%)
  • Full: all fans running at 100%
  • Heavy IO: BMC control of CPU zone (target speed 50%), Peripheral zone fixed at 75%

New settings:
I was able to change the low and high thresholds using ipmiutil, but I am still unable to set to a stable fan speed. I set the new low thresholds (low non-critical; low critical; low non-recoverable) to 100:100:100 and rebooted, but the fan speed remains unchanged. I figured this was because I set the BMC fan control to "full" speed so I tried changing the BMC fan control to "optimal" which resulted in the fans operating at about 300-700 RPM. I assumed this would solve the issue because the lower threshold alert should no longer be triggered. However, under the "optimal" BMC fan speed, my fans still oscillate between low RPM and max RPM.

Are the values for my thresholds fine? Is there a way to set raw fan speed using ipmiutil?

Another option I'm considering is to use an Ubuntu Docker container so I could run ipmitool raw commands when I boot into Windows 10.
 

Sayger

New Member
Oct 10, 2019
5
0
1
Played around with the settings some more and determined that lower fan speed thresholds to 0:0:0 and setting the Supermicro BMC fan mode to "standard" speed keeps all the fans at stable speeds of 400-700 RPM.

Under the same lower thresholds of 0:0:0 with the "optimal" and "heavy IO" BMC fan modes however, the fans oscillate between low to max speeds caused by a triggering of one particular peripheral fan. From the Supermicro IPMI interface, I could see this fan sometimes go to 0 RPM resulting in the triggered alert and the fans to run briefly at max speeds before reverting back to low speeds.

The standard speed setup with the 0 low threshold results in a quiet workstation and is fine for now, but I would like more control over the raw speeds.
 

EffrafaxOfWug

Radioactive Member
Feb 12, 2015
1,394
511
113
IIRC if you want to set the speeds manually and not have the BMC decide, you need to set the fan speed to "full" and then set the duty cycle for each zone manually (either once or write a script that'll set various duty cycles as various temperature thresholds are reached).

Changing the thresholds basically just set when the lower threshold asserts go off; if like me, you ran in to problems with a fan tach dropping to 0rpm (Noctua in my case) then you don't have many options.

the only fix was to pull the power cable to reset the IPMI. After that everything went back to normal for a few months.
Were you able to try rebooting just the BMC rather than power-cycling the entire machine?
 
  • Like
Reactions: Sayger

Sayger

New Member
Oct 10, 2019
5
0
1
IIRC if you want to set the speeds manually and not have the BMC decide, you need to set the fan speed to "full" and then set the duty cycle for each zone manually (either once or write a script that'll set various duty cycles as various temperature thresholds are reached).
Do you happen to know how to set the duty cycles in Windows 10? I can successfully do so in Ubuntu 18.04 using ipmitool, but I am not sure how to in Windows 10. I would use ipmitool again, but I am having trouble building ipmitool (my plan was to use ipmitool and compile with Cygwin). Ipmiutil appears to be able to set IPMI RAW commands using 'cmd', but I doesn't appear to be able to change the PWM duty cycle.

Changing the thresholds basically just set when the lower threshold asserts go off; if like me, you ran in to problems with a fan tach dropping to 0rpm (Noctua in my case) then you don't have many options.
Yeah, that appears to be the case. Nice to get confirmation on that - thanks for mentioning it so I don't continue eating up time messing with the thresholds.
 

EffrafaxOfWug

Radioactive Member
Feb 12, 2015
1,394
511
113
I've no experience with ipmiutil (nor ipmitool under cygwin), but in my last set of experiments the fan duty cycle raws only worked when the fan settings were set to "full" (as opposed to "optimal" which I think it the OotB default). I would hope that if ipmiutil does what it says on the tin then it'd work the same under windows as ipmitool would under nix.

And yeah, super annoying with the seeming problem between Noctua and SM IPMI; one server I ended up replacing the fans, the other I'm using a custom fan wall where luckily the fans never drop to 0rpm.