Making Noctua fans work (quietly) with a Supermicro motherboard

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:

Supermicro LED8 Fan failure blinking LED

That LED indicates a 'fan failure' when blinking.

Supermicro Fan low-non-recoverable error

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:

Supermicro fan is normal 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.

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.

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…