In Windows, there’s a fun bug with Ryzen CPUs (I know it at least affects the 3000 series), where the CPU fan spins up all over the place, regardless of BIOS configured fan curves. A known workaround for this is to set the minimum and maximum CPU performance as 99% in WIndows’ power management settings.
Once I finally found this out a year or so ago, I was relieved to not have the fans spinning up all the time. I’m now trialling switching to Linux full-time as I’m sick of dealing with Windows’ “quirks”; however, I’m unsure of how to remedy the issue here. Any input would be greatly appreciated!
The Ryzen CPU depends heavily on a low-power state called cc6 sleep. In this sleep state, core clockspeeds and voltages are basically nil as the core is sleeping and gated. It is not possible to report out the state of the core in this sleep state without waking the core, probing the status, and killing the power savings of cc6. Therefore, MOST tools can only show you the last clock and voltage of the core before the core went to cc6. So if you were at
full 4.5GHz+ boost @ 1.48V, then the core went to sleep, many tools might show the core(s) stuck at that value. The tool just doesn’t know any better.
As I understand it, cc6 sleep faltering is what causes the issue I’m experiencing.
As mentioned in my opener, sadly configuring the fan curve within the BIOS doesn’t impact this issue.
Okay, so I figured this out after not touching it for a few months. Turns out, Linux doesn’t include the it87 kernel module for my it8792-isa-0a60 (B450 AUORUS PRO WIFI Mini-ITX Motherboard), meaning that Linux couldn’t see my fan speed whatsoever. I manually compiled and installed the module via GitHub - a1wong/it87, and I’ve got no issues now
Interestingly, along the way I discovered that if I set my fan curve via my BIOS slightly too low, my ethernet stops working regardless of the OS. Which is…cool