SuperMicro X9 IPMI custom fan curve

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

Eds89

Member
Feb 21, 2016
64
0
6
35
Hi,

I know there is a lot of info out there about SuperMicro IPMI fan speed control and threshold adjustment, but it is somewhat beyond me.

I am curious to know if it is possible to define custom fan curves and settings?
My understanding of how IMPI handles thresholds and controls fans is;
  • When a temp threshold such as CPU hits an upper threshold, the fans will all spin up to maximum speed until that threshold has recovered
  • If fan lower thresholds are not met, fans speeds increase higher than that threshold (and sometimes causing the frustrating fan speed cycling I myself have experienced)
  • Temp and fan thresholds are not directly linked
Therefore, I would love to know if it is possible to essentially tell IPMI that I want my fans spinning at X rpm at a minimum all the time.
Then, for several temp targets, I want my fan RPM to increase to X RPM. Then for the final upper temp target, I want my fans at full RPM. Basically creating a fan curve as I would on a consumer motherboard through the manufacturers software.

Spin up/down time control would also be nice, but I haven't seen any mention out there of that being possible.
Understand some of the above might be controllable by raw values/duty cycle, but this is an area I don't understand enough to try out.

Any advice or resource people can advise would be greatly appreciated! I can provide current sensor readings if needed.

Cheers
Eds

EDIT: I also run a FreeNAS VM on this particular server that has a SAS HBA passed through to it, meaning hard drives temps aren't directly available to IPMI.
It would be great if I could come up with a scripted way for FreeNAS to monitor drive temps, and then connect to IPMI and adjust fan speeds/curves.

Don't think IPMI is available for FreeNAS, so could SSH into a Linux box running the IPMITOOL.
 
Last edited:

EffrafaxOfWug

Radioactive Member
Feb 12, 2015
1,394
511
113
You can custom set the duty cycle with an ipmitool command, but making a curve would I think basically mean writing yourself a script to do it depending on various temperature thresholds. PigLover wrote a nice summary here: https://forums.servethehome.com/index.php?resources/supermicro-x9-x10-x11-fan-speed-control.20/

For example, to put CPU fans at 100%:
ipmitool raw 0x30 0x70 0x66 0x01 0x00 0x64

To put at 50%:
ipmitool raw 0x30 0x70 0x66 0x01 0x00 0x32

I was originally planning to do something similar myself but I found that for my setup the system fans running at 1000rpm was enough to keep the whole thing cool enough in any scenario, as well as being effectively silent for the user in question, so I never bothered - but it's a relatively simple matter to knock up a script to pull in temperatures from CPU, HDD etc from a variety of sources and bump up the fan duty cycles if required. Here's an example perl script someone knocked up based on temps reported by `ipmitool sdr list full`;
missmah/ipmi_tools
 

Eds89

Member
Feb 21, 2016
64
0
6
35
You can custom set the duty cycle with an ipmitool command, but making a curve would I think basically mean writing yourself a script to do it depending on various temperature thresholds. PigLover wrote a nice summary here: https://forums.servethehome.com/index.php?resources/supermicro-x9-x10-x11-fan-speed-control.20/

For example, to put CPU fans at 100%:
ipmitool raw 0x30 0x70 0x66 0x01 0x00 0x64

To put at 50%:
ipmitool raw 0x30 0x70 0x66 0x01 0x00 0x32

I was originally planning to do something similar myself but I found that for my setup the system fans running at 1000rpm was enough to keep the whole thing cool enough in any scenario, as well as being effectively silent for the user in question, so I never bothered - but it's a relatively simple matter to knock up a script to pull in temperatures from CPU, HDD etc from a variety of sources and bump up the fan duty cycles if required. Here's an example perl script someone knocked up based on temps reported by `ipmitool sdr list full`;
missmah/ipmi_tools
Thanks for that!

How does the duty cycle interact with temperature thresholds?
I.e if I set a specific duty cycle to 50%, and CPU temps spike, will the duty cycle increase in line with that or stay at the 50% mark?
Also, do the fans need to be set to "Full Speed" mode before adjusting duty cycles?

Cheers
Eds
 

EffrafaxOfWug

Radioactive Member
Feb 12, 2015
1,394
511
113
How does the duty cycle interact with temperature thresholds?
I.e if I set a specific duty cycle to 50%, and CPU temps spike, will the duty cycle increase in line with that or stay at the 50% mark?
AFAICT there's no interaction with temperature thresholds; from what I've seen, it's a hard limit - if you set a 50% duty cycle, the fans will stay at that speed regardless of temps (although if temps get high enough to cause an assert, temps will ramp up to 100% automatically) - hence the need for a script if you want to implement a fan curve.

Also, do the fans need to be set to "Full Speed" mode before adjusting duty cycles?
I believe so. Setting them to "optimal" at least means they don't follow the duty cycle, at least on my A2SDi-8C+-HLN4F.