I've been building a Mini ITX 'quiet-ish' server using a Supermicro motherboard and some Noctua fans.
I noticed sometimes the system would start 'revving' the fans up to max power. Then after a few seconds they would get quiet again. The CPU temps and other temps on the system were stable and not worrying, but popping off the server's cover, I noticed LED8 on the motherboard would blink red every time the fans would ramp up:
That LED indicates a 'fan failure' when blinking.
So looking in the IPMI interface, I noticed the Low 'Non-Recoverable' and 'Critical' levels for fan RPM were set kinda high—at least as far as Noctua fans are concerned (ignore the fact that FAN1 is reading as off—I had switched fan plugs earlier when I was moving around a system fan...). Since I bought slightly oversized fans so they could run at lower rpms (and thus quieter), the server-oriented motherboard didn't know what to make of them.
Typically one installs whiny siren-like server fans that spin at 5000+ rpm, and don't worry much about noise. But I do.
So to get the system to accept that it's normal for a fan to go below 500 rpm, I installed ipmitool
(sudo apt install -y ipmitool
on Debian), and ran:
ipmitool -I lan -U ADMIN -H [IP] sensor thresh FAN1 lower 150 250 300
Replace ADMIN
with your IPMI username, and [IP]
with your IPMI IP address.
This sets the NR
rpm level to 150
, LC
to 250
, and lower 'non-critical' to 300
. Much more suitable for Noctua fans that commonly run under 1k rpm. And IPMI was happy again:
Comments
I used to have a Dell 610 running in my basement. It wanted to run the fans at 15k. I tucked a Pi Zero into it and wrote 298 PWM to the fan rpm pin, since it didn't allow the fan speed to be configured.
Still have the 610, I just don't use it anymore :) the next generation of rackmount dell can fairly easily be spun down without needing a hardware hack, just wrote my own scaling based on CPU temps and then ask ipmitool to change the speed:
ipmitool raw 0x30 0x30 0x02 0xff {hex_speed}
Obviously dell-specific.
I tried Noctua fans in my 1RU supermicro X10 generation board, and they worked great until the temps increased. The lower pressure fans did not have the Ooomph to push air through the host - resulting in 125 degree CPU and NIC temps, so I had to reinstall my original 40mm supermicro fans.
The secret magic fix was to put the fans into "full" speed mode using the IPMI console. This stops the host from managing its own fan speeds.
Then run this to set the "fan ramp speed" to 50%
`ipmitool raw 0x30 0x70 0x66 0x01 0x00 0x32`
100% speed is set by changing the last value to 0x64.
I ended up writing a dirty bash script to call `ipmitool sdr list full` and get some values, then make decisions about revving up fans when needed.
Turns out very similar to your solution, just using different values.
50% duty is a tolerable 8k RPM, 100% is 15k-18k RPM which was truely intolerable.
u saved me
Hello Jeff,
Off-topic question, sorry. 😊
Did you write any blog post about your mini-ITX quiet-ish server with Supermicro board? I am interested in building one as TrueNAS server and I really love Supermicro boards.
Thank you.
Yep! It's right here.
Hi Jeff :) Great article and video.
FYI over the TrueNAS forum there is an amazing ressource for this problem: https://www.truenas.com/community/resources/fan-scripts-for-supermicro-…
It's a PID script that regulate the FANs. Note that on my side I had to intentionally overflow the values because my FANs can go to 0 and if that happens, there is still a reset. The overflow "breaks" the logic and prevents that.
The forum is amazing, I got some help there to build my setup. Here is the link if you are interested: https://www.truenas.com/community/threads/low-capacity-amd-build.105665…
Hey dude, I just wanted to say THANK YOU. I updated my BMC to the latest version and my fan bugged because of the restored threshold config.
Your solution solved it.