ipmi kinda sucks. This motherboard doesn't work with lm-sensors or pwmconfig. This script checks my CPU and Nvidia GPU temps once a second and adjusts all the fans.
- python
- ipmitools
sudo apt install ipmitools
- (optional) cuda toolkit if you want to monitor GPU temps
Beware! If you run without installing, the script will not restart if it dies and it will not start again on boot.
usage: fanspeed.py [-h] [-c CONFIG] [-o OVERRIDE]
options:
-h, --help show this help message and exit
-c CONFIG, --config CONFIG
configuration file containing temperature and fan speed ranges
-o OVERRIDE, --override OVERRIDE
Manually set the fan speed to the specified speed in percent
sudo python3 fanspeed.py --config config.yaml
- (optional) Configure your desired temperature ranges by modifying config.yaml. You can do this later by making changes here and re-running the install script.
- Run the install script. It creates a systemd service that runs the fanspeed.py script:
sudo ./install.sh
Beware! Before uninstalling, the script will attempt to set fans at 100% to prevent system damage.
sudo ./uninstall.sh
For all temperatures between the ranges defined in config.yaml, fan speed is interpolated along a curve.
Feel free to use whatever curve suits your needs best, but this is the one I decided on. It's a mutation of the sigmoid function that ramps up slowly and takes off as temperatures get close to the configured upper bound.