Configure SteelSeries Apex M800 Keyboard on Linux/Windows/Mac without SteelSeries Engine (Maybe other keyboards too)
As of now, this utility lets you "upload" configuration sniffed from the original SteelSeries Engine. This means that you still need a Windows/Mac computer or VM in order to create a configuration. (More below)
However, once you have created the desired configurations from Windows/Mac and cloned them into some binary format (more below), you can apply the configuration directly with this software whenever you want, even on Linux.
First of all, you need to compile the uploader program. You need to install gcc and the libusb library, both the library and the headers.
On Ubuntu:
sudo apt install libusb-1.0-0-dev gcc
Then, you can compile main.c under src/uploader
:
gcc src/uploader/main.c -lusb-1.0 -o uploader
Once builded, you can launch the uploader and pass the path of the configuration file as first argument:
./uploader configurations/configuration1
You can find 2 pre-made configuration on this repo.
- SteelSeries Engine installed on Windows/Mac (You can also install it in a VM)
- Wireshark
- Python
- Prepare to upload a configuration from SteelSeries Engine ( you need to select another one first )
- Start the USB capture from Wireshark - More info here
- Select the desired configuration from SteelSeries Engine
- End the capture from Wireshark
- Filter the packets from Wireshark using
usb.setup.wLength == 514
- On Wireshark File > Export Packet Dissections > As JSON
- This file should look like
configurations/configuration1.json
- In this repo you will find
src/json_to_binary/json_to_binary.py
- Run that script specifying the JSON file as input and the output configuration file, for example:
python src/json_to_binary/json_to_binary.py /path/to/json /path/to/configuration
- Compile
src/uploader/main.c
- Run the new executable as root specifying the configuration file, for example:
sudo ./upload /path/to/configuration
- You are done! Repeat 10 every time you want to change configuration