Fan Control

Fan Control can be easily added to USB devices with the following functions. The general process for a plugin to enable Fan Control using our Cooling System's API is to:

  1. Detect the Fans Connected to the device though build in detection commands, or RPM checks.

  2. Create FanControllers for each detected fan.

  3. Regularly poll the fans RPM from the device and give it to SignalRGB using device.setRPM()

  4. Regularly poll the desired fan speed from device.getFanLevel() and set it on the device.

device.fanControlDisabled() must be followed for a clean user experience

Failure to do so will result in locked fan speeds and confused users.

device.fanControlDisabled()

This function tells if the current user has Fan Control enabled. This being true doesn't prevent the creation of FanControls, but does prevent access to device.getNormalizedFanLevel() and device.getFanLevel().

This will be true if the user doesn't have SignalRGB Pro access, or if the system has been manually disabled by the user.

return

type

description

ControlDisabled

boolean

True if the Cooling API is disabled

if(device.fanControlDisabled()) { // Don't touch'a the fans return; }

device.createFanControl()

Creates a FanController with the given Id. This Id will need used to interact with the FanController and should be stored.

parameter

type

Description

Example

FanId

string

FanId to be used to reference the FanController

"Fan1"

device.removeFanControl()

Removes the FanController with the given Id if one exists.

parameter

type

Description

Example

FanId

string

FanController Id to be removed

"Fan1"

device.getFanLevel()

Returns the desired speed of the FanController Id given. This value is slightly interpolated between the speed given by the current Fan Curve settings and the last value returned.

This will always return 50% if the Cooling System is disabled.

Always check device.fanControlDisabled() before using this function.

parameter

type

description

example

FanId

string

FanController id to return the speed for

"Fan1"

Return

Type

Description

Example

FanSpeed

int

Desired Fan Speed in the range 0-100

42

let speed = device.getFanLevel("Fan1") // do stuff with speed

device.getNormalizedFanLevel()

Returns the desired speed of the FanController Id given. This value is slightly interpolated between the speed given by the current Fan Curve settings and the last value returned.

This will always return 50% if the Cooling System is disabled.

Always check device.fanControlDisabled() before using this function.

parameter

type

description

example

FanId

string

FanController id to return the speed for

"Fan1"

Return

Type

Description

Example

FanSpeed

int

Desired Fan Speed in the range 0-1

.4251

let speed = device.getFanLevel("Fan1") // do stuff with speed

device.setRPM()

Sets the current FanController RPM. This is displayed to the user in the Cooling UI and System Monitoring Graphs.

Auto detection of the physical fans stall and start speeds depends on this being regularly polled.

The FanControllers desired speed will hardlock if this value isn't being updated.

parameter

type

description

example

FanId

string

FanController id to return the speed for

"Fan1"

RPM

int

Current Fan RPM

1337

let RPM = FancyGetRPMFromDeviceFunction(); device.setRPM("Fan1", RPM);