Saturday, 3 September 2016

SpeedFan Fan Curve Profile Made Easier

I use SpeedFan to control my CPU, GPU and case fans. It's useful to have this be temperature dependent and you can set a curve for each fan via Configure -> Fan Control and selecting different fan controllers. You can even have these be triggered by different temperatures from different sensors (MAX of speeds tends to work well here). However, setting these manually with the mouse can be a fairly tedious process, particularly if you want to set a similar fan profile for multiple temperature sensors (e.g. I'd like to ramp up the case fans based on both my CPU, GPU and HDD temperatures).

There is a better way to do this: you can manually edit the speedfansens.cfg file which is found within the main SpeedFan folder (by default, under C:\Program Files (x86)\SpeedFan for me).

A typical entry setting a fan curve looks like this:

xxx FanControllerTemp from FanController 1
temp=1 from INTEL CORE@$0(onISA@$290)
MinTemp=35
MaxTemp=55
hysteresis=2
ControlPoints=0 50 52 54 56 58 60 63 66 70 74 79 84 90 97 100
xxx end

The key values are:
  • MinTemp: which sets the temperature that the first fan speed for ControlPoints triggers at.
  • MaxTemp: which sets the temperature that the last fan speed under ControlPoints triggers at.
  • ControlPoints which sets the fan speed curve values, as a percentage of the maximum fan speed.
The curve will look like this:



I can then add the additional sensors I want (see the extra CPU Core temps: 1 2 and 3), either within the config file or via the SpeedFan GUI then copy my min/max temperatures and control points over. This saves a lot of time and gives you exact control over the curves.

This can be repeated for any fan controller in the list in the GUI or you can add them manually in the config file if you know the IDs.