fand is a daemon that controls the fans (and other pwm-controlled devices) in your system. It's main feature is its configurability, using a concept of thermal zones.
- Configurability
- Fan curve interpolation
- Supports stable hwmon paths
- Lightweight, written in C with minimum dependencies
A zone is a collection of fans and sensors. Each sensor in a zone is polled, optionally has an offset applied, and the maximum sensor value in a zone is used to control the fans in the zone. Each fan has a curve, defined as a list of temperatures and the respective PWM values to be applied. For temperatures inbetween the defined curve points, the PWM values are interpolated automatically.
This allows you to:
- have your case fans follow both CPU temperatures and GPU temperatures
- set your AIO cooler fan speeds to follow the coolant temperatures, but also ramp up when the GPU gets hot
- have your pump speed follow the CPU temperatures but stay high when the coolant is warm
- all of the above, simultaneously!
A simple config with one sensor and 2 fans:
zones:
(
{ # Zone #1
sensors:
(
{ # NZXT Kraken coolant temperature
path: "/sys/class/hwmon/hwmon7"
index: 1
offset: 0
}
)
fans:
(
{ # NCT6798 fan header #1
path: "/sys/class/hwmon/hwmon5"
index: 1
curve: {
temperatures: [ 25, 30, 37, 40 ]
speeds: [ 55, 80, 220, 255 ]
}
},
{ # NCT6798 fan header #2
path: "/sys/class/hwmon/hwmon5"
index: 2
curve: {
temperatures: [ 25, 30, 37, 40 ]
speeds: [ 55, 80, 220, 255 ]
}
}
)
}
)
- libconfig
- Only hwmon fans and sensors are supported
- Each zone has to have at least one fan and at least one sensor
- A fan can't be used in more than one zone (well, it can, it's just that only the last setting will be applied)