OpenSeries
OpenSeries is a Rust command-line application and reusable library for discovering and controlling supported SteelSeries HID devices without SteelSeries GG.
The project began as a Linux-friendly way to check device status and change settings, and is designed to work across Linux, Windows, and macOS. Human output is readable in a terminal, while stable JSON output supports scripts and other integrations.
[!IMPORTANT] OpenSeries is an independent project and is not affiliated with or endorsed by SteelSeries.
Showcase

Supported devices
Headsets
| Device | Battery | ChatMix | Sidetone | Inactive time | Equalizer | EQ presets | Advanced controls |
|---|---|---|---|---|---|---|---|
| Arctis 7+ variants | Yes | Yes | Yes | Yes | Yes | Yes | N/A |
| Arctis Nova 5 / 5X | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Arctis Nova 7 / 7X variants | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Arctis Nova 7P / 7P v2 | Yes | No | No | Yes | Yes | Yes | N/A |
Mice
| Device | Battery | DPI presets | Polling rate | RGB zones | Sleep timer |
|---|---|---|---|---|---|
| Aerox 3 Wired | N/A | Yes | Yes | Yes | N/A |
| Aerox 3 Wireless variants | Yes | Yes | Yes | Yes | Yes |
| Aerox 5 Wired | N/A | Yes | Yes | Yes | N/A |
| Aerox 5 Wireless variants | Yes | Yes | Yes | Yes | Yes |
| Sensei Ten variants | N/A | Yes | Yes | Yes | N/A |
Contributions for additional devices are welcome. Protocol behavior must be verified against the exact model rather than inferred from a related device.
Requirements
- The Rust toolchain pinned by
rust-toolchain.toml - A supported SteelSeries device
- Permission to access its HID control interface
- On Linux, the development files for
libudev
Installation
Install the openseries executable from crates.io:
Linux users must install their distribution's libudev development package
before running cargo install (for example, libudev-dev on Debian and
Ubuntu).
Build
The executable is written to target/release/openseries.
Run the verification suite:
Usage
# use --json for json output
# Override the default 2000 ms device-response timeout
# Headsets
# Mice
# Interactive controls
Without a device selector, compatible commands operate on every connected
device. Use --device <id> to target one device.
Library usage
Add the package without its default CLI dependencies:
[]
= { = "1.0.0", = false }
The package exposes its library under the crate name openseries:
use ;
use discover_devices;
See examples for complete programs built on the library.
discover_devices keeps each successfully opened HID connection alive for the
lifetime of its returned Device. Use discover_devices_with_options and
DiscoveryOptions::with_timeout when an application needs a response timeout
other than the two-second default.