OpenRGB on Linux controlling RGB lights on
a Gigabyte AX370 Gaming 5 motherboard.
|Original author(s)||Adam Honse|
September 9, 2020
|Written in||Decently commented C++|
|Operating system||Linux (Source, AppImage)|
|Type||RGB Light Controller|
|License||GNU GPL v2|
OpenRGB is a graphical free software program that, in theory, lets you control RGB lights motherboards, graphics cards and other devices from the Linux and Windows operating systems. Using it to control most of the RGB lights it supports on Linux requires compiling the Linux kernel with a special
i2c-dev patch and there is a fair chance won't work even if you do that. It is also possible that it will let you control RGB lights from a simple and easy to use graphical interface.
The Linux kernel has good support for regular LED lights found on keyboards and laptops (the WLAN light, etc) and Linux users can control those by sending messages to /sys/. Getting RGB lights to work is a lot harder because it requires sending special messages to special controllers over either the SMBus or USB interfaces. This is where OpenRGB comes in. It can, in theory, talk to RGB controllers and make them work using a nice graphical interface. You may find that it is, in practice, utterly useless software incapable of controlling anything. You could also be lucky and get RGB control from a nice and simple GUI.
Features, Usability & Verdict
OpenRGB can, in theory, talk to RGB controllers over either the SMBus (i2c) interface or USB. You may find that OpenRGB is, on Linux, a complete and utter waste of time not worth bothering with. You may want to try if you're a wizard who knows how to apply a patch to the kernel source tree and compile it, but don't expect that you'll be able to control RGB light, or anything else, even if you waste a lot of time of time on it and you carefully follow the instructions.
The only board we managed to get working with OpenRGB was the Gigabyte X370 Gaming 5. That required patching the kernel and booting with the
acpi_enforce_resources=lax kernel parameter.
You can compile your own patched kernel (with OpenRGB.patch), add the required
udev device file for USB devices and try to get OpenRGB working if you have one of the supposedly supported motherboards, graphics cards, keyboards or other hardware listed below. Just don't be shocked if you end up wasting hours without accomplishing anything beyond perhaps providing some useful information the developer can use to improve OpenRGB.
OpenRGB is very nice if you are able to make it work on your machine.
|Warning: The OpenRGB website has a big warning section where they note that MSI Mystic Light motherboards and Gigabyte Aorus Z390 motherboards using the how hidden-by-default SMBus Tools page within OpenRGB. While this should not be a problem with any of the hardware now officially supported by OpenRGB, it is a concern to be aware of: Sending instructions directly to controller chips over the SMBus does have some risks.|
This may be all you get when you try to use OpenRGB for the first time. That's true even if you have one of the supported devices but have not compiled a custom kernel with the (OpenRGB.patch) OpenRGB kernel patch.
The OpenRGB has it's own detailed page listing Supported Devices. The table below is therefore a simplified summary for your convenience.
The OpenRGB project appears to be very Windows-focused. That a device is listed as "supported" does not mean that it actually is supported on GNU/Linux systems. You will likely find that it simply doesn't find any RGB controllers even if you have several that are supposedly supported and you've patched your kernel and followed the instructions. However, there is a chance that it will work. Your mileage will definitively vary on this one.
|ASRock||B450 Steel Legend, B450M Steel Legend, Fatal1ty B350 Gaming-ITX/ac, B450M/ac, X570 Taichi|
|ASUS||Many PRIME, ROG and TUF boards are supported. These use a USB interface to control RGB lights (no kernel patching required).|
|Gigabyte||X370 Gaming 5 is will work, and there is fair chance other X570 boards and the TRX40 Aorus will work. You must compile your own kernel using OpenRGB's kernel patch (OpenRGB.patch) and boot with |
|MSI||Almost all MSI boards use either the Nuvoton NCT6795 or Nuvoton NCT6797 chip. These are not supported by the mainline kernel. OpenRGB provides a kernel patch (OpenRGB.patch) that provides a |
|Most RGB RAM will enumerate as SMBus devices. Kernel patching is required.|
|Corsair||Vengeance RGB and pro RGB|
|HyperX||Predator RGB, Fury RGB|
|EVGA||GeForce GTX 1070 FTW|
|Gigabyte||Aorus GTX1080Ti Xtreme Waterforce WB, RTX2070 SUPER GAMING|
|Sapphire||Sapphire RX580 Nitro+|
Fans, Fan Controllers and LED Strips
|AMD||Wraith Prism (Actually a Cooler Master product)|
|ASUS||ROG Aura Terminal|
|Logitech RGB Keyboards||
|Corsair||M65 RGB PRO / M65 RGB Elite|
The OpenRazer project is integrated into OpenRGB. That project supports a wide range of Razer keyboards (BlackWidow, Huntsman, etc), Razer mice, laptops, headsets, mouse-mats, speakers etc.
There is an AppImage available on the OpenRGB releases page. You can get that one, but you might as well get the source. You will need to get a udev rules file and the kernel patch to try to get it working anyway and you don't get those if you get the AppImage. You can get the USB udev rules with wget if you do you the AppImage route.
|Warning: Re-loading the udev rules may be unfortunate consequences such a the X display server crashing!|
sudo wget https://gitlab.com/CalcProgrammer1/OpenRGB/-/raw/master/60-openrgb.rules -O /etc/udev/rules.d/60-openrgb.rules sudo udevadm control --reload-rules && sudo udevadm trigger
You will need to fetch the OpenRGB.patch and use that to patch your kernel regardless of how you acquire the OpenRGB user-space program.
Installing from source is fairly easy. The first step install the packages required to build it.
On Debian / Ubuntu:
sudo apt install build-essential qt5-default libusb-1.0-0-dev libhidapi-dev pkgconf
sudo dnf install git make automake gcc gcc-c++ qt5-devel hidapi-devel libusb-devel
Next, clone and compile the source:
git clone https://gitlab.com/CalcProgrammer1/OpenRGB.git cd OpenRGB qmake OpenRGB.pro # or, on Fedora, # qmake-qt5 OpenRGB.pro make -j$(nproc) # or just make sudo make install # "make install" will NOT install the rules file for you! sudo cp 60-openrgb.rules /etc/udev/rules.d/
Just installing OpenRGB, and manually copying the rules files into the udev rules directory will likely not be enough. You will also have to use the
OpenRGB.patch kernel patch in the OpenRGB source root folder to patch the Linux kernel source and build it. You may also have to add
acpi_enforce_resources=lax to the
GRUB_CMDLINE_LINUX line in
/etc/sysconfig/grub (or otherwise make
acpi_enforce_resources=lax a kernel boot parameter).
Some Final Thoughts
OpenRGB is a really nice piece of software. It is a shame that it takes a lot of skill to install it right, and it may not work even if you do. It would be great if more people, that's you, could help out and make OpenRGB a great tool for everyone.
The developer, Adam Honse, is doing a great job on this one. He really is. However, there is a very hard physical limit to what he can do: He ain't got no basement full of every single motherboard, GPU and other pieces of hardware with some obscure RGB ligth controller. Adding data dumps and other useful information to the OpenRGB issue tracker will likely make his "job" (he's actually a vulenter writing this in his space time, keep that in mind) slightly easier.
The source code, homepage and issue tracker is at gitlab.com/CalcProgrammer1/OpenRGB. That's where it's at.