Repository navigation
v0.1.2
Detection & classification
A large batch of new passive BLE fingerprints, every company ID / OUI / UUID independently cross-verified against the Bluetooth SIG and IEEE registries before being trusted (several catalog entries from third-party sources were found to be wrong -- shared-chipset vendors misattributed to a specific product -- and deliberately left out):
- Drone Remote ID (ASTM F3411/OpenDroneID) plus DJI (model-ID-aware routing between drones and its Osmo camera line), Skydio, Autel, Parrot, HOVERAir
- Smart locks: ASSA ABLOY, HID Global, Yale, SALTO, August, Allegion, Tedee, igloohome, Master Lock, Kevo, dormakaba, Paxton, Nuki (verified directly against Nuki's own open-source BLE library), Lockly, Kwikset
- Flipper Zero: both the new (0C:FA:22, IEEE-assigned) and legacy (80:E1:26, pre-assignment) MAC prefixes, plus its extra service UUIDs
- Vehicle OEM phone-as-key/infotainment: Ford, Honda, Hyundai, Toyota, Nissan, Subaru, BMW, Volkswagen, Porsche, Jaguar Land Rover, BYD, plus aftermarket BLE TPMS (Goodyear, Schrader, Pacific Industrial) and Samsara fleet telematics
- Smart glasses: Meta, Even Realities, Vuzix, Luxottica, Snapchat, plus name-gated Sony/Epson/TCL
- Plejd smart-home mesh, UniFi Protect cameras, cheap BLE-serial skimmer modules, Chamberlain/myQ, Hatch Baby, Chipolo, Pebblebee, Helium, Fieldy/Plaud recording wearables
- Apple Continuity: AirPods/Beats model + live activity state, walking the full TLV chain instead of just the first message
- Samsung TV/appliance power state, Fast Pair passive Model ID resolution + active GATT query + anti-spoof verification + battery levels
- Bluetooth SIG company-name fallback for devices with a randomized MAC and no other identifying signal
New features
- Live Signal panel on Device Details -- a real-time signal-strength graph (reads straight from the continuous scanner's in-memory state, not a periodic snapshot, so it's genuinely sub-second fresh), styled after Fieldwatch's own device card: gridded axis, presence timeline, current reading + trend arrow
- Priority box -- watched devices and type-alert-listed devices (e.g. "always show me a drone the moment one appears") surface immediately regardless of the main table's active filters, independent of whether they've been reviewed/grouped yet
- Real-time live-sighting stream (Server-Sent Events) -- the dashboard reflects a new sighting the instant it's scanned, instead of waiting for the next poll
- Split "Hide categorized devices" into two independent filters (hide-by-known-class, hide-by-group) -- the old combined toggle could hide a device that had never actually been reviewed, just because BlueWatch had auto-classified its type
- "Scan Unknown Devices" batch Scan Unit run, "First seen within" filter slider
- Self-healing BLE recovery: detects a silent scan hang (zero devices reported for several minutes with no error) and automatically resets the adapter, instead of requiring a manual restart
Fixes
- A systemic timezone bug: SQL-side
datetime('now', ...)cutoffs are UTC, but stored timestamps are naive local time -- several features were silently comparing against the wrong window - Three severe query performance bugs causing multi-second to 30+ second UI lag
- An XSS vulnerability in the Watched Devices list
- A blocking 5-minute
sleep()that froze the entire event loop (web server included) during BLE crash-loop recovery - The Apple vendor-name guess misclassifying randomized-MAC devices as "Phone" on weak evidence
bluewatch.servicenow restarts on any exit, not just on-failure
Not included in this release
ESP32-S3 second-radio support and the /nr Neighborhood Rhythm integration are both present in the source but explicitly not part of this release's feature set -- ESP32 support is still being validated for stability, and /nr is an active side-by-side evaluation of another project's dashboard, not a finished BlueWatch feature. Both stay behind disabled-by-default toggles.
Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com