No description
Find a file
2020-07-31 08:47:39 -05:00
Controllers Modifying find_usb_serial_port() to return a vector 2020-07-31 08:47:39 -05:00
debian Increment version number post-release 2020-07-21 23:21:10 -05:00
dependencies Fix for Gigabyte Fusion2 USB detection 2020-07-24 12:41:25 -05:00
i2c_smbus i2c_smbus_nvapi::i2c_smbus_xfer now returns -1 for I2C_SMBUS_QUICK accesses which are unsupported 2020-07-20 17:37:43 -05:00
i2c_tools Add SMBus/I2C dumping tool to System Information page 2019-12-22 00:02:08 -06:00
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 2020-05-10 01:19:38 -05:00
qt Fix Tab navigation order in the GUI 2020-07-23 21:48:31 -05:00
RGBController Initial HyperX Pulsefire Surge controller 2020-07-28 20:37:12 -05:00
scripts Adding scripts and tooling to build an AppImage 2020-06-18 21:36:59 -05:00
serial_port Modifying find_usb_serial_port() to return a vector 2020-07-31 08:47:39 -05:00
super_io Add NCT6798D to Super-IO list in Windows 2020-04-04 18:41:38 -05:00
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 2019-08-22 18:43:17 -05:00
.gitignore Adding scripts and tooling to build an AppImage 2020-06-18 21:36:59 -05:00
.gitlab-ci.yml Fix MSVC paths from 2017 to 2019 upgrade 2020-07-12 00:54:06 -05:00
.gitmodules Remove libe131 submodule and add necessary files to main repo. Fixes Gitlab automatic packaging issue 2020-04-09 09:29:54 -05:00
60-openrgb.rules Cleaned up MSI Mysticlight detect pids 2020-07-14 15:43:40 -05:00
cli.cpp Use synchronous mode update function in CLI 2020-07-22 23:29:32 -05:00
LICENSE Add LICENSE 2019-01-29 03:26:51 +00:00
main.cpp Update timer resolution every 500ms to ensure it stays set while OpenRGB is active 2020-07-25 01:51:39 -05:00
NetworkClient.cpp Remove some debugging printouts in Network Client and Server code 2020-07-17 22:10:53 -05:00
NetworkClient.h Request updated controller mode from server after sending a Set Custom Mode command 2020-07-17 18:29:37 -05:00
NetworkProtocol.cpp Initial network files 2020-05-09 15:48:12 -05:00
NetworkProtocol.h Make default SDK port a defined constant 2020-06-22 11:32:32 -05:00
NetworkServer.cpp Checks to avoid null dereferences in NetworkServer 2020-07-19 13:16:19 -05:00
NetworkServer.h Improving NetworkServer's memory management (#373) 2020-07-09 21:56:42 -05:00
OpenRGB.cpp Initial HyperX Pulsefire Surge controller 2020-07-28 20:37:12 -05:00
OpenRGB.h Rename OpenAuraSDK.cpp to OpenRGB.cpp and remove old unused code 2019-12-28 15:24:40 -06:00
OpenRGB.patch Add timeouts to i2c-nct6775 driver and fix kernel segfault caused by byte access with no data 2020-03-23 23:22:25 -05:00
OpenRGB.pro Fix typo 2020-07-27 10:17:28 -05:00
ProfileManager.cpp Fix wrong index being used in profile lookup that would cause segfaults if there are more controllers detected than in profile 2020-03-23 23:40:18 -05:00
ProfileManager.h Automatically save a sizes.ors profile when resizing a zone, then automatically load zone sizes from sizes.ors on start 2020-03-19 14:24:39 -05:00
README.md Fix formatting 2020-07-25 16:51:56 -05:00

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.

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

Supported Devices

See the Project Wiki for the current list of 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 two instances of hardware damage in OpenRGB's development and we've taken precautions to prevent it from happening again.

  • The MSI Mystic Light code reportedly bricked the RGB on certain MSI boards when sending certain modes. This code has been disabled and MSI Mystic Light motherboards will not work with OpenRGB at this time.
  • There were reports of bricked Gigabyte Aorus Z390 motherboards caused by dumping SMBus address 0x68 in an attempt to reverse engineer the RGB. Due to this, the SMBus Tools page on OpenRGB is hidden by default now as it has no real use to non-developers. Additionally, the RGB Fusion 2 SMBus code is disabled by default because, although it works on boards it is meant for, probing this address (0x68) could damage Gigabyte Z390 boards.
  • To enable the MSI Mystic Light or Gigabyte RGB Fusion 2 SMBus code, you must uncomment the functions in main.cpp and recompile.

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

  • Previous versions of OpenRGB used the WinUSB driver, installed using Zadig. This is no longer required, and you need to uninstall the WinUSB driver if you previously installed it. You can uninstall the WinUSB driver by following this guide.

Linux

  • Pre-built binaries are not currently available for Linux
  • You can build the project using Qt Creator or on the command line.
    1. Install build dependencies
      • Debian: sudo apt install build-essential qtcreator qt5-default libusb-1.0-0-dev libhidapi-dev pkgconf
      • Fedora: sudo dnf install git make automake gcc gcc-c++ qt-creator qt5-devel hidapi-devel libusb-devel
    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 60-openrgb.rules file to /etc/udev/rules.d/
    • Reload rules with sudo udevadm control --reload-rules && sudo udevadm trigger

OpenRGB SDK

OpenRGB provides a network interface for controlling supported RGB devices from other software. These projects implement the OpenRGB SDK and provide additional ways for you to control your lighting setup.

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.