07 / 07 · Rust · syngui · hidraw
ardor-mouse
A native Linux configuration tool for ARDOR GAMING wireless mice — a replacement for the vendor's Windows-only utilities. Supported now: Edge Air Ultra and Rukh; new models are added as one table each.
- Licence
- MIT
- Platform
- Linux · ARDOR GAMING mice
- Packages
- ardor-mouse (AUR)
- Status
- 0.3.0 · Edge Air Ultra, Rukh

What it is
The vendor ships no Linux software and publishes no protocol. Everything here was reverse-engineered: the Windows utilities were decompiled, their USB traffic compared against live mice, and every EEPROM field verified on real dumps.
Written in Rust on syngui, it talks to the mouse directly through hidraw — no kernel module, no daemon, no root. Settings are read from the mouse's own memory and only the changed regions are written back, so the tool never overwrites what it does not understand.
It is built for the whole ARDOR GAMING line on the JM03 (Compx) controller: the mice share one command set and EEPROM map, and everything that differs between models — sensor, DPI codec, polling rates, report types — lives in one table per model. Rukh support came from a contributor, @Metisav, tested on a real Rukh.

Key features
- Live mouse, as in Lenovo Legion Space: the picture of your mouse plays the lighting effect at the chosen speed and brightness, the DPI indicator flashes in the stage colour, and hovering a button highlights it on the mouse.
- DPI: up to 8 stages (6 on the Rukh), 50–19 000 DPI on the Edge Air Ultra and 50–30 000 on the Rukh, each with its own indicator colour.
- RGB lighting (Edge Air Ultra): static, breathing, flow, neon, marquee, colour breathing or off — colour, speed, brightness, lights off while moving.
- Buttons: remap all 6 — clicks, back / forward, DPI cycle / up / down, or disable; macros and the fire button are kept as they are.
- Sensor: polling rate 125–1000 Hz (2000 Hz on the Rukh), lift-off distance 1 / 2 mm (0.7 mm on the Rukh), debounce, angle snapping, ripple control, sleep timeout; Motion Sync and LP/HP sensor mode on the Rukh.
- Battery level and charging state.
- 5 interface languages: English, Russian, Ukrainian, Kazakh, German — from the system, switchable from the title bar without a restart.
- Its own window frame with animated page transitions; --probe [--write-test] checks the mouse from the terminal (write and revert verified byte for byte); --simulate [rukh] runs without hardware.
Install
yay -S ardor-mouse # or: paru -S ardor-mouseThe package installs the binary, a menu entry, icons and a udev rule that gives the logged-in user access to the mouse; replug the receiver once if it was already plugged in. Other distributions: the release archive ardor-mouse-<version>-x86_64-linux.tar.gz with sudo ./install.sh. From source: cargo build --release plus the udev rule from packaging/.
Requirements and limitations
- Supported mice: Edge Air Ultra (PixArt PMW3370; receiver 25a7:fa7c, cable 25a7:fa7b) and Rukh (PixArt PAW3950; receiver 3554:f53e, cable 3554:f53d). The list grows: other ARDOR GAMING mice on the JM03 controller are added as a model table.
- The Rukh's cable mode is taken from the vendor's configuration and not tested — on the tested unit the cable only charges.
- If the mouse is asleep the receiver answers but its memory is unreachable — move the mouse and the settings load by themselves.
- Unofficial and not affiliated with ARDOR GAMING. EEPROM writes are done the way the vendor utilities do them, but at your own risk.
Screenshots
- (open full size)

Remapping the six buttons, highlighted on the mouse - (open full size)

Sensor: polling rate, lift-off distance, debounce - (open full size)

ARDOR GAMING Rukh: 30 000 DPI, 2000 Hz, Motion Sync - (open full size)

The interface in Russian — one of five languages
Measured, not promised
How it is tested
The protocol was reverse-engineered from and tested on real mice — the Edge Air Ultra on my desk and the Rukh by @Metisav; the tests decode packets and EEPROM dumps captured from both.
Every number here is measured on my own hardware. github.com/VitaminDB/ardor-mouse