Skip to content
Leon Kiefer edited this page May 9, 2020 · 2 revisions

The Corsair Commander PRO is not only a LED lighting controller, but it also features fan control and temperature measurement. The Commander PRO uses an extended protocol compared to the Lighting Node PRO. A Commander PRO supports all the features that a Lighting Node PRO supports. So if you only require a LED controller use the Lighting Node PRO.

The Commander PRO fan controller features is not completely implemented. Only the basic PWM control of fans is supported. The tacho signal of fans is currently not supported, so fan speed can't be determined and adjusted dynamically. Instead fixed values for minimum and maximum fan speeds are used to calculate the fan speed depending on the PWM percentage. The PWM percentage is a value between 0% and 100% where 0% mean the lowest fan speed and 100% is the highest fan speed supported by this fan.

When using the Arduino as Commander PRO you have to configure each fan you want it to control in the sketch you upload. Have a look at the CommanderPRO example sketch for a complete working example.

#define PWM_FAN_PIN 5
PWMFan fan(PWM_FAN_PIN, 0, 2000);

The first argument is the PWM pin where the fan is connected. The pin must be a PWM pin and also part of a supported timer. Timer are Arduino hardware specific and currently only Arduino Mega and Arduino Leonardo timers are supported. The timers are very imported because PWM fans require a very high frequency PWM signal to work properly, therefore the timers must be configured correctly. Supported timers are configured automatically, so you don't have to do this. But if you have a board with unsupported timers you must setup the timers for a high speed yourself.

The second argument of the PWMFan is the minimum fan speed in rpm (revolutions per minute). The third argument is the maximum speed of the fan in rpm. The two values are used to calculate the PWM percentage.

After you configured all the fans you have to add them to the SimpleFanController in the setup function.

fanController.addFan(0, &fan);

The first argument is the index of the fan (zero-based) shown in iCUE. The second argument is the pointer to the fan you have configured.

The fan controller updates the speed of the fans depending on the temperature and fan curve you configure in iCUE.

fanController.updateFans();

Call the updateFans function of the led controller in the loop function.

The measurement of the PSU rail voltage for display in iCUE is currently not implemented by this library. You can implement the feature by yourself if you have a good reference voltage to reliable determine the voltage on an input pin. The measured voltage should be returned by these functions in mV.