CorsairLightingProtocol
Control LEDs connected to an Arduino with iCUE, create an unofficial Corsair iCUE compatible Arduino LED controller.
Install / Use
/learn @Legion2/CorsairLightingProtocolREADME
Corsair Lighting Protocol

<a href="https://www.corsair.com/icue"><img src="extra/images/iCUEDarkBadge.png" alt="iCUE" height="80" /></a> <a href="https://rgbsync.com/"><img src="extra/images/RGBSyncDarkBadge.png" alt="RGBSync" height="80" /></a> <a href="https://gitlab.com/CalcProgrammer1/OpenRGB"><img src="extra/images/OpenRGBBadge.png" alt="OpenRGB" height="80" /></a> <a href="https://signalrgb.com"><img src="extra/images/SignalRGBBadge.png" alt="SignalRGB" height="80" /></a>
This library can be used to integrate custom/unofficial RGB strips with iCUE. This is not an official Corsair project.
Features
- Add support of Corsair DIY device protocol to Arduino.
- Control LEDs with the Corsair iCUE software.
- Support common LED chipsets. (e.g. WS2812B, WS2801)
- Support FastLED.
- Supported platforms: Arduino AVR, TinyUSB supported cores
- Hardware Lighting mode.
- Use multiple devices at the same time.
- Repeat or scale LED channels to arbitrary size.
Supported Devices
- Lighting Node PRO
- Commander PRO
- Lighting Node CORE
- LS100 Smart Lighting Controller
- LT100 Smart Lighting Towers

Getting started
This project is an Arduino library called "Corsair Lighting Protocol". It can be used to control Arduino boards with iCUE. This project provides example sketches for easy use with Arduino IDE.
- Requirements
- Install the libraries
- Create a Lighting Node PRO with AVR
- Create a Lighting Node PRO with TinyUSB
- Use the Lighting Node PRO
Requirements
The library is compatible with all boards using the MCU ATmega32U4. This includes Arduino Leonardo, SparkFun Pro Micro, Arduino Micro, and Adafruit 32u4 AVR Boards. It also supports the Arduino Uno and Arduino Mega, but this requires the HoodLoader2 bootloader, see this wiki for more details.
In addition, any board compatible with Adafruit TinyUSB for Arduino is also supported without the use of custom board definitions. Be sure to define USE_TINYUSB, which is done automatically when using a supported core and selecting TinyUSB for the USB Stack. See the TinyUSB example for implementation details.
It is not compatible with ATmega328 (Arduino Nano), STM8S103F3, teensy, or ESP8266 see list of architecture/platform for a detailed description why they are not supported.
In the rest of the documentation "Arduino" is used as a synonym for all supported boards regardless of the manufacturer.
When you have problems with a board not listed here, please open an Issue.
Install the libraries
To use this library you must install it with the Library-Manager. Open the Library-Manager in Arduino IDE via Tools->Manage Libraries... Search for "Corsair Lighting Protocol" and install the Corsair Lighting Protocol library. This library also requires the FastLED library. Search for "FastLED" in the Library-Manager and install the FastLED library. If using TinyUSB, also install the latest "Adafruit TinyUSB Library" as it supersedes some of the core versions.
Create a Lighting Node PRO with AVR
This guide will teach you how to create a Lighting Node PRO with an Arduino Leonardo compatible board. If you have an Arduino Uno or Mega, see the other guide.
-
Open the example "LightingNodePRO", you can find it in Arduino IDE in the File menu->Examples->Corsair Lighting Protocol->LightingNodePRO. If you can't open the LightingNodePRO example the Corsair Lighting Protocol library is not installed correctly.

-
Install the CLP Boards. They can be installed by following the CLP Boards installation guide. After installation it should be possible to select the CLP Boards in the Arduino IDE as shown in the screenshot below. If your are using a Sparkfun Pro Micro also install the SparkFun Boards definition.

-
Upload the "LightingNodePRO" sketch to your Arduino.

-
Do the wiring. For more information on how to wire the LEDs and how to set up the LEDs in the code see the links.

-
Verify your device works as expected. Open the Windows settings->devices->Other devices. Somewhere in the list of devices, there should be a device called "Lighting Node PRO".
-
Now open iCUE there you should see the "Lighting Node PRO".
If you have any problem during setup you may find the solution in the Troubleshooting section.
Create a Lighting Node PRO for a Raspberry Pi Pico with TinyUSB
This guide will teach you how to create a Lighting Node PRO with a Raspberry Pi Pico.
Note: FastLED currently does not support the RP2040 natively. You must manually merge support by modifying your library to include the 6 RP2040 platform files in the FastLED/src/platforms/arm/rp2040 folder and #elif defined(ARDUINO_ARCH_RP2040) / #include statements in led_sysdefs.h and platforms.h.
-
Install the Raspberry Pi Pico Arduino core.
-
Open the example "TinyUSB", you can find it in Arduino IDE in the File menu->Examples->Corsair Lighting Protocol->TinyUSB. If you can't open the LightingNodePRO example the Corsair Lighting Protocol library is not installed correctly.
-
Select the Raspberry Pi Pico as shown in the screenshot below. Be sure to select the "Adafruit TinyUSB" USB Stack.

-
Upload the "TinyUSB" sketch to your Pico.
-
Do the wiring. For more information on how to wire the LEDs and how to set up the LEDs in the code see the links.
A level shifter or buffer, like this one, is recommended in between the Pico and LEDs to translate the 3.3v logic level of the Pico IO to the 5v logic level of the LEDs. Your setup may not work reliably without one.

-
Verify your device works as expected. Open the Windows settings->devices->Other devices. Somewhere in the list of devices, there should be a device called "Lighting Node PRO".
-
Now open iCUE there you should see the "Lighting Node PRO".
Use the Lighting Node PRO

In iCUE open the "Lighting Setup" tab of the Lighting Node PRO(LNP) and set for both Lighting Channels the device to "RGB Light Strip" and the amount to a tenth of the LEDs you have. iCUE groups the LEDs into groups of ten. So if you have 20 LEDs, set the amount to 2. Now you can create lighting effects in the "Lighting Channel #" tabs.
Documentation
- API Documentation
- How it works
- Use of multiple devices
- Repeat or scale LED channels
- Increase the Brightness of the LEDs
- Hardware Lighting mode
How it works
This library uses the USB HID interface of the ATmega32U4. After uploading a sketch with the library and selected CLP Boards, iCUE recognizes the Arduino as a Corsair device, because the CLP Boards use USB IDs of Corsair. In iCUE you can then select the device and set some lighting effects. iCUE sends these via the HID protocol to the Arduino. These commands are understood by the library and converted into lighting effects on the RGB strips connected to the Arduino. The [FastLED](http://fastled.io
