Skip to content

Repository files navigation

Mabel

License: MIT Rust Tauri v2

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.

What is this?

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.

Current Status

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

Features (v0.1 target)

  • 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)

Supported Devices

Model Name Status
A3062 Soundcore Space One Pro In Progress

More devices welcome via community contributions.

Architecture

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.

Tech Stack

  • Backend: Rust (workspace with 3 crates)
  • Frontend: React 19 + Tailwind CSS 4 + Framer Motion + Radix UI
  • Desktop: Tauri v2
  • Transport: Windows RFCOMM via WinRT (windows crate)
  • Protocol: Based on OpenSCQ30 reverse engineering

Building

Prerequisites

  • Rust (stable, 1.75+)
  • Node.js (20+)
  • Windows 10/11 with Bluetooth adapter

Development

cd apps/mabel-app
npm install
npm run tauri dev

Tests

cargo test -p mabel-protocol

Contributing

Contributions are welcome! If you own a Soundcore device and want to help:

  1. Check the OpenSCQ30 docs on how to capture Bluetooth packets
  2. Open an issue with your device model and captured state update packet
  3. PRs for new device support, UI improvements, or platform support are appreciated

Credits

  • Protocol knowledge from OpenSCQ30 by Oppzippy
  • UI inspiration from baseus-desktop and the official Soundcore mobile app

License

MIT

About

Desktop companion for Soundcore headphones. Premium UI, open protocol, Rust-powered. (Early alpha)

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages