ACPI
Yes. If your hardware supports Advanced Configuration and Power Interface (ACPI) then there are loadable modules for ACPI support.
Unfortunately most (if not all) modules are targetting laptops.
You can see if you have any settings related to fans using sysctl
:
# sysctl hw.acpi
But rather than manually tweaking the fan speed it should autoadjust according to temperature and load. In FreeBSD this is handled by powerd which is disabled by default.
So even if the fans are not directly exposed then you might be able to adjust them but adjusting the CPU frequency. Some BIOSes then adjust the fan speed accordingly (if within reasonable temperature range as well).
Example setting in /etc/rc.conf
powerd_enable="YES"
powerd_flags="-a adaptive"
performance_cx_lowest="C2" # Online CPU idle state
performance_cpu_freq="1399" # Online CPU frequency
economy_cx_lowest="C3" # Offline CPU idle state
economy_cpu_freq="NONE" # Offline CPU frequency
The sysctl hw.acpi
will also show if any of the above settings can take effect.
IPMI
If you have no luck going the ACPI route then maybe the Intelligent Platform Management Interface (IPMI) can be helpful to you. This is however normally only available on serverclass motherboards with a BMC.
When the server boots up the fans runs at BIOS default speeds until the OS takes over. If the OS does not take over (ie. using ACPI) then the CPU and fans often runs at full throttle. Even though the thresholds are not directly available in the BIOS configuration screen in several cases this can then be set using IPMI.
FreeBSD does have an IPMI driver and you can install sysutils/ipmitool to play with the settings.
The following snippet from servethehome.com should work for some SuperMicro boards (X9/X10/X11):
#set fan mode to "full"
ipmitool raw 0x30 0x45 0x01 0x01
#set fans in "system" zone to 37.5%
ipmitool raw 0x30 0x70 0x66 0x01 0x00 0x24
#set fans in "peripheral" zone to 25%
ipmitool raw 0x30 0x70 0x66 0x01 0x01 0x16
NOTE: The fan mode is set to full at first as the BMC does not seem to change the fan speed if not.
The link above states:
but the magic numbers are the same
Please do note that the magic numbers are the same for a SuperMicro board no matter the IPMI tool used. They might be different for Tyan. The hard part is the figuring that out. It seems SuperMicro uses 0x30 but IBM might use 0x3a.
If you have setup username/password then supply them as well:
ipmitool -H HOST_IP -U USERNAME -P PASSWORD raw 0x3a 0x07 0x01 0x50 0x01
You might not have made a bad choice. Some really like Tyan. But beware that their implementation might be a little wonky. This is really important if you try to guess the magic numbers. This experience from 2020 might be better with an updates BIOS:
Definitely the Tyan board has some rough spots around the IPMI since it's not as well used and polished as the SM implementation. I'm seeing things like the KVM connection will drop even though timeout is 1800 seconds. I have to reload the IPMI webpage, log back in and start KVM again. Once, the IPMI completely rejected my root logon even though I am sure of my password. I just pulled power to the server, plugged it back in and waited for IPMI and I was in again. My conclusion is the IPMI lost itself.
Maybe you instead could set the duty cycle in BIOS. That seems to be available on some Tyan board but not obvious in the settings.
it can be set to one of two values - MANUAL and FULL SPEED. That's it. Right now all the temps you see above were with the fan duty cycle set to the default of 30%. I am going to create a support ticket and ask Tyan how to get the fan to vary with CPU or SYS temps
UPDATE: thanks to @jpmomo pointing out that the fan control works - in a fashion - I set the duty cycle to 15 and load tested the motherboard. The winner here is clearly the Supermicro SNK-P0064AP4 heatsink. At the default 30% duty cycle, it does 1600RPM and is super quiet. The heatsink also ensures that the CPU doesn't cross 68C under load. That is an amazing result. Pushing the duty cycle down to 15% makes the CPU fan spin at 1300RPM but it will spin up - once the CPU crosses 75C. I can't believe how good this heatsink is. Of course the 7302P is "only" a 180W processor so there's that
Hardware
If everything else fails then get a cheap hardware fan controller :-).
Or if you do not mind tinkering a little yourself then try 7VDC for fan
You would need a 4 pin molex connector to 3 pin fan connector and if more than one fan, more Y harnesses. Take the black wire and move it to the far end of the connector. This would end up moving the ground wire to the +5VDC line and you would have basically 7VDC (12VDC minus 5VDC equals 7VDC). It's safe providing you do it right and the fans would run at a slower speed. If they still spin too fast for you, you could only move the yellow (may be red on your adapter) to the opposite side. This would make it +5VDC but some fans will not work because that may not be enough voltage to start the fan turning.