Fan speed spikes causing loud "whooshing" noise

I noticed that with the default fan curves, the fan occasionally ramps up to high speed and makes a loud “whooshing” noise. I’m fairly sure this can be improved.

There are three aspects to the problem:

  1. Ramp-up from 0 RPM

When the fan ramps up from 0 RPM, it jumps straight to a high speed and then quickly drops back down. This causes a burst of “whooshing” noise, which is my main complaint.

  1. CPU Average temp delay

The CPU Average Temp option (used in the BIOS as the fan curve input) seems to have a fairly long averaging window or delay. As a result, the CPU temperature can reach 90C+ before the fan even starts spinning. I suspect this also contributes to the first problem, because the fan then reacts by jumping immediately to a high speed.

  1. Heat accumulation in the case

There also seems to be some heat buildup inside the case, so the fan needs to ramp up periodically to expel warm air. This is expected unless the case has very good natural ventilation. (with default fan curve settings in the BIOS, the case fan hardly spins)

It’s quite visible in the fan speed chart:

Any ideas how to get rid of the fan speed spikes? I think one option is to shorten the CPU temperature averaging window so the fan can track CPU temperature more smoothly (while still smoothing out short transient spikes).

Does anyone know how the CPU temperature averaging algorithm works and how to get the readings? The lm-sensors reports a “CPU Virtual@4c” which looks similar, but itself sometimes doesn’t look like an average (lower than the CPU@4c temp ~1 or 2C in a stable state). Also I haven’t found clear clues in the EC source code so far. It sounds like this may need to be a feature request: add a configurable averaging window length (or decay factor).

For point 3), one solution is to keep the fans running at a low speed instead of allowing 0 RPM.

For context, my setup:

  • SilverStone SG05 ITX case (with Corsair 1000W SFX PSU; the PSU fan has a 0 RPM passive mode)

  • Noctua A12x25 G2 PWM fan (one for the APU, one for the case)

  • Ambient temperature: ~20?C

  • Load: Firefox with a few tabs open (enough to trigger the fan behaviour shown in the screenshot)

  • To reproduce the CPU temperature overshoot before the fan spins up: compile the Linux kernel using 16 cores

3 Likes

This is an ancient problem since the first Framework Computer. Unfortunately no definite solution is found.

Interestingly, if you stress test it’ll less likely to “whoosh”, the “whooshing” is more likely to happen when the computer is doing light tasks and the temperature climbing slowly from fan off to fan lowest RPM.

The fan is controlled by the temperature sensor near, not at, the CPU. This is because unlike older CPUs that trigger PROCHOT and drop frequency to 0.8GHz or below when overheating, modern CPUs can transition from “constant power” to “constant temperature” seemlessly with almost unnoticeable performance loss, then back to constant power as then fan speeds up.

Desktops have worse passive cooling than most laptops. Most desktop mainboards’ BIOS control the “SYS_FAN” at a low RPM if the computer is cool. This could be an omittion by Framework as all their previous computers are laptops

Oh that is interesting…. It shouldn’t be hard to figure out what’s causing the spikes, if one can peek into the EC’s internal state. I just don’t know where the logic/value is in the source code.

Yep. I’m totally fine with this behaviour. I just want the fan speed to be more responsive to the CPU temp slope to smooth out the CPU temp spikes/highs.