steelseries-led is a utility for controlling the backlight of the SteelSeries keyboards included in many MSI laptops. The keyboard is broken up into three backlight regions (left, middle, and right) which can be set to different colors and intensities independently of each other. Using the official Windows utility, one can set the color and brightness for the three regions, as well as select various other modes such as breathe and wave. The goal of this program is to replicate that functionality as well as possibly add additional modes and features.
NOTE: While this program may work for other SteelSeries keyboards, it is not guaranteed. My development efforts with be focused solely on supporting the keyboard included in MSI laptops, specifically the MSI GS60 Ghost. This keyboard does not have a model name or number as far as I know, but I believe that most MSI gaming laptops use the same one. The Origin EVO15-S keyboard may also work with this program since it is just a re-branded Ghost, but again I make no guarantees.
Currently, the program is in a very alpha state. The only mode which works correctly is normal mode. For the time being, this requires setting the color of each section separately, followed by setting the mode to normal.
steelseries-led depends on the hidapi library which can be found here.
Compiling and Running
make will compile steelseries-led and produce a single executable.
You can run
steelseries-led help for details on how to use the program and
what arguments are supported.
This program must be run with root privileges in order to send data to the
keyboard. If you want to avoid this, you can either change the permissions of
the device file manually (i.e.
chmod o+w /dev/bus/usb/<bus>/<device>, where
<bus> and <device> can be found by running
lsusb), or you can create a udev
rule to do this for you at boot. I have had very limited success with the udev
method, since the rules typically get applied very early in the boot process
before USB devices get initialized.
How to report bugs?
Open an issue on the issue tracker.
Please indicate what OS and architecture you are using, as well as output from the program showing the bug, if possible. Please read this entire README first, as it may be something mentioned above or not yet supported.