#cli #system #hardware #service #daemon

app fanservice

Temperature-sensor based fan-speed regulator for PowerEdge servers

2 releases

0.3.1 Oct 23, 2021
0.3.0 Oct 21, 2021

#1285 in Hardware support

GPL-3.0 license

381 lines

Build Status


Daemon that regulates fan speeds based on temperature sensors; speed curves can be tuned at runtime with a CLI tool. Supports Dell PowerEdge server hardware.

Installing the daemon and CLI tool

If you use the Nix package manager, there's a package in my overlay; enable the service with services.fanservice.enable = true; and add the fanservice package to your user environment.

Otherwise, you can build fanservice with cargo:

$ cargo install fanservice

You'll probably want to run it as a system service. See the example systemd unit file.

Controlling the daemon with the CLI tool

Once your daemon is running, you can send it control messages. Let's try turning up the quiet-factor a little:

fanservice set -q 1.3

(You must run the client command as a user who has access to the daemon's socket file.)

fanservice always works to ensure all system temperatures are within acceptable ranges, but within those ranges you have a choice of how aggressively to keep the system cool.

  • at quiet-factors below 1, the fans run more aggressively than at 1 (at -q 0, they always run at 100%)
  • at quiet-factor 1, the fans respond linearly to temperature
  • at factors above 1, the fans don't run as loud unless the system gets hot
  • at really high factors, the fans will run near minimum speed until temperatures reach the top of the acceptable range, and then they will quickly approach 100%

For some reference points, I use -q 1.3 during the daytime, and -q 1.8 when I'm trying to sleep in the same room as my rack. You'll want to experiment and see what works best for your climate, workload, and noise concerns.


~60K SLoC