Desktop companion for Soundcore headphones. Premium UI, open protocol, Rust-powered.
"Because some mysteries are best solved in silence."
Warning
Mabel is under active development and not yet stable. The Bluetooth protocol layer is being validated — device communication may not work on all firmware versions.
Mabel is a desktop application for controlling Soundcore headphones from Windows (and eventually macOS/Linux). It replicates the mobile Soundcore app experience with a premium dark UI built for desktop.
Named after Mabel Mora from Only Murders in the Building — always wearing her headphones, always investigating.
| Component | Status | Notes |
|---|---|---|
| React UI (5 pages) | ✅ Working | Dark theme, animations, all controls |
| Protocol parser | ✅ Working | 37 tests passing, A3062 state decode |
| Command builders | ✅ Working | 9 outbound commands |
| RFCOMM discovery | ✅ Working | Finds paired Soundcore devices |
| RFCOMM data channel | ✅ Working | Vendor UUID 0CF12D31-...-3062 identified and connected |
| Real-time control | 🔧 In progress | Commands sent, validating toggle state accuracy |
| System tray | ✅ Working | Minimize to tray, show/hide |
| Settings persistence | ✅ Working | JSON config file |
- Connect via Bluetooth RFCOMM (Windows)
- Battery level display
- ANC modes (Noise Cancelling / Transparency / Normal) with adaptive levels
- 10-band equalizer with presets
- Dolby Audio, LDAC, Side Tone toggles
- Auto Power Off configuration
- Wind Noise Reduction
- Button configuration
- Dual Connections management
- Real-time bidirectional communication (in progress)
| Model | Name | Status |
|---|---|---|
| A3062 | Soundcore Space One Pro | In Progress |
More devices welcome via community contributions.
mabel/
├── crates/
│ ├── mabel-protocol/ # Packet framing + A3062 parser (37 tests)
│ ├── mabel-transport/ # Bluetooth RFCOMM abstraction (Windows)
│ └── mabel-core/ # Device manager (planned)
├── apps/
│ └── mabel-app/ # Tauri v2 + React frontend
│ ├── src/ # React UI (5 pages, 15+ components)
│ └── src-tauri/ # Rust backend (device loop, commands, tray)
└── docs/
Each crate is independently testable. Adding support for a new device means creating a new module in mabel-protocol without touching anything else.
- Backend: Rust (workspace with 3 crates)
- Frontend: React 19 + Tailwind CSS 4 + Framer Motion + Radix UI
- Desktop: Tauri v2
- Transport: Windows RFCOMM via WinRT (
windowscrate) - Protocol: Based on OpenSCQ30 reverse engineering
cd apps/mabel-app
npm install
npm run tauri devcargo test -p mabel-protocolContributions are welcome! If you own a Soundcore device and want to help:
- Check the OpenSCQ30 docs on how to capture Bluetooth packets
- Open an issue with your device model and captured state update packet
- PRs for new device support, UI improvements, or platform support are appreciated
- Protocol knowledge from OpenSCQ30 by Oppzippy
- UI inspiration from baseus-desktop and the official Soundcore mobile app
MIT