Counter-surveillance detection firmware for the Colonel Panic OUI-Spy and Mesh-Detect boards (XIAO ESP32-S3), and for a bare ESP32-C5 that adds 5 GHz Wi-Fi. Plug the board into USB, pick a build, and flash it from this page. No toolchain is required. The beacon board is not flashed from here; see below.
An app-controlled scanner that streams detections to the beacons phone apps (iPhone and Android) over BLE and beeps a distinct tone for each target class. Runs on the Colonel Panic OUI-Spy (XIAO ESP32-S3).
The board pairs with the beacons iPhone and Android apps for live detections and controls. Get them free on the App Store and Google Play.
A standalone scanner that uplinks labelled alerts through a wired Heltec V3 Meshtastic node on a channel you choose.
Plug USB-C into the XIAO Seeed ESP32-S3, the small scanner board, not the Heltec V3. This build flashes the XIAO; flash the Heltec V3 separately with Meshtastic firmware.
Public puts detections on the main LongFast channel (anyone
nearby sees them) and never sends your location.
Private puts them on an encrypted acab channel
only your nodes can read, and also needs the Heltec set up to match (see the
mesh
setup guide). On Private, while your phone is connected to the board, its alerts
also carry your phone's location as a map link.
The same app-controlled scanner on a bare ESP32-C5, whose one radio covers Bluetooth and both 2.4 and 5 GHz Wi-Fi, so it also hears 5 GHz-only cameras that the ESP32-S3 boards cannot. The apps show it as beacon c5 (the DevKitC-1 as beacon c5 devkitc) with a 5 GHz Wi-Fi switch under Scan radios; with 5 GHz on, 2.4 GHz gets about 30% less listening time.
Seeed XIAO ESP32-C5: buzzer on D2 (GPIO25), the user LED on GPIO27. Espressif ESP32-C5-DevKitC-1 (N8R4 or N8R8): built for issue #2 where a community member confirmed it flashes and scans (we do not own the kit). Either USB-C port flashes it; detections print on the port marked UART (Serial is UART0 on this kit), so open the monitor there. The onboard RGB LED is the status light, and an optional passive piezo goes between GPIO23 and GND. If something misbehaves, open an issue.
Flashing is at your own risk. The firmware on this page (the public DIY builds) is open source and provided as is, without warranty of any kind; you are responsible for how you flash your board and for the outcome. We can't be liable for a device that stops working, data loss, or any recovery needed after a flash, especially one interrupted by an unstable connection or an unplugged cable. An interrupted flash is almost always fixable by running the flasher again on a stable connection.
beacons is an independent project and is not affiliated with, endorsed by, or sponsored by Colonel Panic. OUI-Spy and Mesh-Detect are Colonel Panic's product names, used here only to identify compatible hardware.