Skip to content
On this page

๐Ÿงฐ Hardware Support โ€‹

Overview โ€‹

CoolerControl automatically discovers supported Linux hardware drivers and connects to devices that expose compatible sensor interfaces (e.g., hwmon, NVML, liquidctl). It does not ship device drivers or access hardware directly.

Note: Some hardware lacks Linux support or is only partially supported. Additionally, some drivers expose sensor readings but do not support fan control. In these cases CoolerControl will show a warning in the UI and/or log an error when attempting to apply changes. See the sections below for steps to improve detection and support. Additionally, you can join our Discord for community troubleshooting and to share your experience.

If you notice that CoolerControl has not detected all your available hardware, here are some steps you can take to maximize hardware coverage:

Load All Applicable Kernel Modules โ€‹

Built-in Super-I/O Detection โ€‹

CoolerControl includes built-in Super-I/O detection that automatically identifies and loads kernel modules for common hardware monitoring chips (ITE, Winbond/Nuvoton, SMSC, National Semiconductor). This covers much of what sensors-detect from lm_sensors traditionally handled for motherboard Super-I/O chips.

  • On x86_64 systems, detection runs automatically at daemon startup and loads drivers such as it87, nct6775, and w83627hf where applicable.
  • Detection requires /dev/port access, which is automatically available when running as a systemd service.
  • To disable automatic detection, set sensors_auto_detect = false in /etc/coolercontrol/config.toml.

You can also run detection manually using the detect subcommand without starting the full daemon:

bash
sudo coolercontrold detect          # probe chips only, no module loading
sudo coolercontrold detect --load   # probe and load detected kernel modules

This is useful for diagnosing whether a Super-I/O chip is recognized and which driver it needs.

lm_sensors (complementary) โ€‹

  • Install lm_sensors and run sudo sensors-detect for hardware not covered by built-in Super-I/O detection, or for chips requiring manual intervention. For more details see the Arch Wiki. Additionally, you can check out the official lm-sensors repository for tips on manually loading unofficial kernel modules for hardware that isn't supported out-of-the-box yet.
  • Install the latest kernel available for your distro.

Motherboard Fans โ€‹

  • Motherboard manufacturers provide no drivers nor datasheets for the fan, sensor and rgb chipsets in modern desktop motherboards, so we rely on drivers that have been reverse engineered by enthusiasts that often need to be installed from external sources.
  • For newer motherboards, install the latest available kernel for your distribution to get the most up-to-date hwmon drivers.
  • Make sure to follow the instructions above.
  • Some newer boards require out-of-tree hwmon kernel drivers for even partial support. Common examples include:
    • it87 (ITE) (e.g., Gigabyte)
    • nct6687 (Nuvoton) (e.g., MSI/ASUS)
    • Consult your distribution or the driver README for DKMS/build instructions.
  • Additionally, you can seek help from the community in our Discord Server.

USB AIOs, Liquid Coolers, and Fan Hubs โ€‹

  • Install the liquidctl package provided by your distribution (prefer the latest available version).
  • Many devices expose both a hwmon driver and a liquidctl backend. Follow the instructions above to load all applicable kernel modules so CoolerControl can detect the hwmon interfaces.
  • Check the liquidctl hardware support list for the state of liquidctl support for your device. Many devices are considered to be only experimentally supported.
  • Verify that the liquidctl package version available on your distro supports your hardware. For example, some hardware may require a version newer than what your distro offers. In these cases, you may need to upgrade liquidctl manually to support your hardware. CoolerControl offers a liquidctl-git convenience package for debian-based distros that only have older versions of liquidctl available.

NVIDIA GPU โ€‹

  • Make sure you have installed the NVIDIA proprietary driver for your card. Your distro should have documentation on the recommended method, and NVIDIA also provides a Driver Installation Guide for Linux.
  • Fan control works on most cards with the proprietary driver. CoolerControl automatically uses NVML and the CLI tools nvidia-settings/nvidia-smi as a fallback.
  • Specific controls and sensors depend on NVML support for your particular GPU.

AMD GPU โ€‹

  • Older cards (e.g., Radeon โ‰ค 6000 series) and integrated graphics typically work out of the box.
  • Newer cards (e.g., 7000/9000 series and above) use updated firmware that requires an extra step to enable fan control:
    • A Linux kernel โ‰ฅ 6.12 is required for fan control on these newer cards.
    • Depending on your kernel version and specific GPU model, there may be a minimum temperature threshold before fans will spin up.
    • Enabling PP_OVERDRIVE_MASK enables fan control on these newer cards. For most individuals, the following command will provide you with a reasonable parameter for your system to enable AMD GPU fan control. printf 'amdgpu.ppfeaturemask=0x%x\n' "$(($(cat /sys/module/amdgpu/parameters/ppfeaturemask) | 0x4000))". The output of this command should be appended to the boot parameter configuration for your system.
    • Guides for setting kernel boot parameters by distro:
    • For newer AMDGPU cards, it is also recommended to enable the Firmware-controlled Profile Device Channel Setting on your GPU's fan page in CoolerControl. This delegates fan control to the GPU firmware's built-in curve, which works more reliably with the newer firmware. Note that this mode does not support Custom Sensors, Mix, or Overlay Profiles.

If you find a more granular bit that enables fan control without having to enable overdrive, please let us know in Discord or GitLab!

TIP

If you notice micro-stutters or power spikes during GPU fan updates, try one of the following:

  • Enable the Firmware-controlled Profile Device Channel Setting on your GPU's fan page in CoolerControl. This delegates control to the GPU firmware's internal fan curve instead of applying manual speeds. Trade-off: advanced features such as Custom Sensors, Mix, and Overlay Profiles can not be applied.
  • If you prefer manual control, smooth your custom fan curve (reduce steep jumps) around temperature transition points to minimize frequent RPM changes.

Conflicts with LACT โ€‹

LACT (Linux AMD GPU Control Application) is a popular tool for AMD GPU overclocking and power management. On newer AMDGPU cards (those affected by the firmware fan control limitations described above), the newer firmware introduces restrictions that cause problems when multiple applications attempt to manage fan control simultaneously. This does not affect older cards.

WARNING

Do not run LACT and CoolerControl in fan-control mode at the same time for the same newer AMDGPU card. The firmware limitations can cause erratic fan behavior, with each application's settings being overwritten by the other.

If you use LACT for overclocking or power management, set the fan profile to the Default Profile in CoolerControl so that CoolerControl no longer attempts to control the fan and there isn't a conflict.

Laptops โ€‹

  • ThinkPads, some ASUS, and some HP Laptops are known to have supported Linux drivers, but support is spotty and not all models are supported. If your laptop has a hwmon kernel driver, then CoolerControl will use it automatically. Otherwise, fan control for your laptop is most likely not supported.

HDDs โ€‹

  • Newer NVMe and SSD drives generally have hwmon support enabled by default. For older HDDs, however, there exists a kernel module called drivetemp that one can use to enable reading temperatures for these drives:

Load the module:

bash
sudo modprobe drivetemp

Restart CoolerControl to detect the new driver:

bash
sudo systemctl restart coolercontrold

Load the module on boot:

bash
sudo echo drivetemp > /etc/modules-load.d/drivetemp.conf

Note: Verify with your distribution's documentation about how to enable modules by default

Released under the GPLv3+ License.