An open-source replacement for SteelSeries GG, to manage your Arctis headset on Linux!
- Control ChatMix - enable and control balance between
MediaandChataudio streams - Configure any device via a simple configuration file
- Enable per-device features by adding them in the relative configuration file
- D-Bus based communication, to support different clients (alternative clients, Plasma extensions, etc)
Cross-checked against SteelSeries' own device specs, not just the previous v2 list — see docs/device_compatibility.md for the auto-generated, per-capability, per-PID breakdown of everything below marked ✅.
| Device | Supported | Notes |
|---|---|---|
| Arctis 1 Wireless (+ Xbox, + Cyberpunk 2077 Edition) | ✅ | Hardware EQ is adjustable, just not firmware-computed — the daemon calculates the filter curve itself and streams it to the AV6X02 DSP chip. |
| Arctis 5 (+ 2018, Dota 2 Edition, PUBG 2018 Edition) | ✅ | No connection-status or battery readout — the raw protocol reads those over a two-step exchange this project's HID layer doesn't support yet. Mic volume is also not exposed: the vendor spec's own description of that setting is ambiguous. |
| Arctis 7 (+ 2019 refresh) | ✅ | Hardware EQ is adjustable on both revisions, just not firmware-computed — same AV6X02 chip/mechanism as Arctis 1 Wireless. |
| Arctis 7+ / Destiny 2 Edition | ✅ | — |
| Arctis 7X+ (Xbox) | ✅ | — |
| Arctis 7P+ (PlayStation) | ✅ | — |
| Arctis 9 | ✅ | Hardware EQ isn't adjustable — its register format is entirely undocumented, unlike Arctis 7/1 Wireless/5. Software EQ via PipeWire is the substitute. |
| Arctis 9X | ❌ | Uses a transport (AVNERA/LIGHTXIO) this project's engine doesn't implement yet. |
| Arctis Pro (wired, standalone) | ✅ | Shares Arctis 5's entire control plane — same chip, same protocol, just a different PID. |
| Arctis Pro GameDAC | ✅ | RGB lighting, OLED bitmap content, and DTS Headphone:X v2 spatial audio aren't exposed — out of scope, same as every other device. EQ gain units are unconfirmed (no dB-per-unit formula anywhere in the vendor spec). Mic volume and the per-band live EQ push only refresh on reconnect — the DSL's live-update path only reads a single byte per field. |
| Arctis Pro Wireless | ✅ | Live updates from the base station's own OLED menu/dial aren't reflected until reconnect — the raw protocol's push-event report isn't documented well enough to wire up safely. |
| Arctis Nova 3 (wired) | ✅ | — |
| Arctis Nova 3 / 3X Wireless | ✅ | — |
| Arctis Nova 4 / 4X | ✅ | — |
| Arctis Nova 5 / 5X / 5X White | ✅ | — |
| Arctis Nova 7 / 7X / WoW / Diablo IV (original firmware) | ✅ | — |
| Arctis Nova 7 / 7X / 7P Gen 2 (native hardware or Gen 2 upgrade firmware) | ✅ | — |
| Arctis Nova 7P (original firmware) | ✅ | — |
| Arctis Nova Elite (+ SNG SKU) | ✅ | — |
| Arctis Nova Pro (wired, GameDAC Gen 2, incl. v2 / Xbox) | ✅ | — |
| Arctis Nova Pro Omni | ✅ | — |
| Arctis Nova Pro Wireless (+ X, + X White) | ✅ | — |
| Arctis GameBuds (+ X) | ✅ | Button remapping isn't exposed — no per-gesture-action UI/capability exists in this project yet. The 2.4G/BT parametric EQ has two independent 10-band profiles, both adjustable. |
| Arctis GameBuds Case (+ X) | ✅ | Battery/charging status and lid-open/closed only — the case has no audio settings of its own. |
Note: software EQ (10/15-band, applied via PipeWire regardless of what the headset itself supports) is always available as a substitute for hardware EQ. "No hardware EQ" above only means that headset's own onboard curve isn't adjustable — not that EQ itself is unavailable.
| Symbol | Description |
|---|---|
| ✅ | Supported by the v3 (Rust) daemon today |
| ❌ | Not ported yet |
lam-daemon: the background service (Rust) that communicates with your headset, managed by systemdlam-hidraw-helper: a minimal privileged sidecar that opens/dev/hidraw*on the daemon's behalf — the only process that needs elevated capabilitylam-gui: the graphical interface (Python/Qt6) to configure your headset and view its status
Choose the installation method that fits your setup:
- Arch Linux (AUR) - community-maintained package for Arch users
- Fedora (COPR) - prebuilt RPM packages for Fedora/Bazzite
- User-level installer - prebuilt, installs into
~/.local(works on SteamOS, no package manager needed) - Build from source - for all other Linux distros (Debian, Ubuntu, ...)
Installs everything under ~/.local (and ~/.config for the systemd user units), from signed prebuilt binaries. It also works on SteamOS, whose read-only root filesystem rules out normal packages.
curl --proto '=https' --tlsv1.2 -fsSL https://github.com/elegos/Linux-Arctis-Manager/releases/latest/download/install.sh | sh- Installing again upgrades.
--pre-releaseincludes pre-releases,--version X.Y.Zpins one,--dry-runonly verifies and checks prerequisites,--diagnoseprints a report for bug reports. ... | sh -s -- uninstallremoves everything it installed (--purgealso deletes your settings).- The release checksums are signed (SSH signature) and verified before anything is run. Every security-relevant step is announced and waits for you to press Enter (or Ctrl+C to abort); the only step needing root is giving the HID helper its capability (
setcap), viapkexec/sudo. - Needs
systemd(user session),libpulse, a PipeWire/PulseAudio server and glibc >= the version shown by--dry-run; if something is missing the installer stops before changing anything and tells you what.
Releases are signed with this SSH key (lam-release), fingerprint:
SHA256:ACwAZQm1Pfgrg2gv3CpS7jShGtASZKgmlaCYGsFoDA0
install.sh checks the signature of SHA256SUMS and then the tarball's checksum before extracting or running anything. To do the same yourself:
V=https://github.com/elegos/Linux-Arctis-Manager/releases/download/<tag>
curl -fsSLO $V/SHA256SUMS -O $V/SHA256SUMS.sig -O $V/lam-<version>-x86_64-generic.tar.gz
echo 'lam-release namespaces="lam-release" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGEJRaTQKrVoLHoNLxtYs4s5TXt6KILaEEElIi83LYfH' > allowed_signers
ssh-keygen -Y verify -f allowed_signers -I lam-release -n lam-release -s SHA256SUMS.sig < SHA256SUMS
sha256sum -c --ignore-missing SHA256SUMSThe ssh-keygen command must print Good "lam-release" signature with the fingerprint above. The installer itself is only protected by TLS (it is the root of this chain), so you can download install.sh from the release page and read it before running it.
Arch Linux users can install the community-maintained package from the Arch User Repository (AUR):
Install with your preferred AUR helper:
yay -S linux-arctis-manager
# using paru: paru -S linux-arctis-managerThe package's post-install hook applies the required capability to
lam-hidraw-helper and prints the two commands to enable the services:
systemctl --user daemon-reload
systemctl --user enable --now lam-hidraw-helper.service lam-daemon.serviceTip
To launch the system tray app automatically on login:
ln -sf /usr/share/applications/ArctisManagerSystray.desktop ~/.config/autostart/For packaging-specific issues, report directly to the AUR maintainers: @tonitch and @Aiyahhh.
Prebuilt RPM packages are published on COPR, split into two channels:
elegos/linux-arctis-manager- stable, tagged releases onlyelegos/linux-arctis-manager-testing- every alpha/beta/rc build, ahead of stable
Enable the channel you want and install the main package:
sudo dnf copr enable elegos/linux-arctis-manager
# or, for the testing channel:
# sudo dnf copr enable elegos/linux-arctis-manager-testing
sudo dnf install linux-arctis-managerOptionally add whichever UI shell(s) you want, on top of the main package:
sudo dnf install linux-arctis-manager-plasma-widget # KDE Plasma 6 widget
sudo dnf install linux-arctis-manager-gnome-extension # GNOME Shell 45+ extensionThe package's post-install scriptlet applies the required capability to
lam-hidraw-helper - just enable the services:
systemctl --user daemon-reload
systemctl --user enable --now lam-hidraw-helper.service lam-daemon.serviceTip
To launch the system tray app automatically on login:
ln -sf /usr/share/applications/ArctisManagerSystray.desktop ~/.config/autostart/On KDE Plasma 6, linux-arctis-manager-plasma-widget adds a native widget
to a panel like any other widget ("Add Widgets..." → "Arctis Manager");
right-click it for its Configure dialog. On GNOME Shell 45+,
linux-arctis-manager-gnome-extension adds an equivalent extension - enable
it with the Extensions app (or
gnome-extensions enable arctis-manager@giacomofurlan.name); its
Preferences page picks which status fields and quick settings it shows.
Fedora/Bazzite users: prefer the COPR packages above. Building
straight from source with the provided Makefile is the supported path for
every other distro (Debian, Ubuntu, ...).
cargo/rustc(stable toolchain)uv- Python 3.10+
libcap(forsetcap) — usually already installed- Kernel headers for
hidraw/udev:libudev-dev(Debian/Ubuntu),systemd-devel(Fedora),udev(Arch, already present)
git clone https://github.com/elegos/Linux-Arctis-Manager.git
cd Linux-Arctis-Manager
make build # cargo build --release + uv sync
sudo make install # installs binaries, systemd units, desktop entries; applies setcap
make enable # enable + start lam-hidraw-helper and lam-daemon (no sudo)make install accepts the usual PREFIX/DESTDIR overrides — see make help
for the full variable list, or the packaging recipes in packaging/arch/PKGBUILD
and packaging/fedora/linux-arctis-manager.spec for reference.
Warning
PREFIX defaults to /usr/local, not /usr — the AUR/COPR packages'
prefix. The two installs coexist on disk without file conflicts, but you'll
end up with two separate sets of binaries, systemd units and desktop
entries. Uninstall one before installing the other (see
Uninstall / Cleanup) rather than running both side
by side.
Tip
To launch the system tray app automatically on login:
ln -sf /usr/share/applications/ArctisManagerSystray.desktop ~/.config/autostart/
# or, if installed with PREFIX=/usr/local:
ln -sf /usr/local/share/applications/ArctisManagerSystray.desktop ~/.config/autostart/Tip
On KDE Plasma 6, make install also installs a native Plasma widget
(packaging/plasma6/) that talks directly to the daemon over D-Bus — no
separate tray process needed. Add it to a panel like any other widget
("Add Widgets..." → "Arctis Manager"); right-click it for its Configure
dialog to pick which status fields and quick settings it shows.
On GNOME Shell 45+, make install also installs an equivalent GNOME
Shell extension (packaging/gnome-shell/). Enable it with the Extensions
app (or gnome-extensions enable arctis-manager@giacomofurlan.name); its
Preferences page picks which status fields and quick settings it shows.
Choose the method that matches your installation method:
Use the system package manager — the pre-removal hook stops and disables the services for you:
sudo pacman -Rns linux-arctis-managerRemoving the main package also pulls in whichever UI-shell subpackages you
installed, since they Requires: it:
sudo dnf remove linux-arctis-managerFrom the cloned repository:
make disable # stop + disable the services (no sudo)
sudo make uninstall # remove binaries, systemd units, desktop entriesThen remove your local settings if you don't intend to reinstall:
rm -rf ~/.config/arctis_managerNote
If you're coming from a v2 install, also remove the old udev rule — v3 doesn't need one:
sudo rm -f /etc/udev/rules.d/91-steelseries-arctis.rules /usr/lib/udev/rules.d/91-steelseries-arctis.rules
- Run the daemon:
cargo run --release --manifest-path daemon/Cargo.toml --bin lam-daemon - Run the GUI against it:
uv run lam-gui --no-enforce-systemd(skips the systemd-managed-daemon check, since you're running one by hand) - Run the daemon's tests:
cargo test --manifest-path daemon/Cargo.toml
- Architecture overview
- Device DSL reference — the YAML format used to describe a device
- D-Bus interface reference
- Device compatibility matrix — auto-generated from the v3 device configs; the table above is the human-curated summary, this is the exhaustive per-capability one
- Equalizer — band modes, backends, presets, per-app overrides
- Voice Changer — usage and architecture
- Wireshark tutorial
- Migrating from v2 to v3
- Release & distribution pipeline — versioning/channels, the COPR/PPA/OBS publishing design, and the manual setup checklist
- App or headset becomes unresponsive:
systemctl --user restart lam-hidraw-helper.service lam-daemon.service - Newly supported device does not appear after an update:
systemctl --user daemon-reload && systemctl --user restart lam-daemon.service, or call theReloadConfigsD-Bus method to pick up new/changed device YAML files without a restart. - App fails to start with a Qt xcb platform error: install
libxcb-cursor0(Debian/Ubuntu) orxcb-util-cursor(Arch/Fedora). Required on non-Qt desktop environments like Cinnamon.
Linux Arctis Manager is a community-driven project - the more hardware data and feedback we get, the better support becomes for everyone.
Join us on:
If your headset isn't listed in the support table, we likely just need your hardware IDs to get started. Run lam-cli tools arctis-devices and share the output on Discord or Fluxer.
Linux Arctis Manager is licensed under the GPL-3.0 and is not affiliated with or endorsed by SteelSeries ApS. SteelSeries, Arctis, ChatMix, and SteelSeries GG are trademarks of their respective owners.

