My motivation for this is two fold. I keep my 5G antenna cables short and due to that the modem/router lives in the attic, which can get quite hot. Due to that I made a custom box with 120mm fan for my router. I noticed when I keep the modem temps down I get better and more stable connection.
So I developed a new graphical fan control app for OpenWrt
pwm-fan-control controls Linuxipwm-fan devices on OpenWrt. It operates as a CLI program and as a procd service. luci-app-pwm-fan is the graphical interface for pwm-fan-control.
The controller supports these modes:
- Kernel mode - observes the fan while the Linux thermal policy controls it.
- Auto - uses a PID controller.
- Curve - uses configured temperature points.
- Manual - for fixed output (has additonal timeout option)
- Disabled - stops the service and does not access the hardware.
The LuCI application has following features:
- Router CPU and optional modem temp history graphs with selectable data series
- Live fan, CPU, modem and subsystem status
- Configuration for multiple controller modes
- Interactive temperature curve editor
The app features multiple control modes, that should cover most needs
The curve editor:
This sould in theory work with any OpenWrt router that has a built in fan and the device profile must also select kmod-hwmon-pwmfan by default. It has been tested already on few different devices. The app is available for testing from here: https://github.com/MayorBug/pwm-fan-builds






