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.
 
 
 
 
Go to file
Swyter d3162ea2e8 Initial version of the MSVC/Qt5 GitLab buildbot. On Windows also copy inpoutx64.dll and libusb-1.0.dll to the final destination and use intermediate build folders to get rid of the cruft. 3 years ago
Controllers Finished up all the modes 3 years ago
RGBController Finished up all the modes 3 years ago
dependencies Add Aura X570 interface number workaround to libusb DLLs 3 years ago
i2c_smbus Initialize i2c start and done flags 3 years ago
i2c_tools Add SMBus/I2C dumping tool to System Information page 3 years ago
net_port Client will now close listener thread when disconnected and attempt to reconnect. Initialization behavior (controller requests, client string update) are performed automatically upon reconnection 3 years ago
qt Fix wheel color changing when setting all devices 3 years ago
serial_port Fix segfault in Linux USB serial port auto-detection 3 years ago
super_io Add NCT6798D to Super-IO list in Windows 3 years ago
wmi Reorganization! Move all controllers into their own folders, move all RGBController wrappers into one folder, move i2c_smbus and serial_port dependencies into folders, and move main application/UI stuff into folders. Should help lead into creating a proper library 4 years ago
.gitignore First working version to support the Rival 110 mouse 3 years ago
.gitlab-ci.yml Initial version of the MSVC/Qt5 GitLab buildbot. On Windows also copy inpoutx64.dll and libusb-1.0.dll to the final destination and use intermediate build folders to get rid of the cruft. 3 years ago
.gitmodules Remove libe131 submodule and add necessary files to main repo. Fixes Gitlab automatic packaging issue 3 years ago
99-openrgb.rules Fix incorrect PID in Corsair Peripheral driver and add udev rules file for all OpenRGB devices 3 years ago
LICENSE Add LICENSE 4 years ago
NetworkClient.cpp Add MacOS support to NetworkClient.cpp 3 years ago
NetworkClient.h Get client stop function working 3 years ago
NetworkProtocol.cpp Initial network files 3 years ago
NetworkProtocol.h Add file headers to network files and some minor code cleanup 3 years ago
NetworkServer.cpp Handle socket errors on Windows, which does not return 0 when a socket is disconnected like Linux does 3 years ago
NetworkServer.h Add file headers to network files and some minor code cleanup 3 years ago
OpenRGB.cpp Initial implementation of RGB Fusion 2 DRAM controller 3 years ago
OpenRGB.h Rename OpenAuraSDK.cpp to OpenRGB.cpp and remove old unused code 3 years ago
OpenRGB.patch Add timeouts to i2c-nct6775 driver and fix kernel segfault caused by byte access with no data 3 years ago
OpenRGB.pro Initial version of the MSVC/Qt5 GitLab buildbot. On Windows also copy inpoutx64.dll and libusb-1.0.dll to the final destination and use intermediate build folders to get rid of the cruft. 3 years ago
ProfileManager.cpp Fix wrong index being used in profile lookup that would cause segfaults if there are more controllers detected than in profile 3 years ago
ProfileManager.h Automatically save a sizes.ors profile when resizing a zone, then automatically load zone sizes from sizes.ors on start 3 years ago
README.md AMD ADL Windows 3 years ago
cli.cpp Add command line option to enable i2c tools 3 years ago
main.cpp Add command line option to enable i2c tools 3 years ago

README.md

OpenRGB (formerly OpenAuraSDK)

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 both Windows and Linux, without any nonsense? That is what OpenRGB sets out to achieve. One app to rule them all. OpenRGB is still in its early stages and already supports quite a few products. I'm always on the lookout for good deals on more popular RGB devices to add support for.

Supported Devices

See the Project Wiki for the current list of supported devices.

WARNING!

This project provides a tool to probe the SMBus. This is a potentially dangerous operation if you don't know what you're doing. Exercise caution when clicking the Detect Devices or Dump Device buttons. There have been reports of Gigabyte motherboards having serious issues (bricking the RGB or bricking the entire board) when dumping certain devices. On the same lines, exercise the same caution when using the i2cdump and i2cdetect commands on Linux, as they perform the same functionality. OpenRGB is not liable for damage caused by improper SMBus access.

As of now, only Gigabyte RGB Fusion 2.0 boards have been reported to have issues.

OpenRGB_0.11

Windows

  • Pre-built binaries are available under the Releases section on GitLab.

  • If you wish to build the application yourself:

    1. Download the latest Visual Studio Community Edition and Qt Creator.
    2. Open the OpenRGB.pro project in Qt Creator.
    3. Use the MSVC compiler kit, either 32- or 64-bit, to build the application.
    4. Run the project from Qt Creator. If you want to use your custom build standalone, download the latest matching Release package and replace the OpenRGB.exe in it with your new build.
  • You must run the application as Administrator the first time to allow InpOut32 to set up. It can be run as a normal user afterwards

USB Access

  • Some USB devices (especially keyboards and mice) require installation of the WinUSB driver. You can do this with Zadig:
    • Download Zadig: https://zadig.akeo.ie/
    • Select "list all devices" from the menu
    • Select the last interface of your device
    • With "WinUSB" selected, click Install

Linux

  • Pre-built binaries are not currently available for Linux

  • You can build the project using Qt Creator or on the command line. The commands listed here work for Debian-based distros.

    1. sudo apt install build-essential qtcreator qt5-default libusb-1.0-0-dev libhidapi-dev pkgconf
    2. git clone https://gitlab.com/CalcProgrammer1/OpenRGB
    3. cd OpenRGB
    4. qmake OpenRGB.pro
    5. make -j8
  • Run the application with ./OpenRGB

SMBus Access

  • SMBus access is necessary for controlling RGB RAM and certain motherboard on-board LEDs.

  • If you are not trying to use OpenRGB to control RGB RAM or motherboard LEDs, you may skip this section.

  • ASUS and ASRock motherboards have their RGB controller on an SMBus interface that is not accessible by an unmodified Linux kernel (for now). I am working on getting patches submitted upstream, but for now you must patch your kernel with the provided OpenRGB.patch file.

  • Allowing access to SMBus:

    1. Load the i2c-dev module: sudo modprobe i2c-dev

    2. Load the i2c driver for your chipset:

      • Intel:
        • sudo modprobe i2c-i801
        • sudo modprobe i2c-nct6775 - Secondary controller for motherboard LEDs (requires patch)
      • AMD:
        • modprobe i2c-piix4
        • Unmodified kernel will have one interface, patched kernel will have two. The first at 0x0B00 and the second at 0x0B20. The 0x0B20 interface is for motherboard LEDs.
  • Instructions on patching the kernel:

  • Some Gigabyte/Aorus motherboards have an ACPI conflict with the SMBus controller.

    • Add acpi_enforce_resources=lax to your kernel command line and reboot. The controller should now show up.
  • You'll have to enable user access to your SMBus if you don't run as root.

    • List all SMBus controllers: sudo i2cdetect -l
    • Note the number for PIIX4, I801, and NCT6775 controllers.
    • Give user access to those controllers, for instance: sudo chmod 777 /dev/i2c-0

USB Access

  • USB devices require udev rules to access as a normal user.

  • You can run OpenRGB as root to detect all USB devices.

  • Udev rules are included in this repo:

    • Copy the 99-openrgb.rules file to /etc/udev/rules.d/
    • Reload rules with sudo udevadm control --reload-rules && sudo udevadm trigger
    • Add your user to the plugdev group: sudo adduser username plugdev
    • Add your user to the i2c group: sudo adduser username i2c

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.