What's Changed
Summary
This update contains three intentionally separate commits that improve passive HCI scanning and low-latency measurement delivery:
- decouple scanner lifetime from the measurement aggregation period
- add a configurable per-adapter raw-HCI inactivity watchdog
- add backward-compatible periodic/instant measurement update policies, including per-device overrides
- parse every legacy or extended advertising report in batched HCI LE meta-events
The commits are kept separate so the scanner lifecycle, instant delivery, and multi-report parser work can be split into smaller PRs if preferred during review.
Motivation and root cause
Restarting the HCI scanner after every aggregation period creates avoidable scan downtime. With period: 1, a TP-Link UB500 was repeatedly closing and reopening its HCI socket and losing advertisements.
After continuous scanning and instant updates were enabled, matched captures identified a second UB500-specific loss mechanism. The adapter commonly emits LE Extended Advertising Report events containing two to five reports. BleParser.parse_raw_data() assumed exactly one report and rejected the complete HCI event whenever its total length exceeded the first report's length.
Configuration example
ble_monitor:
hci_inactivity_timeout: 60
measurement_update: instantNew Contributors
Full Changelog: 3.16.0...14.0.0-beta