Case study

uniden-r8-ble: reconstructing the Uniden R8 radar detector's BLE telemetry

Decodes the undocumented Bluetooth Low Energy output of a Uniden R8 radar detector into a receive-only collector for a Raspberry Pi, with live telemetry, alert start/update/end events, SQLite history and optional MQTT and Home Assistant publishing. The author worked the protocol out from the wire on a real detector, building on earlier R8w findings from AegisX86/UnidenR8wlink, and grades every claim in PROTOCOL.md by its evidence: measured on this R8, seen on another model, decompiled from an app but untested, or inference. Unknown fields are carried through raw rather than given invented meanings.

Targets
Protocol
Category
Independent reconstruction cases
Relationship
Independent reconstruction project
Sources reviewed

Requirements & limits

  • Reviewed at the main-branch head of 2026-09-09 (package version 0.1.0). README reports 1 Hz telemetry decoded without errors on a moving vehicle and one real Ka-band alert captured on the R8, while PROTOCOL.md still grades active-alert fields as inherited from R8w captures; it also states that the live stream carries no position, and that settings blocks remain undecoded.
  • Requires the user's own Uniden R8 and a Linux host with BlueZ, documented on a Raspberry Pi Zero 2 W with an optional systemd service, gpsd-connected GNSS receiver, PiSugar battery and MQTT broker. No vendor app, firmware or captures are committed; README says raw captures are kept in a git-ignored local store, and Bluetooth addresses and coordinates are redacted before publication.
  • Python 3.11+, with bleak as the optional BLE extra and paho-mqtt for publishing. README says the installed package sends no application commands to the detector and that an AST audit, run by selftest and in CI, checks this; commands used for the coordinate experiments were sent from separate scripts at the owner's instruction, as SAFETY.md records.
  • CI runs ruff and pytest on Python 3.11–3.13 plus a selftest job; README badges 754 tests, which need no hardware, broker, gpsd or network. README notes that MQTT and the dashboard have not met real hardware, and this review ran neither the tests nor a detector.
  • MIT license. README states the project is not affiliated with or endorsed by Uniden and is diagnostic software, not a substitute for the detector's own display or warnings. HANDOFF.md is written for a person or an agent taking over the project, but the reviewed sources do not attribute the analysis to AI, and no REA use is established.

About this entry

The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.

Report an outdated entry Suggest a translation fix

Primary sources

  1. docs/PROTOCOL.md GitHub · JeremyWhittaker/unidenr8_bluetooth · Revision 46c7e1a
  2. README.md GitHub · JeremyWhittaker/unidenr8_bluetooth · Revision 46c7e1a
  3. docs/SAFETY.md GitHub · JeremyWhittaker/unidenr8_bluetooth · Revision 46c7e1a
  4. docs/EVIDENCE.md GitHub · JeremyWhittaker/unidenr8_bluetooth · Revision 46c7e1a
  5. docs/CAPABILITIES.md GitHub · JeremyWhittaker/unidenr8_bluetooth · Revision 46c7e1a
  6. docs/HANDOFF.md GitHub · JeremyWhittaker/unidenr8_bluetooth · Revision 46c7e1a
  7. pyproject.toml GitHub · JeremyWhittaker/unidenr8_bluetooth · Revision 46c7e1a
  8. .github/workflows/ci.yml GitHub · JeremyWhittaker/unidenr8_bluetooth · Revision 46c7e1a
  9. LICENSE GitHub · JeremyWhittaker/unidenr8_bluetooth · Revision 46c7e1a

More in Protocols

All 66 entries in ProtocolsProtocols case studies (26)