← All downloads

RID Sensor

Remote-ID detection, WiFi and BLE threat scanning, LoRa mesh, and live reporting to OpenForge C2. Plug the board into this computer and flash it from the browser — no toolchain, no zip, nothing to install.

Fleet build b26431347bc4 · rolled out 24 Sep 2026 · the only RID build PDL Deploy serves

Updating an existing sensor

Every fielded sensor pulls this build from PDL Deploy on its own, with A/B rollback if an image fails to come up. Nothing to click and no cable needed — a unit on the network converges within its next check.

Flashing a blank board

One click. Plug the board in over USB, press Install, and pick its serial port — the browser writes the bootloader, the partition table and the app in one pass. Chrome or Edge on desktop; Safari and Firefox have no Web Serial.

This browser can’t flash over USB — use Chrome or Edge, or download the image and flash it with esptool. Serial access was blocked. Reload and allow the port prompt. Download factory image (.bin)

Full factory image for Heltec WiFi LoRa V4, 16 MB — the board every fielded unit runs. It is the same build b26431347bc4 the fleet is on, not a separate branch. Flashing erases the filesystem and saved WiFi, so the board comes up fresh and asks for a network. To flash by hand instead: esptool --chip esp32s3 write-flash 0x0 RIDSensor-HeltecV4-factory.bin

1

Give it WiFi

A fresh sensor looks for an open network first. If it can’t find one after five tries and has never connected before, it stands up its own open access point named PDL-<name>-Setup. Join that, open http://192.168.4.1/, and type your network and password into the form — no app needed. It saves them and reconnects on its own from then on.

2

Get PDL Tactical (Android)

The Heltec boards have no screen. PDL Tactical is the interface — live map, BLE pairing, detections as they land. (The T-Deck Plus has its own display and works standalone.)

Download PDL Tactical APK →

3

It updates itself from here on

Once it’s on the network the sensor polls PDL Deploy and pulls new firmware on its own, with A/B rollback if an image fails to come up. You should not need to plug it in again.

What’s in this build

Remote ID: WiFi Beacon/NAN and Bluetooth Legacy/LR drone broadcasts, DJI DroneID, operator position. RF threat scanning: deauth and disassoc floods, evil-twin and KARMA, rogue beacon spam, Pineapple/Pwnagotchi/Marauder signatures, WPA3 downgrade, PMKID capture, CSI carrier detection. BLE: Find My and AirTag follower detection gated on real motion, Tile and SmartTag, Flipper, advertisement spam. Sub-GHz: LoRaWAN join-flood and DevNonce replay, Meshtastic and MeshCore decode. Mesh: Meshtastic, MeshCore and RNode interop, peer relay so one sensor carries another’s detections out. Reporting: OpenForge C2 over TLS, GPS position, battery and health telemetry, on-device TinyML classifiers.

Why this build: it adds a record of what the sensor asked its WiFi chip to do just before a reset, and stops a sensor being handed an out-of-date update file. The sensors still reset roughly once every twenty hours each. They come back on their own in about twenty seconds, but the cause is not known. Five of those resets have now been recorded in detail, and every one looks the same: both of the chip's processors stop at the same instant while the WiFi chip's own software is running. Twice, two sensors reset in the same minute, which points at something in the air rather than a fault in one unit. What the record could not say is whether the sensor had just asked the WiFi chip for something. A sensor on this build remembers its last few such requests, each with the time it was made, and keeps them through the reset. The second change: yesterday one sensor was handed a cached copy of its old update file and sat on the previous build for five and a half hours. Each check now asks in a way that cannot be answered from a cache. It went to one sensor first, then to the rest one at a time, and each had to stay up and keep reporting for twenty-two minutes before the next one started.