Skip to content

v0.5.0

Latest

Choose a tag to compare

@aaronsb aaronsb released this 28 Sep 18:06

Rust crate: bose-bmap 0.5.0 · Python: pipx install ./python

Breaking changes

  • connect() with an explicit MAC now requires a device type (BMAP_DEVICE); it no longer assumes qc_ultra2.
  • Replies are validated: truncated frames, unknown operators, and replies from a different address raise errors in all three libraries instead of returning partial data. A late STATUS frame ahead of the real reply is skipped.
  • Rust: BmapError is #[non_exhaustive], with new Busy and Desync variants; empty replies are Device errors, not Timeout.
  • C++: new bmap::device_error, desync_error, unsupported_error, connect_error, busy_error (all std::runtime_error); unknown modes and preset-named profiles throw std::invalid_argument.
  • Python: update_profile(name=…) is now rename=… (the old keyword crashed); new BmapInvalidArgError, BmapDesyncError, BmapBusyError.

Highlights

  • New devices: QC Ultra Earbuds (2nd Gen), QuietComfort Headphones (2nd Gen) PID 0x4083, and EQ on QuietComfort Headphones.
  • Linux: a busy RFCOMM channel is retried with backoff, so back-to-back CLI calls no longer fail (#39). New linux_install.sh, pipx install docs.
  • Profiles reuse cleared slots and refuse preset names; profile set no longer creates duplicates.

What's Changed

  • Add EQ support for QuietComfort Headphones (prince) by @hieupm2096 in #36
  • Add QuietComfort Headphones (2nd Gen) support (PID 0x4083) by @Juju8901 in #37
  • Linux installer and transport tests by @icarus-help in #33
  • Add QC Ultra 2 Earbuds support by @andresantonioriveros in #34
  • fix: profile slot reuse, profile name lookup, and response address validation by @jpita in #35
  • Document pipx install and BlueZ build headers by @aaronsb in #40
  • Point to bosectl-qt near the top of the README by @aaronsb in #41
  • Retry busy RFCOMM channels with backoff by @aaronsb in #42

New Contributors

Full Changelog: v0.4.1...v0.5.0