Skip to main content

konexp – configure the ROCCAT Kone XP (and Kone XP Air) on Linux

English | Deutsch

Command line tool and Qt GUI for the ROCCAT Kone XP (USB 1e7d:2c8b), replacing the Windows-only ROCCAT Swarm. Kone XP Air support (cable 1e7d:2cb2, dongle 1e7d:2cb6) is experimental, see below. Settings are written straight into the mouse's onboard memory and stay active without any software running.

Buttons tab

Features

  • Profiles: 5 profiles, select the active one, profile color
  • DPI: 5 stages (50–19000 in steps of 50), enable/disable stages, active stage
  • Sensor: polling rate (125–1000 Hz), angle snapping, debounce (0–10 ms); lift-off is read-only
  • Lighting: effect (Fully Lit, Blinking, Breathing, Heartbeat, Photon FX, Colorwave), speed, brightness, color per LED group, LED timeout
  • Buttons: 15 buttons × 2 layers (normal / Easy-Shift): mouse, DPI, profile, media and navigation functions, keyboard shortcuts with modifiers, Easy-Aim
  • Safety: changes are collected and shown as a diff before writing; every write is backed up first, read back afterwards and restored automatically if the result differs
  • Backup/restore of all profiles, reset to factory defaults, demo mode without a mouse

Not supported yet: macro editor (existing macros are shown and preserved), lift-off calibration, AIMO (software-driven lighting), host functions such as "open program" (Swarm runs those on Windows).

The user interface is in English by default; German is available via --lang de (GUI), KONEXP_LANG=de (GUI and CLI) or View → Sprache / Language (takes effect after a restart). Translations live in konexp/locale/*.po (gettext); after changing texts run python3 -m konexp.i18n extract.

Installation

Requirements: Linux, Python ≥ 3.10.

git clone https://github.com/cakebomb999/konexp.git
cd konexp

Allow access to the mouse without root (once):

sudo cp udev/70-kone-xp.rules /etc/udev/rules.d/
sudo udevadm control --reload
sudo udevadm trigger

Install with uv (provides konexp and konexp-gui, PySide6 included):

curl -LsSf https://astral.sh/uv/install.sh | sh   # only if uv is not installed yet
uv tool install '.[gui]'

Update after git pull with uv tool install --reinstall '.[gui]', remove with uv tool uninstall konexp.

Alternatively use the system PySide6 and run from the repository directory (see Usage): Arch sudo pacman -S pyside6, Debian ≥ 13 / Ubuntu ≥ 25.10 sudo apt install python3-pyside6.qtwidgets.

Usage

After uv tool install, konexp-gui and konexp replace python3 -m konexp.gui / python3 -m konexp below.

GUI (from the repository directory):

python3 -m konexp.gui          # with the mouse
python3 -m konexp.gui --demo   # without a mouse, writes nothing

Command line:

python3 -m konexp status                 # show all profiles
python3 -m konexp profile 2              # activate profile 3 (index 0–4)
python3 -m konexp dpi 2 4 3200           # profile 3, stage 5 to 3200 DPI
python3 -m konexp dpi-active 2 4         # profile 3: make stage 5 active
python3 -m konexp restore <backup.bin>   # write a saved report back
python3 -m konexp dump                   # save everything as a diagnostic JSON file (read-only)

Backups are stored in ~/.local/share/konexp/backup/.

Kone XP Air (experimental)

The Kone XP Air stores the same data formats as the Kone XP, wrapped in a different transport (docs/PROTOCOL-XP-AIR.md). Reading is confirmed on a real mouse over cable and dongle, writing the profile settings over the cable. Buttons, debounce and profile switching are written the same way but not yet confirmed. Not supported: charging dock lighting, macros, battery display.

If something looks wrong, please run this (reads only, changes nothing) and attach the file to a GitHub issue:

python3 -m konexp dump                # writes konexp-dump-<date>.json
python3 -m konexp.gui                 # check DPI, lighting and buttons against your setup

Writes are backed up and read back as for the Kone XP. KONEXP_AIR_WRITE=0 makes konexp read-only. Without a mouse: python3 -m konexp.gui --demo air.

Adding your mouse

Own another ROCCAT or Turtle Beach mouse? Run python3 -m konexp dump and open an issue with the mouse support form, attaching the file. For mice konexp does not know, the dump sends nothing to the device and needs no udev rule: it only lists USB IDs and HID report descriptors from /sys. That is enough to find the matching Swarm plugin and start the protocol analysis.

Safety

konexp only writes the reports that Swarm writes during normal use. Firmware updates, the device factory-reset command (0x09) and reports Swarm never uses are blocked. Tested with firmware 1.09. Use at your own risk. For the Kone XP Air, factory reset (0x49), pairing, bootloader and firmware-update commands are blocked.

Protocol

The configuration protocol is documented in docs/PROTOCOL.md and docs/PROTOCOL-XP-AIR.md (German). It was determined for the purpose of interoperability (Art. 6 Directive 2009/24/EC, § 69e UrhG) by analysing ROCCAT Swarm and measuring a real mouse. This repository contains no code or files from the manufacturer.

Tests

python3 -m pytest

The tests run without a mouse (demo backend with factory data).

License

GPL-3.0-or-later, see LICENSE.

ROCCAT, Kone, Swarm, AIMO and Easy-Shift are trademarks of their respective owners. This project is not affiliated with ROCCAT or Turtle Beach.

Metadata

Release files for konexp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for konexp 0.1.0
File Size Uploaded
konexp-0.1.0.tar.gz 78.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for konexp 0.1.0
File Interpreter ABI Platform
konexp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 156.2 kB

Release files / konexp-0.1.0.tar.gz

Download URL konexp-0.1.0.tar.gz
Size 78.9 kB
Tags Source
SHA-256 checksum
How to use checksums
9f986c6880bf5ab1d5b2110c3286dbb28b4496368713998b966c5634822df734
BLAKE2b-256 checksum
How to use checksums
cb2c7dcd2c2a2fee44da26140d188cc8433c0d8391293ed9d72efcc87dc80430
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.

Transparency log

Release files / konexp-0.1.0-py3-none-any.whl

Download URL konexp-0.1.0-py3-none-any.whl
Size 77.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ccde7cfb592e13dfa24f8ca3afc19ff2985e955d372e5730b1e6cad2e1346104
BLAKE2b-256 checksum
How to use checksums
2ff95bd56313a9537b3ae80dc691cc67012019ef5d7e366ab8b3f73039df2dfa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page