Skip to content

Fans on Linux

JL edited this page Aug 9, 2024 · 12 revisions

Getting fans to properly work on a Linux system can be a bit of a challenge

MSI x370

the MSI x379 Krait uses nct6795 which is supported by nct6775 modules

additional module(s) of interest for powermanagement

jc42

required is to add to either /etc/modules or /etc/modprode.d/sensors.conf

nct6775
nct6775-core
nct6775-i2c

more on nct6775 here https://docs.kernel.org/hwmon/nct6775.html

Sensors

now run:

sensors-detect --auto

then run:

sensors | grep nct | xargs sensors

this should show a list of Adapter: Vcore: ... fan1: fan2: ....
if this page shows and fan are displayed this means pwm should work

reminder: also set the fans to PWM in the BIOS to assure steering works

Fan Control (FC)

FC is easiest to work with thinkfan but fancontrol can also work check if in the path /sys/class/hwmon there are hwmon0 ... hwmon[N]

under one hwmon[N] of this path there should befiles such as fan1_.... fan2_... and more importantly pwm1_... pwm4_...

now you can run pwmconfig in case you want to work with fancontrol, fancontrol is great but tiresome to configure

when working with ThinkFan

(assuming this is not on a thinkpad)

> To Know < ThinkFan will throw an error on a reset for HwmonFanDriver if pwm is not available,
which is why to load nct6775 etc

in the sensors: section

  • add the path for the hwmon sensor which holds pwm1_... and many other files
  • set the name like: name: nct6795
    • NOTE: the module is nct6775 but the name is nct6795, for real
  • set the indices like: indices: [1,2,3]
    • best is to have to total number of indices equal to the count of temp[0-N]input where also pwm[0-N]...
      define the indice to be equal to the unique count of temp*_

for example:

- hwmon: /sys/class/hwmon
name: nct6795
indices: [1,2,3,4]

this is just a basic config, config for GPU and NVME should also be feasible

comment all other lines in the sensors: section this is just an approach to show things can work

in the fans: section

comment out all entries except for the below config this should work for all systems using the nct6775 module(s)

- hwmon: /sys/class/hwmon
name: nct6795
indices: [1,2,3,4,5,6]

validate if the number of indices set matches the numbers of fans with the for mentioned sensors command

in the levels: section

comment out the "level auto" and "level disengaged" lines,
these only work with the thinkpad_acpi module etc.

leave only this config, it is a start, customise for your use case

levels:
- [0, 0, 50]
- [50,50,150]
- [150,150,255]

this config is extremely basic and will use the highest temperature as a trigger

comment all lines in the Fan Speeds (detailed mode) section

this configuration is much more granular and should be preferred

Clone this wiki locally