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.
 
 
 
 
Chris Morgan c1781bc4cb Add support for led_classdev_mc via sysfs
Update the LinuxLEDController to support multicolor LEDs defined by
the Linux kernel. For multicolor LEDs Linux exposes a single
brightness which allows a range of 0 (off) to 255 (max) and a multi_intensity
value that accepts multiple channels of colors. This current implementation
assumes that there are 3 multi_intensity channels between 0 and 255.

https://docs.kernel.org/leds/leds-class-multicolor.html

Note that for now in Linux the brightness value doesn't so much affect
the brightness of the LED as it does apply a coefficient to the individual
channel intensities. For now hard code the brightness to 255 and simply
adjust the intensities to alter the color.

This change should keep the existing sysfs code path as-is and only attempt
to use this new method when a led_rgb_path is present in the config file.

For reference, my OpenRGB.json has the following lines:
`    "LinuxLEDDevices" : {
        "devices": [
            {
                "name": "Fan LED 1",
                "rgb_path": "/sys/class/leds/rgb:programming-0/"
            }
        ]
    }`

Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
7 months ago
.github Add GitHub Sponsor information 10 months ago
.gitlab fix: spelling of Nvidia GPU label in New Device issue template 10 months ago
.vscode Add recomended VSCode extensions 4 years ago
AutoStart Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
Controllers Add support for led_classdev_mc via sysfs 7 months ago
Documentation Update SMBus documentation for PawnIO 8 months ago
KeyboardLayoutManager Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
RGBController Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
SPDAccessor Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
SuspendResume Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
debian Update static shebangs to flexible /usr/bin/env 2 years ago
dependencies Update PawnIO SMBus driver to use standardized API between all drivers, add NCT6793 driver, and remove WinRing0 SMBus drivers 8 months ago
dmiinfo Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
fedora Install systemd service under PREFIX 7 months ago
hidapi_wrapper Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
i2c_smbus Improve PawnIO initialization 7 months ago
i2c_tools Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
interop Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
mac Mac Update info product name 2 years ago
net_port Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
pci_ids Add ASUS ROG RTX4090 with PID 8933 7 months ago
qt Install systemd service under PREFIX 7 months ago
scripts OpenRGB Release Candidate 1.0rc2 8 months ago
scsiapi Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
serial_port Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
startup Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
super_io Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
wmi Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
.editorconfig Inital commit to .editorconfig file 4 years ago
.gitignore link system hub fixups 9 months ago
.gitlab-ci.yml Disable realtime malware scanning on GitLab CI so that it doesn't break builds with WinRing0 8 months ago
CONTRIBUTING.md Update CONTRIBUTING.md with comment box style updates and update CI section to reflect the CI state in 2025 7 months ago
Colors.h Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
Detector.h Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
DeviceDetector.h Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
LICENSE Add LICENSE 7 years ago
LogManager.cpp Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
LogManager.h Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
NetworkClient.cpp Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
NetworkClient.h Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
NetworkProtocol.cpp Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
NetworkProtocol.h Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
NetworkServer.cpp Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
NetworkServer.h Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
OpenRGB.pro Install systemd service under PREFIX 7 months ago
OpenRGBPluginInterface.h Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
PluginManager.cpp Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
PluginManager.h Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
ProfileManager.cpp Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
ProfileManager.h Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
README.md Replace WinRing0 with PawnIO for SMBus and Super-IO access on Windows 8 months ago
ResourceManager.cpp Start server before detecting devices 7 months ago
ResourceManager.h Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
ResourceManagerInterface.h Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
SettingsManager.cpp Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
SettingsManager.h Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
StringUtils.cpp Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
StringUtils.h Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
cli.cpp Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months ago
cli.h Loading optimization (no GUI changes) 2 years ago
filesystem.h Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 7 months 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 Extra repository or from the AUR for the pipeline version.

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

Follow Us On Mastodon

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