Skip to content

About

Cross-platform Sony Sound Connect (formerly Headphones Connect) library/implementation / 索尼 Sound Connect 第三方实现

Topics

Resources

Contributing

Stars

349 stars

Watchers

5 watching

Forks

Repository files navigation

SonyHeadphonesClient

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.

Build Nightly Builds

Roadmap

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:

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 :(

Platform Support

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!

Running on the Web

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:

Running Compatibility Builds

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.

Windows Compatibility Builds

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.

Fonts & Localization

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.otf selects the Japanese application locale and the specified Noto Sans font.

For Developers

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!

Platform Quirks

Linux

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 the bluez-tools/bluez-utils package) 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-remove flag 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.

About

Cross-platform Sony Sound Connect (formerly Headphones Connect) library/implementation / 索尼 Sound Connect 第三方实现

Topics

Resources

Contributing

Stars

349 stars

Watchers

5 watching

Forks

Releases

Contributors

Languages