NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1225 most downloaded on PyPI
High availability Bluetooth
Last release 8 days ago
09 Sep 2026
Release timing varies
gaps range from 8 days to 3 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
2 versions withdrawn
withdrawn after publishing
3 years old
197 releases · first in 2023
_This release is published under the Apache-2.0 License._
This release is published under the Apache-2.0 License.
related issue https://github.com/home-assistant/core/issues/140138
Detailed Changes: v3.25.0...v3.25.1
d450ffc)One column per month.
_This release is published under the Apache-2.0 License._
This release is published under the Apache-2.0 License.
chore: add armv7l to wheel builds
compile with -g0 to reduce wheel size
Detailed Changes: v3.24.1...v3.25.0
Update scanner discover signature for newer bleak (#157, `a071cb8`)
a071cb8)Improve logging of scanner failures and time_since_last_detection (#155, `f0ff045`)
Add debug logging for connection paths (#154, `562d469`)
562d469)Try to force stop discovery if its stuck on (#153, `e28d836`)
Allow remote scanners to set current and requested mode (#151, `a39ba18`)
a39ba18)Update poetry to v2 (#147, `aefe36e`)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Detailed Changes: v3.21.0...v3.21.1
feat: reduce remote scanner adv processing overhead (#140) (`7bf302b`)
7bf302b)fix: remove unused CentralBluetoothManager in models (#138) (`7466034`)
feat: reduce adv tracker overhead (#137) (`69168a6`)
feat: reduce overhead to convert non-connectable BluetoothServiceInfoBleak to connectable (#135) (`37fc839`)
37fc839)37fc839)feat: refactor scanner_adv_received to reduce ref counting (#134) (`a1945ce`)
a1945ce)a1945ce)fix: ensure allocations are available if the adapter never makes any connections (#131) (`b3dfa48`)
b3dfa48)b3dfa48)feat: remove the need to call set_manager to set up (#130) (`1312bf7`)
1312bf7)feat: allow BluetoothManager to be created with defaults (#129) (`70b2f69`)
70b2f69)70b2f69)feat: include findmy packets in wanted adverts (#127) (`5217850`)
5217850)feat: add allocations to diagnostics (#126) (`aa41088`)
feat: add async_register_scanner_registration_callback and async_current_scanners to the manager (#125) (`99fcb46`)
99fcb46)99fcb46)feat: add support for connection allocations for non-connectable scanners (#120) (`d76b7c9`)
d76b7c9)d76b7c9)fix: re-release again for failed arm runners (#119) (`af2bb50`)
af2bb50)fix: re-release due to failed GitHub action (#118) (`90e2192`)
90e2192)feat: Add API for getting current slot allocations
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> (0a9bef9)
0a9bef9)feat: add support for getting callbacks when adapter allocations change (#115) (`c6fd2ba`)
c6fd2ba)c6fd2ba)fix: increase RSSI switch value to 16 (#111) (`db367db`)
fix: increase rssi switch threshold for advertisements (#110) (`297c269`)
297c269)feat: switch to native arm runners for wheel builds (#106) (`bf7e98b`)
bf7e98b)feat: add async_register_disappeared_callback (#102) (`ec1d445`)
ec1d445)feat: start building wheels for Python 3.13 (#97) (`26dd831`)
feat: speed up creation of AdvertisementData NamedTuple (#75) (`28f7e60`)
28f7e60)feat: add support for Python 3.13 (#71) (`b8a4783`)
fix: ensure build system required Cython 3 (#69) (`dc85d2f`)
dc85d2f)feat: add a fast cython init path for BluetoothServiceInfoBleak (#48) (`f532ed2`)
f532ed2)f532ed2)fix: disable 3.13 wheels (#64) (`9e8bbff`)
fix: bump cibuildwheel to fix wheel builds (#63) (`68d838a`)
68d838a)feat: override DeviceFound and DeviceLost for passive monitoring (#60) (`a802859`)
7d3483d)a802859)feat: small speed ups to scanner detection callback (#55) (`7a5129a`)
7a5129a)fix: wheel builds (#50) (`b9a8eec`)
fix: fix license classifier (#49) (`04aaaa1`)
fix: missing classmethod decorator on find_device_by_address (#47) (`aa08b13`)
aa08b13)aa08b13)feat: speed up dispatching bleak callbacks (#46) (`cbc8b26`)
cbc8b26)fix: ensure lazy advertisement uses None when name is not present (#44) (`c300f73`)
c300f73)c300f73)feat!: make generation of AdvertisementData lazy (#42) (`25f8437`)
25f8437)fix: add missing find_device_by_address mapping (#43) (`cc8e57e`)
cc8e57e)feat: add support for recovering failed adapters after reboot (#40) (`04948c3`)
04948c3)04948c3)feat: improve fallback to passive mode when active mode fails (#39) (`17ecc01`)
17ecc01)17ecc01)feat: speed up stopping the scanner when its stuck setting up (#37) (`bba8b51`)
bba8b51)bba8b51)fix: ensure scanner is stopped on cancellation (#36) (`a21d70a`)
a21d70a)fix: ensure discovered_devices returns an empty list for offline scanners (#35) (`2350543`)
2350543)2350543)fix: wheel builds (#34) (`5bd671a`)
feat: fallback to passive scanning if active cannot start (#33) (`3fae981`)
3fae981)3fae981)fix: android beacons in passive mode with flags 0x02 (#31) (`8330e18`)
8330e18)fix: avoid concurrent refreshes of adapters (#30) (`d355b17`)
d355b17)feat: improve error reporting resolution suggestions (#29) (`afff5ba`)
afff5ba)fix: ensure unavailable callbacks can be removed from fired callbacks (#28) (`65e7706`)
65e7706)65e7706)feat: reduce overhead to remove callbacks by using sets to store callbacks (#27) (`05ceb85`)
05ceb85)05ceb85)feat: improve remote scanner performance (#26) (`c549b1c`)
feat: add support for windows (#25) (`788dd77`)
fix: handle subclassed str in the client wrapper (#24) (`f18a30e`)
f18a30e)fix: switching scanners too quickly (#23) (`bd53685`)
Your coding agent can read these notes before it upgrades. Set up the MCP server →