Native macOS menu bar app to control Sony WH-1000XM6 headphones — the desktop Sound Connect that Sony never shipped.
- Noise control: Noise Cancelling / Ambient / Off, ambient level (1–20), focus-on-voice
- Battery: live % in the panel (updates pushed by the headphones)
- Equalizer: presets (Heavy/Clear/Hard/Soft/Bright/…) + custom 10-band EQ (±6 dB)
- Listening mode: Standard / Background Music (My Room, Living Room, Cafe) / Cinema
- User EQ slots: the custom EQs you saved in Sound Connect (User 1–5) are stored on the device and selectable from the preset picker
- Speak-to-Chat and DSEE Extreme toggles
- Auto-reconnect when the headphones power back on or come into range
- State syncs from the headphones on connect and live when you change things on the device
The XM6 exposes Sony's proprietary MDR-v2 protocol over Bluetooth RFCOMM
(SDP UUID 956C7B26-D49A-4BA8-B03F-B17D393CB6E2). Frame layer + command
payloads ported from the open-source reverse engineering in
mos9527/SonyHeadphonesClient and
Gadgetbridge, verified live
against an XM6 on firmware 3.0.0.
./make-app.sh # builds build/XM6 Control.app
open "build/XM6 Control.app"Requirements: macOS 14+, XM6 paired in System Settings → Bluetooth.
swift run XM6Probe "00 00" "66 19" # send raw hex payloads, log all frames
XM6_DEBUG=1 swift run XM6Control # run app with frame logging on stderrTargets: SonyProtocol (framing, RFCOMM transport, ACK/sequence session),
XM6Control (menu bar app), XM6Probe (CLI protocol probe).