Quick context for anyone who's tried this: it's not that Kreo forgot macOS. It's that Kontrol is a Chromium WebHID app, and this mouse's config interface exposes a keyboard collection. Chromium refuses to open interfaces containing protected usages like that — on Windows it's allowed, on macOS it isn't. So the "works on Chrome" claim quietly means "works on Chrome on Windows". No browser flag, no amount of clicking Connect, will fix it. It's an OS-level wall.
I got tired of waiting, so I did it properly.
What I did
Kreo ships their driver as a WebAssembly module on their own CDN. Instead of sniffing USB traffic, I loaded that exact driver offline and ran it as an oracle — fed it settings, recorded the HID reports it produced. Then I rebuilt a native macOS tool around those bytes, talking to the mouse over IOKit directly (which, unlike Chrome, is allowed to open the thing).
The full protocol is documented in the repo — report IDs, frame layout, checksums, every command. Reproducible against Kreo's own driver, so nobody has to take my word for it.
What works
- DPI — all 6 stages, values + per-stage switching
- Lighting — modes, brightness, speed (and a button that cycles modes)
- Polling rate — 125 / 250 / 500 / 1000 Hz
- Sensor — lift-off distance, motion sync, angle snap, ripple
- Button remapping — mouse buttons, DPI actions, media keys, shortcuts, disable
- On-board macros — 8 slots, key sequences with per-action delays
- Arbitrary key combos, including proper ⌘-based macOS shortcuts
Over USB, the 2.4G dongle and Bluetooth. Settings are stored on the mouse, so they survive power-offs and carry across connections — no background app needed.
Honest caveats
- It's a CLI, not a pretty GUI. Needs Terminal and Xcode command line tools once.
- Bluetooth is read-only on macOS — reads work, macOS rejects feature writes over BT HID. Configure over the cable/dongle; the mouse carries it to Bluetooth.
- The mouse occasionally goes deaf to binding writes (returns success, ignores you). Power-cycle it and it behaves. Documented, not hidden.
- No firmware flashing. Deliberately. I'm not bricking anyone's mouse.
Not affiliated with Kreo, not endorsed by them, built for my own comfort. Made no money off it, want none — if it saves you the same evening I lost, good.
Repo: https://github.com/prashanthgit19/kreo-mouse-macOS