{
  "added_at": "2026-11-03",
  "additional_evidence_urls": [
    "https://github.com/JeremyWhittaker/unidenr8_bluetooth/blob/46c7e1af2fa86c9a5c18f58528bea0f22b4d77dc/README.md",
    "https://github.com/JeremyWhittaker/unidenr8_bluetooth/blob/46c7e1af2fa86c9a5c18f58528bea0f22b4d77dc/docs/SAFETY.md",
    "https://github.com/JeremyWhittaker/unidenr8_bluetooth/blob/46c7e1af2fa86c9a5c18f58528bea0f22b4d77dc/docs/EVIDENCE.md",
    "https://github.com/JeremyWhittaker/unidenr8_bluetooth/blob/46c7e1af2fa86c9a5c18f58528bea0f22b4d77dc/docs/CAPABILITIES.md",
    "https://github.com/JeremyWhittaker/unidenr8_bluetooth/blob/46c7e1af2fa86c9a5c18f58528bea0f22b4d77dc/docs/HANDOFF.md",
    "https://github.com/JeremyWhittaker/unidenr8_bluetooth/blob/46c7e1af2fa86c9a5c18f58528bea0f22b4d77dc/pyproject.toml",
    "https://github.com/JeremyWhittaker/unidenr8_bluetooth/blob/46c7e1af2fa86c9a5c18f58528bea0f22b4d77dc/.github/workflows/ci.yml",
    "https://github.com/JeremyWhittaker/unidenr8_bluetooth/blob/46c7e1af2fa86c9a5c18f58528bea0f22b4d77dc/LICENSE"
  ],
  "category": "reconstruction-cases",
  "description_en": "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.",
  "description_zh": "将 Uniden R8 雷达探测器未公开的低功耗蓝牙输出解码为可在 Raspberry Pi 上运行的只读采集程序，提供实时遥测、警报开始／更新／结束事件、SQLite 历史记录，以及可选的 MQTT 与 Home Assistant 发布。作者在真实设备上直接从通信数据推断协议，并以 AegisX86/UnidenR8wlink 先前针对 R8w 的发现为基础；PROTOCOL.md 中的每项结论都按证据分级：在这台 R8 上实测、在其他型号上见到、从应用反编译但未测试，或推断。未知字段按原始数据保留，而不赋予臆造的含义。",
  "entry_url": "https://awesomerea.org/resources/uniden-r8-ble-telemetry-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/uniden-r8-ble-telemetry-case/",
  "evidence_url": "https://github.com/JeremyWhittaker/unidenr8_bluetooth/blob/46c7e1af2fa86c9a5c18f58528bea0f22b4d77dc/docs/PROTOCOL.md",
  "group": "cases",
  "id": "uniden-r8-ble-telemetry-case",
  "json_url": "https://awesomerea.org/resources/uniden-r8-ble-telemetry-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/uniden-r8-ble-telemetry-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/uniden-r8-ble-telemetry-case/index.md",
  "name": "uniden-r8-ble: reconstructing the Uniden R8 radar detector's BLE telemetry",
  "name_zh": "uniden-r8-ble：重建 Uniden R8 雷达探测器的蓝牙遥测",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirements": [
    "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.",
    "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."
  ],
  "requirements_zh": [
    "在 2026-09-09 的 main 分支最新提交处审阅（软件包版本 0.1.0）。README 报告在行驶车辆上无差错地解码了 1 Hz 遥测，并在这台 R8 上捕获到一次真实的 Ka 波段警报；而 PROTOCOL.md 仍将活动警报字段评为来自 R8w 抓包的继承证据。文档还指出实时数据流不包含位置，设置数据块也仍未解码。",
    "需要使用者自己的 Uniden R8，以及带 BlueZ 的 Linux 主机；文档以 Raspberry Pi Zero 2 W 为例，可选配 systemd 服务、经 gpsd 连接的 GNSS 接收器、PiSugar 电池和 MQTT 代理。仓库未收录厂商应用、固件或抓包记录；README 称原始抓包保存在被 git 忽略的本地目录中，蓝牙地址和坐标在发布前会被脱敏。",
    "需要 Python 3.11+，bleak 作为可选的蓝牙扩展，paho-mqtt 用于发布。README 称已安装的软件包不会向探测器发送任何应用命令，并由 selftest 和 CI 中运行的 AST 审计加以检查；坐标实验所用的命令是在所有者指示下由独立脚本发送的，SAFETY.md 对此有记录。",
    "CI 在 Python 3.11–3.13 上运行 ruff 与 pytest，并有一个 selftest 任务；README 徽章标示 754 项测试，无需硬件、代理、gpsd 或网络。README 指出 MQTT 与仪表板尚未在真实硬件上运行过。",
    "采用 MIT 许可。README 称项目与 Uniden 无关联、未获其认可，是诊断软件，不能替代探测器自身的显示或警告。HANDOFF.md 面向接手项目的人或智能体编写。"
  ],
  "targets": [
    "protocol"
  ],
  "url": "https://github.com/JeremyWhittaker/unidenr8_bluetooth",
  "verification": "source-reviewed",
  "verified_at": "2026-10-27"
}
