Skip to content

Releases: agittins/bermuda

v0.8.5 Perception of Prodigal Proxies

05 Aug 21:24
0c4b0ca
Compare
Choose a tag to compare

This release should improve detection of proxies that have dropped off and re-joined the network, and also removes the log spam that was happening in those cases.

Also nice is the initial "floors" support (it's nothing fancy, it just creates a sensor that states the floor relevant for the currently-detected "area" - this doesn't (yet) have any improvements for reliably distinguishing between floors).

This release also fixes some errors/warnings that came up in the 2025.8 betas, so well-worth installing before/when you dive into 2025.8.0 later today! 😁

Changes

📦 Dependencies

v0.8.5-beta3

30 May 20:37
ed2a958
Compare
Choose a tag to compare
v0.8.5-beta3 Pre-release
Pre-release

Changes

📦 Dependencies

v0.8.5-beta2

28 May 13:09
Compare
Choose a tag to compare
v0.8.5-beta2 Pre-release
Pre-release

Changes

v0.8.5-beta1

28 May 08:21
Compare
Choose a tag to compare
v0.8.5-beta1 Pre-release
Pre-release

Changes

v0.8.4 Bugfixes, Unavailable devices, Bluecharm

23 May 04:24
7520de3
Compare
Choose a tag to compare

This release addresses some smaller (but important) bugs.

Changes

  • fix: bluecharm uuid regression and runtime error @agittins (#586)
    • fixes runtime error causing 1 second unavailable glitches
  • fix: mac_explode, move redaction purge to pruning @agittins (#587)
  • fix: Devs start unavailable instead of `unknown @agittins (#588)
    • Fixes devices that are away from remaining at unavailable on HA reboot
      until they return home. Now away devices show as unknown/away from
      startup.

v0.8.3 Security Release: fix for Download Diagnostics

22 May 15:31
1fc801c
Compare
Choose a tag to compare

🔒 Security Fix

Version 0.8.2beta3, released May 20 2025 at 02:46 GMT, as well as v0.8.2 contain a bug that exposed IRKs and some temporary MAC addresses in the "Download Diagnostics" without being redacted.

Who is affected

If you posted a diagnostics to a public place while running v0.8.2beta3 or v0.8.2 please take steps to remove it from public access if possible.

All github issues in the Bermuda repository that contain a diagnostic from the affected versions have been scrubbed already. Only a single instance of this occurrence has been found.

If you have not uploaded a "Download Diagnostics" in the last three days you are not affected, but should update to v0.8.3 as soon as practicable.

Consequences & Mitigation

  • The temporary MAC addresses are only in use for 15 minutes from their first creation, so are extremely unlikely to present any privacy risk.
  • The IRKs are more permanent, and with access to these another party would be able to identify your device's bluetooth traffic as belonging to your device. Obviously this risk has a limited physical radius which reduces the exposure risk.

Other Changes

  • fix: redactions in irk_manager diagnostics @agittins (#582)
  • improved performance of redact_data, to reduce instances of system lockup during download diagnostics
  • logic improvements to redact_data which may have caused corner-case lockups of download diagnostics
  • removed logging for "no ads for metadevice.."
  • reduced logging for "scanner stamps for .. should not go backwards" to debug, as it seems they often have significant jitter (fixes #580 )

Known Unknowns

20 May 19:58
d74cd1f
Compare
Choose a tag to compare

This is a significant release that fixes a collection of issues introduced in v0.8.0 as well as some significant fixes for recent iOS devices, where devices would appear as Unknown for various periods or on various user actions on the device (this particular issue will be at least "much improved", if not fully solved).

Huge thanks to all those who assisted in the various "iOS devices going unknown" threads with sharing observations and diagnostic data - an incomplete list being @oneseventhree, @drothenberger, @erkr, @hajar97, @faz17, @kbrohkahn, @rccoleman, @jksmurf, @milandzuris, @iotola, @rickt123, @bill7531 and more, and particularly to @tylerhartwig for some very decisive debug capture!
Thanks also @jackjourneyman for documentation improvements.

🚨 Breaking Change

The keys and some value formats in the bermuda.dump_devices service call / action have changed.

I'm not aware of any integrations that use this service, so this will probably only affect you if you have used the service yourself to create template sensors etc.

Of particular note is that the scanners sub-key on each device is now called adverts, better reflecting the actual content, and the key is now device-address__scanner-address (a tuple, internally). Advertisement data has also been moved around inside the advert dict, and values are now generally expressed in hex rather than bytes, because python's bytes format causes my retinas to slowly detach with a scraping noise that is decidedly disconcerting.

🐛🦋 Significant Changes

🖼️ Area and Distance sensors now use the icon defined for the current Area (it's not the most significant change, but it's the most easily noticed!)

📡 Bermuda takes a different approach to gathering the advertising data from scanners, and now has visibility of all packets reported by scanners rather than just those collated by the Bluetooth manager. The scanning logic has been cleaned up and refactored.

📻 New scanner handling avoids problems caused by previously storing state / a list of scanners. Scanner discovery is now cleaner and more robust and should respond better to realtime changes in device addition/removal. This also means that the Distance to... (and Unfiltered Distance to...) sensors now get created on-demand as new scanners appear / are removed, which should lead to less surprising behaviour.

✂️ Device pruning has been improved and several bugs fixed. This resolves some issues with CPU and memory use increases, as well as IRK or iBeacon devices going unknown prematurely due to over-zealous pruning.

📍 Area detection tweaks continue, with improvements to more stable transitions from an Area to Unknown, without glitching to another area in the interim.

🔑 Bermuda now includes an IRK implementation in parallel to Private BLE Device that tracks full history for valid MACs (a resolvable MAC can be used for up to 15 minutes) and allows Bermuda to validate prior MACs after a reload and respond to advertisements that might not be forwarded to the entire Bluetooth stack.

🧟 Ignore zombie advertisements reported from BlueZ (local USB or onboard BLE adaptors) for paired but absent devices (rssi -128)

🧹 Significant code restructuring, cleanups etc. Fixed some asyncio usage issues.

🚀 Sub-millisecond startup time by placing startup io tasks in separate thread

Changelog

  • fix: #534 pruning index out of range, vscode/devcontainer tweaks by @agittins in #540
  • chore(deps): bump actions/setup-python from 5.5.0 to 5.6.0 by @dependabot in #530
  • chore(deps): update pip requirement from <25.1,>=24.1.1 to >=24.1.1,<25.2 by @dependabot in #536
  • chore(deps): bump pip from 25.0.1 to 25.1 in /.github/workflows by @dependabot in #537
  • chore(deps): bump ruff from 0.11.6 to 0.11.7 by @dependabot in #531
  • fix: Area switching on timeout to stale adverts by @agittins in #549
  • fix: async usage addressing #456 by @agittins in #550
  • feat: Area and distance entities use area icon by @agittins in #558
  • docs: readme updates incl min ha version by @agittins in #559
  • chore(deps): bump ruff from 0.11.7 to 0.11.8 by @dependabot in #552
  • chore(deps): bump pip from 25.1 to 25.1.1 in /.github/workflows by @dependabot in #557
  • chore: added autoreload to vscode launch.json by @agittins in #566
  • feat: significant restructuring by @agittins in #568
  • chore(deps): bump ruff from 0.11.8 to 0.11.10 by @dependabot in #567
  • chore: ren BermudaDeviceScanner to BermudaAdvert by @agittins in #569
  • fix: new irk_manager to cover all traffic types by @agittins in #576
  • fix: restore on_advert trigger and add diags log by @agittins in #577

Full Changelog: v0.8.1...v0.8.2

v0.8.2-beta3

19 May 14:46
d74cd1f
Compare
Choose a tag to compare
v0.8.2-beta3 Pre-release
Pre-release

Another step... this release includes a full IRK implementation that can work in parallell to Private BLE Device, but is designed mainly to be able to handle advertisements that PBLE might not see.

This provides a way to test some theories about what is causing unknown periods for iOS devices.

iOS folk who've been having Unknown timespans, please try this out and see if it resolves or at least improves your situation.

Changes

📦 Dependencies

v0.8.2-beta2 Significant changes

17 May 04:03
523ea96
Compare
Choose a tag to compare
Pre-release

This release includes some pretty significant refactoring, including a change to the core approach of processing advertisements from the backend.

Please join the discussion if you have comments / questions related to this beta - #570

Overall performance should be improved, and some bugs that resulted in devices going unknown are resolved by this update.

Bermuda no longer saves any state relating to scanners (other than the rssi_offsets), and adding/removing scanners should now update the distance to... sensors correctly in realtime.

Devices switching to unknown:

  • If the device simply isn't advertising, then there is nothing Bermuda can do about this. This still seems to be the case for some iOS 18.3+ devices.
  • Cases where devices switched their MAC addresses during different activities and went unknown should now be fixed.
  • Bermuda receives IRK MAC updates from Private BLE Device. If Bermuda is reloaded it won't be informed of the historical MAC addresses, and some devices may show as unknown if they switch back to previous MACs until those MACs are timed out (typically 15 minutes).
  • Devices that have long advertising intervals (in excess of 30 seconds) will still show as unknown for any intervals beyond that time. A future change will address this by auto-tuning the device timeout based on observed intervals.

Breaking Changes

If you use the bermuda.dump_devices service/action, the format and layout of multiple fields has changed. The most significant is that the scanners key is not named adverts, and the keys for the sub-items are now tuples made up of the device and scanner MACs.

Changes

📦 Dependencies

v0.8.2-beta1

08 May 09:52
Compare
Choose a tag to compare
v0.8.2-beta1 Pre-release
Pre-release

Some bugfixes that might resolve scanning/area issues.

Changes

📦 Dependencies