You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
James Buren 4bae567c4c Update json dependency to 3.11.3 2 years ago
.github Create FUDING.yml for GitHub 5 years ago
.gitlab EVGA ACX30 Motherboard 2 years ago
.vscode Add recomended VSCode extensions 4 years ago
AutoStart Start updating file header comments to standardized new format 2 years ago
Controllers Fix a bug in Nollie1 2 years ago
Documentation Update screenshot in README 2 years ago
KeyboardLayoutManager Update even more file header comments to standardized new format 2 years ago
RGBController Update even more file header comments to standardized new format 2 years ago
debian Update static shebangs to flexible /usr/bin/env 2 years ago
dependencies Update json dependency to 3.11.3 2 years ago
dmiinfo Update more file header comments to standardized new format, move some locally owned files out of the dependencies folder 2 years ago
fedora Update pipeline builds to include Fedora 40 2 years ago
hidapi_wrapper Properly fix how how hidapi and libusb dependencies are handled 2 years ago
i2c_smbus Update more file header comments to standardized new format 2 years ago
i2c_tools Update even more file header comments to standardized new format 2 years ago
interop Update even more file header comments to standardized new format 2 years ago
mac Mac Update info product name 2 years ago
net_port Update even more file header comments to standardized new format 2 years ago
pci_ids Added support for Gigabyte GTX 1660 Ti Gaming OC 2 years ago
qt Properly fix how how hidapi and libusb dependencies are handled 2 years ago
scripts Properly fix how how hidapi and libusb dependencies are handled 2 years ago
scsiapi Fix more warnings in scsiapi_linux 2 years ago
serial_port Fix error checking on CreateFile() usage 2 years ago
super_io Update even more file header comments to standardized new format 2 years ago
wmi Update yet more file header comments to standardized new format 2 years ago
.editorconfig Inital commit to .editorconfig file 4 years ago
.gitignore Added Controller for Epomaker TH80 Pro keyboard 3 years ago
.gitlab-ci.yml Switch arm Appimage builds to manually triggered 2 years ago
CONTRIBUTING.md Add notes discouraging merge requests with protected master branch as the source 2 years ago
Colors.h Update yet more file header comments to standardized new format 2 years ago
Detector.h Update yet more file header comments to standardized new format 2 years ago
DeviceDetector.h Update yet more file header comments to standardized new format 2 years ago
LICENSE Add LICENSE 7 years ago
LogManager.cpp Update yet more file header comments to standardized new format 2 years ago
LogManager.h Update yet more file header comments to standardized new format 2 years ago
NetworkClient.cpp Fix resizing zones over the network 2 years ago
NetworkClient.h Add a mutex around groups of send() calls in NetworkClient.cpp to fix corrupt packets due to race conditions. If two network RGBControllers try to send a packet with data at the same time, a race condition could cause data from another thread to send in between the header and data for the active thread, corrupting the data stream. 2 years ago
NetworkProtocol.cpp Fix warning related to sizeof() on const char array, the null terminator is not used here so reworked the array to explicitly be 4 elements 2 years ago
NetworkProtocol.h Fix warning related to sizeof() on const char array, the null terminator is not used here so reworked the array to explicitly be 4 elements 2 years ago
NetworkServer.cpp Allow data size of zero for data length checks if protocol version is 4 or lower, this is to fix backwards compatibility with a bug in older versions OpenRGB.NET that has since been fixed. 2 years ago
NetworkServer.h Update yet more file header comments to standardized new format 2 years ago
OpenRGB.patch Add timeouts to i2c-nct6775 driver and fix kernel segfault caused by byte access with no data 6 years ago
OpenRGB.pro Update mbedtls dependency to 2.28.8 2 years ago
OpenRGBPluginInterface.h Update yet more file header comments to standardized new format 2 years ago
PluginManager.cpp Fix name redefinition/conflict in plugin manager 2 years ago
PluginManager.h Update yet more file header comments to standardized new format 2 years ago
ProfileManager.cpp Fix uninitialized bytes valgrind warning in ProfileManager.cpp 2 years ago
ProfileManager.h Update yet more file header comments to standardized new format 2 years ago
README.md Add MacOS to the introduction 2 years ago
ResourceManager.cpp Properly fix how how hidapi and libusb dependencies are handled 2 years ago
ResourceManager.h Update yet more file header comments to standardized new format 2 years ago
SettingsManager.cpp Update yet more file header comments to standardized new format 2 years ago
SettingsManager.h Update yet more file header comments to standardized new format 2 years ago
StringUtils.cpp Fix possible loss of data warning in StringUtils.cpp 2 years ago
StringUtils.h Move wstring to string conversion to StringUtils.cpp and update most HID get serial number functions to use it 2 years ago
cli.cpp Update more file header comments to standardized new format, move some locally owned files out of the dependencies folder 2 years ago
filesystem.h Update yet more file header comments to standardized new format 2 years ago
main.cpp Update yet more file header comments to standardized new format 2 years ago

README.md

Pipeline Status

One of the biggest complaints about RGB is the software ecosystem surrounding it. Every manufacturer has their own app, their own brand, their own style. If you want to mix and match devices, you end up with a ton of conflicting, functionally identical apps competing for your background resources. On top of that, these apps are proprietary and Windows-only. Some even require online accounts. What if there was a way to control all of your RGB devices from a single app, on Windows, Linux, and MacOS, without any nonsense? That is what OpenRGB sets out to achieve. One app to rule them all.

Features

  • Set colors and select effect modes for a wide variety of RGB hardware
  • Save and load profiles
  • Control lighting from third party software using the OpenRGB SDK
  • Command line interface
  • Connect multiple instances of OpenRGB to synchronize lighting across multiple PCs
  • Can operate standalone or in a client/headless server configuration
  • View device information
  • No official/manufacturer software required
  • Graphical view of device LEDs makes creating custom patterns easy

OpenRGB_Device_View

Website

Supported Devices

WARNING!

This project interacts directly with hardware using reverse engineered protocols. While we do our best to make sure we're sending the right data, there is always some risk in sending data to hardware when we don't understand exactly how that hardware works. There have been issues in the past with certain hardware getting damaged/bricked and we have either disabled or fixed the offending code. That said, with OpenRGB always changing and the landscape of RGB devices being of widely varying quality, we can't guarantee it won't happen again. By installing and using OpenRGB you accept this risk.

Download OpenRGB

  • Pre-built binaries are available for the following platforms:
    • Windows
    • Linux (AppImage, .deb, and .rpm)
    • MacOS
  • Released versions are available to download on OpenRGB.org or under Releases.
  • Experimental (aka Pipeline) versions are available to download on OpenRGB.org.
  • On Windows, you will need the Microsoft Visual 2019 C++ runtime installed. You can get it here.
  • An unofficial Flatpak release is available on Flathub
  • Released versions are officially packaged for various distributions including Alpine, Fedora, and Arch.
  • Arch users can also install from the AUR for both the release and pipeline versions.

Compile OpenRGB

Setup Device Access

  • After installing OpenRGB, please see the SMBus Access and USB Access pages for instructions on setting up access to your RGB devices.

Join Our Discord

Visit Our Lemmy Community

How-Tos and FAQs

Support OpenRGB

  • OpenRGB is a project I created to solve a problem I had with the RGB ecosystem. My goal isn't to make money off of this project. That said, people have requested to donate, and donations allow me to buy more RGB stuff to reverse engineer.
  • Donate via PayPal
  • Become a Patron (I'm not doing any Patreon-exclusive content, it's purely for donation)
  • Donate via Bitcoin: 1N83YPu7btXYadPS1neB9zX7X1QTdpyZQ

History of OpenRGB

  • OpenRGB is a continuation of OpenAuraSDK, which itself was created out of reverse engineering work done on the Keyboard Visualizer project. For a complete history of the RGB projects that led to OpenRGB's creation, see the History page.

Contributing

  • Want to contribute support for a new device? Check out the RGBController API page for documentation of how OpenRGB implements device control.
  • Want to create a new OpenRGB SDK client implementation? Check out the OpenRGB SDK Documentation page for documentation of how the OpenRGB SDK network protocol functions.
  • Please read the Contributing Guidelines before starting work on your new changes.

OpenRGB SDK

Applications Supporting OpenRGB SDK

OpenRGB Plugins

Projects Used

Projects Researched

While no code from these projects directly made its way into OpenRGB, these projects have been invaluable resources for protocol information.