An unofficial, open-source desktop app for Sony headphones โ Noise Cancelling, Ambient Sound, EQ, DSEE and battery, without the phone.
Features ยท Download ยท How it works ยท Contributing ยท Credits
ย ย
Sony locks headphone settings behind their mobile-only Sound Connect app. If you live on a laptop, you're stuck. SonyBridge talks to the headphones directly over Bluetooth RFCOMM using Sony's reverse-engineered binary protocol โ no phone required.
The original SonyHeadphonesClient only spoke Sony's first-generation protocol, so newer headsets (WH-CH720N, XM4/XM5, WF-series, LinkBudsโฆ) just timed out on connect. SonyBridge adds full second-generation ("v2") protocol support, a native SwiftUI app on macOS, and a matching modern UI on Windows/Linux.
- ๐๏ธ Ambient Sound Control โ Noise Cancelling ยท Ambient Sound (0โ20 levels) ยท Off
- ๐ฃ๏ธ Focus on Voice passthrough
- ๐๏ธ Equalizer โ presets and a full Manual mode with 5 bands + Clear Bass
- โจ DSEE โ Sony's audio upscaling for compressed sources
- ๐ Battery level โ live percentage, including per-earbud + case for TWS models
- ๐ง Codec & firmware readout
- ๐งฉ Capability-gated extras โ Auto Power-Off ยท Speak-to-Chat ยท Adaptive Volume (only shown when your device supports them)
- ๐ผ๏ธ Device hero image โ your headphones' official Sony product render
- ๐ Live button sync โ changes made on the headset reflect in the app
- ๐ Auto-connect to your already-paired Sony headset
- ๐งฌ Dual-protocol โ auto-detects and speaks either protocol generation
- ๐ Modern UI โ dark, minimal, shaped after Sony's own app (SwiftUI on macOS, Dear ImGui on Windows/Linux)
| Platform | Get it | Notes |
|---|---|---|
| macOS |
|
macOS 11+ ยท Apple Silicon & Intel |
| Windows | ๐งช Beta โ testers wanted | |
| Linux | GLFW/OpenGL build |
๐ก After launching, connect your headphones in your OS Bluetooth settings first, then open SonyBridge and hit Connect. Keep audio playing โ Sony headsets drop the control link when idle to save power.
macOS install notes (Gatekeeper)
The app is ad-hoc signed (not notarized โ no paid Apple Developer account). The Homebrew cask clears the quarantine flag for you. For a direct download, allow it once:
xattr -dr com.apple.quarantine /Applications/SonyBridge.appโฆor right-click the app โ Open โ Open. Homebrew also asks you to trust the third-party tap the
first time (brew trust AmitRajput-Dev/tap).
| Status | Devices |
|---|---|
| โ Verified | WH-CH720N, Sony ULT WEAR (WH-ULT900N) |
| ๐ข Expected (v2, over-ear โ NC/Ambient/battery/EQ) | WH-1000XM5, WH-1000XM6, WH-XB910N, WH-CH520 |
| ๐ก v2 earbuds (controls work; battery format differs) | WF-1000XM4, WF-1000XM5, WF-C700N, LinkBuds S |
| ๐ต Legacy (v1 protocol โ NC/Ambient only) | WH-1000XM4, WH-1000XM3, WH-1000XM2, WH-XB900N, MDR-XB950BT |
Only the WH-CH720N is fully hardware-verified. Others share the same protocol family, so the basics should work โ per-model quirks are untested. Reports and PRs for other devices are very welcome.
macOS (native SwiftUI app)
Requires Xcode 14+.
git clone --recurse-submodules https://github.com/AmitRajput-Dev/SonyBridge.git
open SonyBridge/Client/macos/SonyHeadphonesClient.xcodeprojThen โR.
Windows / Linux (Dear ImGui UI)
Windows (CMake + MSVC, from a Developer Command Prompt):
cd Client && mkdir build && cd build
cmake .. && cmake --build . --config ReleaseLinux (sudo apt install libbluetooth-dev libglfw3-dev libdbus-1-dev):
cd Client && mkdir build && cd build
cmake .. && cmake --build .Keep the built binary next to its resources/ folder (device hero images load from resources/devices/).
Sony headphones expose a vendor RFCOMM/SPP service. Commands are framed as:
<START 0x3e> ESCAPE( <TYPE> <SEQ> <4-byte BE length> <PAYLOAD> <checksum> ) <END 0x3c>
Two protocol generations exist, distinguished by their SDP service UUID:
- v1 โ
96CC203E-โฆโ WH-1000XM3 and older - v2 โ
956C7B26-โฆโ WH-CH720N, Sony ULT WEAR, XM4/XM5, WF-series, LinkBudsโฆ
SonyBridge tries v1 first, falls back to v2, and remembers which succeeded. The v2 path adds the mandatory init handshake and per-frame host-ACK the newer devices require, plus battery, EQ and DSEE inquiry commands. Protocol byte layouts were cross-referenced against GadgetBridge's Sony implementation.
Contributions are very welcome โ especially device reports and testing on real hardware.
- ๐ Found a bug / have a device to report? Open an issue with your model and what happened.
- ๐งช Want to test? Grab a release and tell us how it behaves on your headset (a screenshot helps a lot).
- ๐ง Code? Fork, branch, and open a PR against
main. CI builds macOS, Windows and Linux on every PR.
SonyBridge builds directly on the work of:
- SonyHeadphonesClient by Plutoberth, Mr-M33533K5 & contributors โ the original cross-platform client and protocol foundation
- semvis123 โ the original macOS port
- GadgetBridge โ reverse-engineered v2 protocol reference
Community contributors & testers:
- @CrisProCrack โ WH-1000XM4 (v1) connect fix
- @Sebsdnl โ Linux/Wayland crash fix & ULT WEAR support
- u/More_Way_6784, @joelslaby โ WH-1000XM4 hardware testing
If SonyBridge is useful to you, consider supporting it โ it keeps the reverse-engineering going:
- ๐ GitHub Sponsors โ worldwide (cards, one-off or monthly)
- ๐ฎ๐ณ Razorpay / UPI โ for supporters in India
Starring the repo helps too. โญ
This project is not affiliated with, endorsed by, or connected to Sony. It talks to your headphones using a reverse-engineered protocol, for interoperability. Use at your own risk.