Setting fan curves on the ASUS ROG STRIX B650-A GAMING WIFI motherboard on Linux

While I was searching for some information on how I can set fan curves on the mentionned motherboard, I didn't find much, except one article on Phoronix. In a few words, that article announces the support of the ASUS ROG STRIX B650-A GAMING WIFI motherboard in Linux 6.3, more precisely the super I/O chip (a Nuvoton NCT6799D-R).

Enabling the kernel module

The nct6775 kernel module can be enabled using the the following command:

# As root
modprobe nct6775

When running the sensors command, the chip's sensors should show up and you should see power supply sensors, various temperature sensors and the fans speed. In order to load that module on boot, create a file in /etc/modules-load.d/nct6775.conf and write

nct6775

into the file. Of course, if your Linux distribution uses another path to register modules that should be active on boot, you should adapt the path I wrote. Save and reboot in order to check if the modification has been taken into account. When running sensors, the sensors of the super I/O chip should appear right away.

Setting fan curves

While one could use the /sys file system to interact with fans, I think many people would rather have a front-end to interact with. You could use CLI-based ones, if you wish to ajust settings with the CLI. I would rather use a GUI that I can poke around.

I browsed the Arch Linux wiki and came across a neat tool named CoolerControl. It runs in the background and does the job of ajusting fan speeds according to the settings you put in place.

When installed, enable the service with the following command:

sudo systemctl start coolercontrold

You can then open the UI in the standalone program or in the web browser at localhost:11987, and have fun with it !

What sensor does what !?

Some sensors are obvious or can be easily deduced. Unfortunately, I couldn't find much information while searching the internet for the sensors attached to the NCT6799D-R chip. That said, I'm certain some sensors are just floating, because they're measuring something in the negative.

Now, what curve I should put for a setup with a CPU liquid cooler.