Had a thought re Supermicro motherboards..

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

Peter Blanchard

Active Member
Jun 30, 2022
157
29
28
On the software side, my goal is optimise fan speeds for quietness and still keep component temps in an acceptable range.

It's back-to-school stuff re optimisation algorithms.
 

nexox

Well-Known Member
May 3, 2023
1,092
491
83
My plan was to spool the fans down on an idle system, wait for it to get a little bit warm, then one at a time ramp them up to see how that particular fan affected each component, use that to assign a weight to determine which fans to adjust to react to a particular high temperature. This would all be done in userspace, of course, where I'd have access to all the temperature sensors, just feeding desired RPMs to the fan controller, which would then just have to focus on PWM and tach.
 

Falloutboy

Active Member
Oct 23, 2011
304
31
28
My plan was to spool the fans down on an idle system, wait for it to get a little bit warm, then one at a time ramp them up to see how that particular fan affected each component, use that to assign a weight to determine which fans to adjust to react to a particular high temperature. This would all be done in userspace, of course, where I'd have access to all the temperature sensors, just feeding desired RPMs to the fan controller, which would then just have to focus on PWM and tach.
That side is already pretty much sorted , there is a script for trunas scale which adjusts things on the fly based on onboard sensors. The software for the mega has already been written in three separate projects, I just have to marry the three into one.
 

nabsltd

Well-Known Member
Jan 26, 2022
534
383
63
Generally on servers if you have zero fan speed for an active fan especially a CPU fan triggers a very piercing audio alarm, at least my old X10DRX used to do that.
If you have no fan tach signals connected to the motherboard and reset the IPMI, it will not complain about missing fans, because as far as it is concerned, no fans are connected. As long as you adequately cool the components, you can run any SM motherboard with no fans connected. You just won't get any IPMI info about fan speed.

I've never seen a SuperMicro motherboard give an audible alarm for fan tach drop to zero. Every one I have ever worked with just ramps up all the other fans to 100%.
 

nabsltd

Well-Known Member
Jan 26, 2022
534
383
63
My plan was to spool the fans down on an idle system, wait for it to get a little bit warm, then one at a time ramp them up to see how that particular fan affected each component, use that to assign a weight to determine which fans to adjust to react to a particular high temperature. This would all be done in userspace, of course, where I'd have access to all the temperature sensors, just feeding desired RPMs to the fan controller, which would then just have to focus on PWM and tach.
I really wish that the Windows program FanControl was open source. It uses an open-source sensor information library that works on pretty much any OS, but the code to create fan curves and the code that automatically learns what speed is needed to keep a sensor at a certain temperature is closed source.
 
  • Like
Reactions: nexox

CyklonDX

Well-Known Member
Nov 8, 2022
1,037
348
83
One could write a powershell/batch script for windows - and have it either run as a service or trigger by a task scheduler.
*with config that would set specific curve they would want.

*it'd be really the same as it is under linux.
The commands to ipmitool should be same.
 

Peter Blanchard

Active Member
Jun 30, 2022
157
29
28
I really wish that the Windows program FanControl was open source. It uses an open-source sensor information library that works on pretty much any OS, but the code to create fan curves and the code that automatically learns what speed is needed to keep a sensor at a certain temperature is closed source.
I strongly doubt that the algorithms it employs are unique. It will use something(s) that's also used in real-time industrial process control domain.

My problem is that I can write the specification for a solution but my coding skills are weak.
 

Falloutboy

Active Member
Oct 23, 2011
304
31
28
I strongly doubt that the algorithms it employs are unique. It will use something(s) that's also used in real-time industrial process control domain.

My problem is that I can write the specification for a solution but my coding skills are weak.
My coding skills are extremely rusty, about the most I have done recently is a lot of work using Python to manipulate 1m DEM Satellite data but I am sure in the long run I can pull this off, I sort of absolutely need to have it and desperation is a good motivator :)

Things are a bit up in the air at the moment as I am arranging some property alterations to cordon of my area so I can get stuff done which is going to take about 14 days worth of house modifications..

I have already started on the code though and just about have the serial input over USB done for the Arduino, the only problem I am having is I am using a terminal emulator called Putty and I'm not sure if it is interfering or not but I seem to sometimes get UniCode and not Ascii so I am looking for something that will just be dumb and do as I ask while attempting to identify if there are any other issues.

Needless to say I can transfer data but I was using the old hold down alt and type in the Ascii number for the character on the numeric keypad... this too could be causing problems.

BTW: This is where fan controls source is located, I like this program under windows too which is why I dropped the author a C Note and told him to keep up the good work and not sell out to any of the Mobo makers.

Fan Control Source.
 
Last edited:

nabsltd

Well-Known Member
Jan 26, 2022
534
383
63
I strongly doubt that the algorithms it employs are unique.
Likely true, but that particular implementation works better than anything else available for Windows.

The key is you have to set only two points: the "X or below is fine" and the "don't let the temp stay above Y". The big deal is how the software handles the range in between those two points.

The way it is implemented causes no fan speed "pulsing". The fans ramp up smoothly when the temperature is far enough beyond the set point for long enough, and then ease back down as the temperature drops. The fans stay moving fast enough to get the temperature to come down, but don't stay ramped up to max to try to get the temp down extra fast. The fans also smoothly drop in speed when the target temperature is achieved, but not the instant it hits the temperature, so there isn't a constant up/down of the fan speed right near the target temperature.

And, unlike some other software, the temperature seems to get back below "X" rather quickly, instead of hovering between "X" and "Y" with fans running louder.
 
  • Like
Reactions: nexox

Peter Blanchard

Active Member
Jun 30, 2022
157
29
28
I'm building in a tower case.

Whilst I want to optimise for quiet, probably best to optimise for minimum fan speed for now and integrate noise sensor later. Suspect noise sensor would be for fine tuning of fan speeds. Dealing with constructive interference due to dissimilar fan speeds is one concern.

Using CPU fan and four components with heat sinks and fans. Algorithms to use component temps to control fan speed shouldn't be difficult.

I'm not sure how to deal with case fans. Initial thoughts - treat as a group and control by weighted average of component temps to control speed. Weighting would be based on max wattage of components.

Another option would be use an additional temperature sensor(s) in the case.

It feels very complicated maths/algorithm wise.