Register for the iXsystems Community to get an ad-free experience and exclusive discounts in our eBay Store.

Supermicro X11SSL-F fan control?

Western Digital Drives - The Preferred Drives of FreeNAS and TrueNAS CORE

VladTepes

Senior Member
Joined
May 18, 2016
Messages
264
Can anyone running this mobo (or other similar supermicro mobo) for a freenas system please offer some advice regarding controlling case fans from the mobo?

I have a dual system build (it's complicated) but suffice to say that I need to run 2 front intake fans, 2 top intake fans and a rear exhaust fan (total of 5) from the mobo.
I need them to ramp based on internal case temps (not specifically CPU temp) so they are normally quiet and pull more air only when really required to do so.
The front fans are the ones that cool the storage HDD's so they are most important to be running at appropriate speeds I guess.

I've tried using the fan hub in my phanteks case but I think that's confusing the issue (as that's supplying power to the other system in the case as well)

All advice / assistance on this would be VERY welcome.
 

sretalla

Wizened Sage
Joined
Jan 1, 2016
Messages
6,189
Have you looked here? :
 

guermantes

Member
Joined
Sep 27, 2017
Messages
192
I find it more appropriate to regulate case fan intake in accordance to drive temps, not case ambient temps.
I have the X11SSM-F and very successfully use @Glorious1 's script. I have not tried the other script recommended above. It's super easy to setup. Below is my config if that helps.

Code:
#!/usr/local/bin/bash
# spinpid2.sh for dual fan zones.
VERSION="2019-04-05--pastic"
# Run as superuser. See notes at end.

##############################################
#
#  Settings
#
##############################################

#################  LOG SETTINGS ################

# Create logfile and sends all stdout and stderr to the log, as well as to the console.
# To append to existing log, add '-a' to the tee command.
LOG=/mnt/TANK/sysadmin/spinpid/spinpid2.log  # Change to your desired log location/name
exec > >(tee -i $LOG) 2>&1    

# CPU output sent to a separate log for interim cycles
#CPU_LOG=/mnt/TANK/sysadmin/spinpid/spinpid2_cpu.log

#################  FAN SETTINGS ################

# Supermicro says:
# Zone 0 - CPU/System fans, headers with number (e.g., FAN1, FAN2, etc.)
# Zone 1 - Peripheral fans, headers with letter (e.g., FANA, FANB, etc.)
# Some want the reverse (i.e, drive cooling fans on headers FAN1-4 and
# CPU fan on FANA), so that's the default.  But you can switch to SM way.
ZONE_CPU=1
ZONE_PER=0

# Set min and max duty cycle to avoid stalling or zombie apocalypse
DUTY_PER_MIN=40
DUTY_PER_MAX=100
DUTY_CPU_MIN=40
DUTY_CPU_MAX=100

# Your measured fan RPMs at 30% duty cycle and 100% duty cycle
# RPM_CPU is for FANA if ZONE_CPU=1 or FAN1 if ZONE_CPU=0
# RPM_PER is for the other fan.
RPM_CPU_30=500   # Your system
RPM_CPU_MAX=1500
RPM_PER_30=400
RPM_PER_MAX=1400

#################  DRIVE SETTINGS ################

SP=37   #  Setpoint mean drive temperature (C)

DRIVE_T=5  # time interval for checking drives (minutes).  Drives change
     # temperature slowly; 5 minutes should be frequent enough.

Kp=4    #  Proportional tunable constant
Ki=0    #  Integral tunable constant
Kd=40   #  Derivative tunable constant

#################  CPU SETTINGS ################

....never changed anything below this point...
 

VladTepes

Senior Member
Joined
May 18, 2016
Messages
264
Thanks, lets assume i'm ignorant - how do i actually implement and use that?
 

guermantes

Member
Joined
Sep 27, 2017
Messages
192
The instructions are really easy to follow and you find them on the scripts resource page. No point in me repeating them verbatim here. Just load the script with a task when booting, and I suggest you just tweak the temperature value until you get desired results. It was not transparent for me to calculate the correct value immediately, so I just set a target temp and watched what happened and tweaked until I was happy. In total, all I did to the script was to set target temp, choose what zone to adhere by and where to save the log file.
 

VladTepes

Senior Member
Joined
May 18, 2016
Messages
264
Thanks, Once i get my NAS up and running again I will attack this.
 

sretalla

Wizened Sage
Joined
Jan 1, 2016
Messages
6,189
Just load the script with a task when booting
Additional tip on that:

Run it with tmux, which will mean 2 things:
1. You can access the session where it's running, stop and/or restart it without a reboot.
2. A middleware failure won't kill your script silently.

The command for the tasks looks like this:
tmux new-session -d -s fanscript '/mnt/tank/scripts/pid_fan_controller.pl'

You can then attach to that session with tmux attach -t fanscript and then CTRL+B then D to detach when you're done (and can then come back to it later the same way).

While you're in the tmux session, CTRL+C to stop the script and /mnt/tank/scripts/pid_fan_controller.pl to restart it if, for example you wanted to change some of the config.
 

VladTepes

Senior Member
Joined
May 18, 2016
Messages
264
So nothing can be done in the BIOS then i assume?
 

Etorix

Neophyte Sage
Joined
Dec 30, 2020
Messages
681
Set the fans in full mode if so required by the script and do not forget to set appropriate thresholds through the BMC (defaults are for fast spinning server fans and work badly with quiet, slow spinning fans).
 

VladTepes

Senior Member
Joined
May 18, 2016
Messages
264
What would I use as 'appropriate thresholds' ?
 

Spearfoot

He of the long foot
Moderator
Joined
May 13, 2015
Messages
2,478
So nothing can be done in the BIOS then i assume?
You can't set the fan mode in the BIOS on Supermicro systems: you have to use the BMC, using IPMITool or IPMICfg. Here's a good reference on Supermicro fan speed control (which I believe references the script mentioned above):
 

Etorix

Neophyte Sage
Joined
Dec 30, 2020
Messages
681
What would I use as 'appropriate thresholds' ?
Take the specifications of your fans. Say, a Noctua NF-A12x25 PWM:
Code:
Rotational speed (+/- 10%)                2000 RPM
Rotational speed with L.N.A. (+/- 10%)    1700 RPM
Min. rotational speed (PWM, +/-20%)        450 RPM

Minimal speed would be 450 - 20% = 360 rpm. The BMC rounds by 100 rpm so lnc would be 300, and then lc and lnr at 200 and 100.
Maximal speed is not relevant.
 
Top