! Erasing will unpair Bluetooth

Erase wipes the board's stored Bluetooth bond. If this device was paired with your phone (the beacons app), you'll need to remove the existing pairing in your phone's Bluetooth settings and pair again, otherwise the app won't reconnect. A normal flash without erase keeps the pairing.

ACAB
All Cameras Are Beacons

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.

ACAB is passive detect-and-report only. It listens for the advertisements these devices already broadcast, with no jamming, spoofing, or interference.
! Web flashing needs the Web Serial API, so use Chrome, Edge, or Opera on desktop. Safari and Firefox do not work. The board must be connected by USB-C.
! Own a beacon board? Don't flash it from this page. These are the public DIY builds. The XIAO ESP32-S3 images will flash onto a beacon board (ESP Web Tools refuses the ESP32-C5 ones by chip), and there they drop the second radio's detections and put the buzzer on the wrong pin, so alerts go silent, and on rev-B hardware they leave out the power gate entirely, so hold-to-off and the app's power-off both stop working: on battery there is then no way to switch the unit off, and it runs until the cell is flat. USB recovery is the only way back. Use the board's own flasher instead: rev-A beacon flasher or rev-B beacon flasher. Those two are not interchangeable either. Normally you don't need either one: the app delivers beacon updates over Bluetooth.

OUI-Spy APP

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).

  • BLE + WiFi scanning
  • ACAB GATT service
  • buzzer / LED alerts

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.

Browser not supported. Use Chrome or Edge. Must be served over HTTPS or localhost.

Mesh-Detect MESH

A standalone scanner that uplinks labelled alerts through a wired Heltec V3 Meshtastic node on a channel you choose.

  • BLE + WiFi scanning
  • Meshtastic uplink
  • private-channel alerts

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.

Browser not supported. Use Chrome or Edge. Must be served over HTTPS or localhost. Browser not supported. Use Chrome or Edge. Must be served over HTTPS or localhost.

ESP32-C5 APP · 5 GHz

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.

  • BLE + 2.4 and 5 GHz WiFi scanning
  • ACAB GATT service
  • USB updates only (no over-the-air image)

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.

Browser not supported. Use Chrome or Edge. Must be served over HTTPS or localhost. Browser not supported. Use Chrome or Edge. Must be served over HTTPS or localhost.
! Don't interrupt a flash. Flash on a stable internet connection and leave the board plugged in until it says done. Don't unplug it, power it off, or let your computer sleep mid-flash. The firmware streams as it writes, so a dropped connection or a pulled cable can leave the board half-written and unable to boot until you simply run the flasher again.

What it detects

Flock cameraFlock Safety ALPR · BLE + WiFiready
Flock Ravenaudio / gunshot sensor · BLEready
DroneFAA Remote ID · BLE + WiFiready
Body camAxon · Utility BodyWorn · BLE + WiFiready
Motorola proxyMotorola Solutions · WatchGuard Video OUIsopt-in
Item trackerAirTag · Tile · SmartTag · BLEopt-in
Smart glassesRay-Ban / Oakley Meta · Snap · Vuzix · BLEready
Network cameraHikvision · Dahua · Axis · Reolink and more · WiFiopt-in

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.