Help with configuring fan curves for Noctua CPU fans with ASRock ALTRAD8UD-1L2T?

Hi all,

I got an ASRock ALTRAD8UD-1L2T with Ampere Arm Max M128-30 to do some WebAssembly Linux-on-ARM64 compiler development / CI work with.

I placed two Noctua 120mm fans on a Dynatron W3 tower cooler on it, in FAN1 and FAN2 port.

Everything works fine, the system stays within limits, at 70-80c degrees under load in ipmitool sensors.

However, the default IPMI/BMC fan curves are not great out of the box for Noctua fans. They run really low at idle (at few hundred rpm), and when the CPU temperature rises, the CPU fans will suddenly ramp up to 100% which generates an annoying loud noise for a few seconds, before the fans step down to few hundred rpm again.

I would like to add some kind of a fan offset to the fan levels, so that even at idle, the fans would spin up slightly higher rpm (manually tune them somewhere near inaudible level.. the fans are so quiet that there is definitely headroom). And preferably, the fans would ramp up more gradually, before hitting some kind of temp ceiling and ramping up 100%.

But I do not find a way to set up fan curves on the platform. Is it possible to configure the fan curves somehow?

On another AMD Epyc system I build, ChatGPT gave me some raw hex ID values to type to the Linux ipmitool raw utility, which worked like a charm to set fan levels on that platform. But on this Altra system, I was not able to find a source of ipmitool configuration on this.

Any tips would be super appreciated. Thanks!

2 Likes

Check you’re updated for FW:

https://www.asrockrack.com/general/productdetail.asp?Model=ALTRAD8UD-1L2T#Download

I don’t have experience of the Noctua fans and their PWM etc. @bexcran may have some good advice.

The info I have is here:
Manual Full speed

ipmitool raw 0x3a 0x01 0x64 0x64 0x64 0x64 0x64 0x64 0x64 0x64

Manual Half speed

ipmitool raw 0x3a 0x01 0x32 0x32 0x32 0x32 0x32 0x32 0x32 0x32

Auto fan control

ipmitool raw 0x3a 0x01 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0

Log in to the OpenBMC terminal.

https://wiki.bsdio.com/en/asrock-rack-altrad8ud/Temperature-And-Fans

2 Likes

You can modify the fan curves by editing /usr/share/swampd/config.json on the BMC (ssh into it using username root). However, it uses a PID (Proportional–Integral–Derivative) controller, so finding the correct coefficients might be a bit difficult.

2 Likes

Thanks - I was able to log in to the OpenBMC web gui by plugging in a second ethernet cable. Observed that there were no fan settings there at least.

Also thanks for the ipmitool commands. (now gooling those commands I find ASRock page that documents them)

Playing around with these commands, I find that

ipmitool raw 0x3a 0x01 0x63 0x63 0x63 0x63 0x63 0x63 0x63 0x63

still results in very low duty cycle that is barely audible. ipmitool sensor shows the fans still at 0 RPM , i.e. below detection level.

But then when I put

ipmitool raw 0x3a 0x01 0x64 0x64 0x64 0x64 0x64 0x64 0x64 0x64

the Noctua fans ramp up to full speed, and ipmitool sensor shows 1400 RPM.

So there unfortunately doesn’t seem to be a nice middle ground.

The fans I have connected are precisely these: NF-F12 PWM (4-pin, 12V PWM)

Though now I see these are optimized for case airflow, and not for obstructed air pressure like a heatsink.. but this is what I had lying around. I might see if NF-A12x25 G2 PWM will do any difference, which I believe are more intended for being attached to heat sinks. Although the duty cycle behavior I presume shouldn’t be that different.

I’ll take a peek at my firmware version and see if I can ssh in to the BMC.

1 Like

I switched the fans to NF-A12x25 G2 PWM, and they do behave properly, i.e. in ipmitool, there is a smooth ramp from 0x01 → 0x64, and not a hard cutoff between 0x63 → 0x64 like the NF-F12 PWM fans had.

A value of 0x40 gives a 1000 RPM report in ipmitool, while still being just barely audible on an open bench.

Something I find is that ipmitool raw 0x3a 0x01 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 does not seem to go back to auto fan control.

That is, if I first set ipmitool raw 0x3a 0x01 0x64 0x64 0x64 0x64 0x64 0x64 0x64 0x64 to take the fans to 100% while the system is idle, then setting ipmitool raw 0x3a 0x01 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 does not seem to do anything.. the fans stay at 100% afterwards, instead of resuming to automatic/idle RPM. Not sure what might be happening there.

Anyways, I’ll give a play with the fixed 0x40 value to see if that’ll work well as a manual fixed setting.

2 Likes

Unfortunately the OpenBMC web interface does lack any sort of configuration of fan settings. It’s something I might someday get around to fixing.

2 Likes

Did ASRock fixed the BMC to have a control from the interface?

I want to keep the automatic mode, but ramp up the starting point of chasse fans which are turning very slow. if I use the ipmitool I am changing all of the fans to manual mode which I dont want to do.

I dont remember what I did, but at one point to saw the fan interface control. I cant figure out what I did or which setting I changed.