Unofficial Android app that controls the RGB lighting of Logitech G102/G203 LIGHTSYNC mice directly over USB — no PC, no G HUB, no root.
Not affiliated with, endorsed by, sponsored by, or supported by Logitech.
- RGB on/off
- Custom solid colors (presets or any hex value)
- Brightness (native for cycle-class effects; RGB scaling for solid)
- Effects: Solid, Cycle, Wave (direction), Breathe, Blend, Zones
- Three-zone colors
- Phone and tablet layouts, portrait and landscape
- USB diagnostics with copy/share
- Fully local: zero permissions, no network, no analytics
Lighting commands are sent only when you press a button — never on startup, rotation, or reconnect.
| Status | Device | Notes |
|---|---|---|
| ✅ Tested | Logitech G102 LIGHTSYNC (046D:C092) |
Samsung Galaxy Tab A9+, Android 16, USB OTG |
| 🧪 Expected | Logitech G203 LIGHTSYNC | Same USB identity and command set; untested |
See COMPATIBILITY.md for the full matrix and how to report your hardware.
- Download the APK from Releases
- Allow installs from your browser when Android asks
- Connect the mouse via a USB OTG adapter
- Open the app and tap GRANT USB ACCESS
Requires Android 7.0+ with USB Host. No root, no PC.
- RGB OFF turns the lighting off; RGB ON restores your saved setup
- Pick a color and APPLY COLOR
- Pick an effect, adjust speed or direction, APPLY
Lighting is runtime control: power-cycling the mouse restores its onboard configuration. The app never writes the mouse's onboard memory.
The app talks HID++ to the mouse over Android's USB Host API using HID SET_REPORT control transfers. Packet builders are pure Kotlin with no Android imports, unit-tested against reference vectors. See ARCHITECTURE.md and PROTOCOL.md.
./gradlew assembleDebug # debug APK
./gradlew testDebugUnitTest # unit tests
./gradlew lintDebug # lintJDK 17, Android SDK 35. GitHub Actions builds every push.
See TROUBLESHOOTING.md.
See CONTRIBUTING.md. Hardware compatibility reports are especially welcome — include VID/PID from the app's diagnostics.
MIT — LICENSE. Third-party notices: THIRD_PARTY_NOTICES.md; licensing rationale: LICENSING.md.