A spiritual successor to Plutoberth's original SonyHeadphonesClient - now with standardized support for newer devices and more platforms.
There's no Release build for this branch yet - but you can always grab the latest nightly builds, or use the Web Version.
This branch is expected to be merged/released once general support for all legacy (v1 protocol) devices is reached.
These legacy devices are currently being verified against:
- WH-1000XM2, pending retest
- WH-1000XM3
- WH-1000XM4 (tested by @Amrsatrio)
Track the progress in Support for V1/Legacy devices such as XM3s and XM4s - PR #56.
Feel free to submit support status in new Issues regarding v1 (XM4 and older) devices. We really need more volunteers :(
NOTE: These apply to libmdr-bt (the Bluetooth platform backend) and client (the UI). For libmdr, the protocol library itself is platform agnostic.
The architectures (x64, etc) shown here are the ones built by GitHub Actions, and are available in nightly builds.
| Platform | Support Status | Maintainers |
|---|---|---|
Windows (x86/x64/ARM64, Windows XP SP2 and up) |
Full Support | @mos9527, @Amrsatrio |
Linux (x86/x64/ARMv7/ARM64) |
Full Support | @mos9527 |
| macOS (Universal) | Full Support | @mos9527 |
iOS (ARM64, 15.0+) |
Full Support, manual build/install required | @mos9527 |
Android (ARMv7/ARM64, 5.0+) |
Supported, client only |
@mos9527 |
Web (WASM32, Emscripten) |
Full Support | @mos9527 |
HarmonyOS (ARM64, OpenHarmony) |
Supported, client only, manual build required |
@mos9527 |
For device support, refer to docs/device-support. If the feature support status for your own device is missing/incorrect/untested there, feel free to submit an Issue so we can work on it!
Besides the broad native platform support, the client is also available as a Progressive Web App (PWA) with full UI/feature parity with other platforms.
Live version is available at: https://mos9527.com/SonyHeadphonesClient/
A Web Serial-supporting browser is required. You can expect the app to work on:
- Desktop Chrome (89+), and Chromium derivatives (also 89+, e.g. Edge, Opera)
- Android Chrome (148+)
- Desktop Firefox (151+)
Compatibility builds are offered for certain platforms, where limited sets of features are made available to make it run there. These builds are suffixed with -compatibility, and are available in nightly and Releases (TBD).
Currently, the following compatibility builds are available.
Available as SonyHeadphonesClient-win-x64-compatibility.exe and SonyHeadphonesClient-win-x86-compatibility.exe in the CI. See SHC Developer's Guide for build flags.
These builds lower the minimal required Windows version from Windows 8.1 in the regular builds to Windows XP SP2.
- This build has no Bluetooth LE support, which is only introduced in Windows 8.1 and above.
- Threading is disabled in this build, see e636d54.
- YY-Thunks is used to provide compatibility for Windows XP. Otherwise this would've been limited for Windows 7 and above.
The Client app uses your system's locale settings to select its application locale (AppLocale) and the default font your OS provides.
Locale can be overridden by using --locale <locale>.
- For the Web version, this can be manually specified in the URL via
...?locale=jp, e.g.https://mos9527.com/SonyHeadphonesClient/?locale=jp.
The following locales are supported:
| Locale | Language | Localizer |
|---|---|---|
| default | Default (English) | - |
| en | Default (English) | - |
| sc | 简体中文/Simplified Chinese | @mos9527 |
| tc | 繁体中文/Traditional Chinese | @mos9527 |
| jp | 日本語/Japanese | TBD |
| kr | 한국어/Korean | TBD |
Additionally, for the Desktop (non-Web) client, --font <file-path> optionally loads an external font instead of the default font selected for the locale.
- Running
./SonyHeadphonesClient.exe --locale jp --font NotoSansCJKjp-Regular.otfselects the Japanese application locale and the specified Noto Sans font.
See the SHC Developer's Guide for building instructions and development details.
See also Contributing for basic guidelines.
Extensive documentation is also available in the source files. Refer to the respective README files in each source folder to understand what they do!
On Linux, you may not see player metadata (track title, artist, etc.) despite correct output from the playerctl metadata command,
while your device has proper AVRCP support (e.g. it works on other platforms).
This mostly occurs with multipoint setups, and is mostly an implementation problem.
- You (or your distro) may have a misconfigured MPRIS service. One way to remedy this
is to manually run
mpris-proxy(available in thebluez-tools/bluez-utilspackage) in the background, or as a systemd service. - See also
- Alternatively, the Linux Client App can be used as a fallback. This was introduced in #63, where the wearing status of the device is used to control the host player status, thus bypassing AVRCP controls.
- This is disabled by default. You can enable it via the
--pause-media-on-removeflag when launching the Client App. Thanks @phedoreanu for the implementation!
This is a personal project, and is not officially endorsed by Sony Corporation in any capacity.