MSI/ASUS Motherboard Fan Control on Linux

󰃭 2025-12-03

It seems like some modern motherboards use fan control systems are not fully compatible out of the box with Linux (what a surprise).

In particular this relates to my recently acquired MSI MAG X870E TOMAHAWK WIFI motherboard, but as I understand this same problem also happens on other MSI and ASUS motherboards.

More specifically, this is an issue with the Nuvoton NCT6687-R fan control chipset and its various implementations.

The solution to allow for software fan control is decently easy, but has a few steps. It consists in installing this out of tree driver, ensuring it’s correctly loaded with the appropriate options and tweaking some settings in the UEFI/BIOS.

1. Installing the driver

If you have access to the AUR, simply install nct6687d-dkms-git. Otherwise, follow the official guide on the driver’s README.

2. Ensuring the driver loads

Create a .conf file inside /etc/modules-load.d/. I called mine gabmus-msi-fan-control.conf. Add the following string inside it: nct6687.

3. Configure lm_sensors

Run sudo sensors-detect and follow the interactive wizard to discover the hardware you have available.

Once it’s done pay attention: it will give you a summary and ask you to (over)write /etc/conf.d/lm_sensors. You can allow it to do so, but you also need to check what driver it will try to use. Chances are it will default to nct6683, which is the in-tree driver that doesn’t support manual control.

If that’s the case, once it has written the file (/etc/conf.d/lm_sensors), go edit it yourself. You will need to replace nct6683 inside the HWMON_MODULES variable with nct6687.

4. UEFI/BIOS tweaks

Inside your UEFI, in the fan control section, you should ensure all of the detected fans have Fan Type Auto Detect enabled and Smart Fan Mode disabled. Note that disabling Smart Fan Mode will lock your fans on a static speed. I recommend setting the speed to 100% to ensure that your PC stays cool before booting into Linux and having the fans controlled by your favorite fan control system.

My source for this particular section is this issue on the driver’s repo.

5. Check the speed and possibly add a parameter to the driver

Open up your fan control application. For reference I use and currently recommend CoolerControl.

Check if your fans show an RPM reading. If they do congrats, you’re done.

If they don’t, you might need to use an alternative configuration for the driver as described below.

Create a new .conf file in /etc/modprobe.d/, I called mine gabmus-msi-fan-control.conf. In it, write the following: options nct6687 fan_config=msi_alt1. This instructs the driver to use an alternative fan control mechanism that should be specific to some MSI motherboards.

Reboot and check the RPM readings again. If they show up then you’re all set, otherwise your particular hardware might not be supported yet. In this case it might be a good idea to open an issue on the driver’s repo.


Enter your instance's address


More posts like this

Full disk encryption with USB unlock on Arch Linux

󰃭 2025-11-10 | #arch #encryption #linux #server

Disclaimer: I didn’t invent anything new here, this is just a case of scattered information that’s annoying to put together. All sources are linked throughout the article.

Another disclaimer: I’m not a security expert and I don’t claim to be. This is just a solution that I’m using, if following anything that I write causes any problems including but not limited to data loss or theft, I don’t take any responsibility. You’re on your own.

Continue reading 