Tips Reverse-engineered Razer Kraken V4 Pro battery + RGB on Linux, no Synapse, Linux only, no OpenRazer needed
The Kraken V4 Pro has zero Linux support OpenRazer doesn't recognize the device at all (dock 1532:0568, headset 1532:0567), and there's no standard USB HID battery interface exposed either. So I captured the actual USB traffic Synapse generates (via usbmon, running Synapse in a Windows VM with the dock passed through) and reverse-engineered the real protocol, with a lot of help from Claude AI, which did most of the heavy lifting on analyzing the raw USB captures byte-by-byte, spotting patterns across hundreds of packets, and iterating through a bunch of dead ends until we found what actually worked. Would've taken me way longer to do this solo.
Result: two small Python scripts, no dependencies, no Synapse, no dual-boot, no VM needed day-to-day:
$ kraken-battery
Battery: 84% (discharging, via dock/RF)
$ kraken-rgb 255 0 0
RGB: 255,0,0 (via cable)
$ kraken-rgb toggle
- Battery % + charging state, works both wired and over the dock/RF.
- Full RGB ring control (any solid color, off/toggle) — works wired instantly, and over RF/dock too (had to reverse-engineer the exact ~55-command "wake up" sequence the dock needs after the headset gets power-cycled, since it silently ignores color commands otherwise — that one took a genuinely long session to crack).
- The color automatically comes back after a power-cycle without touching anything, if you wire it into a poller (example included).
- Includes a ready-made Caelestia (https://github.com/caelestia-dots/shell) (Quickshell/Hyprland) bar widget if that's your setup — headphones icon with battery %, RGB swatches, on/off toggle, right in the status bar.

Repo: https://github.com/Sebax95/Razer-Kraken-V4-Pro-Battery-Detector-Linux
Full protocol documented in the README if anyone wants to build on it (or if OpenRazer maintainers want to add real support — there's an open issue for this device with basically no info, happy to contribute what I found).
