This project integrates OpenRGB into a Godot GDExtension to enable direct control of RGB lighting on supported gamepads and other I/O devices. It is built using the OpenRGB C++ SDK and adapted to work with a modified dependency stack based on CppUtils and CppUtils-Network.
Several patches where made to openRGB. Files ProtocolCommon.hpp, DeviceInfo.cpp, ProtocolMessages.cpp and NetAddress.cpp where updated to use the new BinaryStream.hpp from the extarnal libraries required. Patches are identified with comments.
- Full integration with OpenRGB for I/O devices lighting control.
- Supports RGB gamepads and compatible hardware.
- Uses OpenRGB C++ SDK for communication with OpenRGB server.
- Updated to work with modern CppUtils networking and utility libraries.
- Godot 4.5
⚠️ This extension was tested with Godot 4.5. It may work with other 4.x versions, but compatibility is not guaranteed.
You can find the latest release for Windows and Linux in Releases.
MacOS users must build the extension manually using the developer build instructions.
Unzip the release archive and place the resulting folder into your main Godot project directory.
⚠️ Your Players must follow steps 3 and 4 in order for it to be active during gameplay!
Go to OpenRGB official website and download OpenRGB for your OS.
⚠️ Each time you want to use GDGameLights you need to start the OpenRGB server on the correct port!
Open OpenRGB's app, navigate to SDK server and start the server on the port that you are using on your project! Default port for the extension is 6742.

You can now control supported RGB gamepads through OpenRGB from your Godot project.
- Godot 4.5
⚠️ This extension was tested with Godot 4.5. It may work with other 4.x versions, but compatibility is not guaranteed. - C++ build environment (GCC / Clang / MSVC)
- Python
- SCons (used for building)
git clone https://github.com/itslebi/GDGamepadLights
cd GDGamepadLightsRun the following command inside the main GDGamepadLights folder:
scons target=template_release⚙️ This will build the GDExtension and output the compiled binary (
.dllor.so) in thebin/directory.
Additionally, the following definition is required in SConstruct:
The provided
SConstructalready includes it.
env.Append(CPPDEFINES=[('critical_error', 'CRITICAL_ERROR')])This ensures compatibility with legacy CppUtils-Essential calls.
.gdextension file.
Use the included demo project:
- Open the project in Godot
- Ensure OpenRGB is running with SDK enabled
- Test device lighting control via supported gamepads
GDGamepadLights is open source and licensed under the MIT License. You are free to use, modify, and distribute this software as long as the original license and copyright notice are included.
Please note:
- OpenRGB is licensed under a GPL-compatible license
- OpenRGB C++ SDK is licensed under MIT
- CppUtils-Essential and CppUtils-Network do not have a public license but are part of the official dependencies of OpenRGB C++ SDK
This extension was made by me alone but it would not be possible without the below open source projects!
- Godot Engine — the engine it is built for
- OpenRGB — RGB lighting control system
- OpenRGB C++ SDK — SDK for device communication
- CppUtils-Essential — utility framework
- CppUtils-Network — networking utilities
© 2025 @itslebi — Contributions welcome!