soyboitech/beacons
soyboitech/beacons has 31 GitHub stars and 0 forks. Star changes are not measured yet. Last checked 2026-11-10 19:23 UTC. Last push 2026-11-05.
counter surveillance firmware for esp32 boards, plus native ios and android apps. passively detects nearby alpr cameras, drones, body cams, smart glasses and bluetooth trackers.
측정된 스타 증가
- in 24h
- 업데이트 지연
- in 7 days
- 기록 수집 중
- in 15 days
- 기록 수집 중
- in 1 month
- 기록 수집 중
서로 겹치는 기간의 순증가량이며 일별 합계가 아닙니다. 측정값이 없으면 비워 둡니다. 스타는 관심도를 나타내며 품질을 보장하지 않습니다.
README.md
Original![]()
beacons
beacons picks up the Wi-Fi and Bluetooth broadcasts of supported surveillance devices, such as license-plate readers, body cams, and drones, and shows them in the iPhone and Android apps. Mesh-Detect can also send them out as Meshtastic alerts. it runs on the beacon, our pocket-sized dual-radio detector, on Colonel Panic's OUI-Spy and Mesh-Detect boards, and on DIY ESP32-C5 boards.
detection is passive: shipping firmware never probes, jams, spoofs, controls, or interferes with nearby devices. the board talks to your phone over bonded, encrypted Bluetooth, and Mesh-Detect also sends alerts through its wired Meshtastic node.
getting started
the apps are free, but live detection needs a compatible board. without one, you can still use sample data and your saved Log.
- buy a beacon on Tindie or Etsy: the slim model (Tindie, Etsy) or the battery model (Tindie, Etsy). soyboi.tech has current pricing and availability.
- try the app without hardware: install it for iPhone or Android and tap See How It Works for a tour with made-up detections.
- connect a board: turn it on, tap Scan for Beacons, pick your board, and approve the pairing request. the app takes you through setup and permissions. do the first pairing somewhere you trust. to add another phone later, or to pair again after a phone forgets the board, turn the board off and on and pair within two minutes; see the pairing guide.
- flash your own OUI-Spy, Mesh-Detect, or ESP32-C5 board with the DIY flasher or from the command line.
- get help from the getting-started guide, the app guide, or the FAQ, or open an issue.
supported hardware
every board runs the same detector engine and the same per-category settings. they differ in radio coverage and in where alerts go.
| hardware | radios | alerts |
|---|---|---|
| the beacon (slim model: rev-A; battery model: rev-B) | nRF52840 dedicated to Bluetooth scanning; ESP32-S3 for Wi-Fi and the app link | phone app, onboard buzzer, optional encrypted offline log |
| OUI-Spy | Seeed XIAO ESP32-S3, one radio shared between Wi-Fi and Bluetooth | phone app, onboard buzzer, optional encrypted offline log |
| Mesh-Detect | the same XIAO build, plus a wired Heltec V3 running Meshtastic | phone app and mesh alerts (your phone's location only on a private channel, while connected), and an optional encrypted offline log |
| ESP32-C5 (DIY) | Seeed XIAO ESP32-C5, or Espressif's ESP32-C5-DevKitC-1 with 8 MB flash (N8R4 or N8R8; community-tested on an N8R8); one radio shared between Bluetooth and 2.4 and 5 GHz Wi-Fi | phone app, a passive piezo if you wire one (D2 on the XIAO, GPIO23 on the DevKitC-1, each to GND), optional encrypted offline log; updates are USB reflashes from the DIY flasher |
the beacon is about the size of an AirPods case and runs on USB-C power; the battery model charges through the same port. retail units come pre-flashed. pair one with the app to choose detector categories, alerts, and optional location or offline logging. firmware updates come through the app, and USB recovery is specific to each board revision (see production beacon).
for Mesh-Detect, mesh setup covers the Heltec wiring and the public or private channel options.
what it detects
| category | radio | default | notes |
|---|---|---|---|
| Flock cameras (license-plate readers) | Bluetooth + Wi-Fi | on | a camera's own Flock- network name, the FS Ext Battery name, or a name with Flock's manufacturer ID is strong evidence; other names and vendor-prefix matches need confirming |
| Flock Raven audio sensors | Bluetooth | on | matches Raven-specific services seen in field captures |
| Remote ID drones | Bluetooth + Wi-Fi | on | broadcasts can include the aircraft's position; a separate, opt-in vendor match flags drones without Remote ID, but a hit may be a controller or other vendor gear |
| body cams (Axon and Utility BodyWorn) | Bluetooth + Wi-Fi | on | Axon's device tag is the strongest match; the Motorola vendor match (Motorola Solutions and WatchGuard Video blocks) is broad, weak, and a separate opt-in |
| item trackers | Bluetooth | off | Find My, Find Hub, Tile, and SmartTag; Find My and Find Hub tags only count once separated from their owner; no buzzer alerts on the board |
| smart or recording glasses | Bluetooth | on | every bare company ID reports as a weak match: the Luxottica, Snap and Vuzix IDs until a worn unit is captured, the Meta IDs because they also appear on other Meta hardware |
| network cameras | Wi-Fi | off | a vendor match may be a camera, recorder, hub, or accessory |
the signature reference lists every supported manufacturer, the evidence behind each match, how confidence is set, and the matches we rejected. there are also Axon notes and glasses research. Remote ID decoding uses OpenDroneID.
diagnostic builds also log capture candidates for research. these are not production detections and never reach the phone apps.
limits
confidence
a decoded Remote ID payload or a device-specific signature is strong evidence. a match on a vendor's radio-address prefix (OUI) is weaker: it identifies the registered vendor, not the exact product. prefixes from chip suppliers that would flag unrelated consumer gear are excluded, with one exception: four Liteon Wi-Fi prefixes seen at Flock Falcon sites still match probe requests, so a laptop can trigger them.
tap a detection to see how it was matched, its confidence, and the evidence. confidence describes how specific the evidence is. it is not signal strength, and it is not the probability that a camera is there. treat weak matches as leads to check.
what it can hear
the beacon, OUI-Spy, and Mesh-Detect listen on 2.4 GHz only. the ESP32-C5 builds also visit nine 5 GHz channels, which costs 2.4 GHz about 30% of its listening time (the app has a switch for it). no board can see equipment that never makes a supported broadcast, such as wired-only or purely optical gear. Wi-Fi is scanned one channel at a time, so short transmissions can be missed, and Wi-Fi eco mode adds more gaps. OUI-Spy, Mesh-Detect, and the ESP32-C5 builds split one radio's time between Wi-Fi and Bluetooth; the beacon's dedicated Bluetooth scanner runs the whole time during normal scanning.
an empty screen means nothing supported was recognized while the board was listening. it does not mean you are unwatched. radio coverage has the channel schedule, duty cycles, and Wi-Fi eco tradeoffs.
privacy
there are no accounts, analytics, or third-party trackers, and nothing is uploaded automatically. detections stay on your board and phone unless you export or contribute them yourself. Mesh-Detect is the exception: it sends detections out as mesh alerts, and the default build posts them on the public channel that anyone on the mesh can read. your phone's location is attached only on a private channel, while the app is connected; the public build never sends it. the apps do go online to load map tiles, firmware files, and the optional mapped-camera dataset, but those requests never include your detections.
if you allow location access, the phone geotags sightings and sends its position to the board over the encrypted link. offline records can keep that location. exports can include both where you were and the positions drones broadcast, so check an export before you share it.
two things these protections do not cover:
- the board can be tracked. it advertises a fixed factory Bluetooth address, because iPhones could not connect to a rotating one in testing.
- offline encryption does not protect a seized board from forensic access. while buffering is on, the key is stored on the board.
read the privacy policy and the Bluetooth privacy details before you rely on any of this.
the phone apps
both apps have the same four tabs:
- Status: a radar of devices heard in the last 45 seconds, with a count for each category.
- Map: located sightings from the last 45 seconds, the last 15 minutes, or all history, plus a separate layer of community-mapped cameras.
- Log: saved detections, filtered as active, new, or all, with search, filters, signal history, matching evidence, and CSV or GPX export. it works while disconnected.
- Beacon: the board's detectors, alerts, radios, offline buffering, firmware updates, and connection status, plus this phone's notifications, Live Mode, and display settings.
most pins show where your phone heard a signal, not where the device is. Remote ID drones are the exception, since they can broadcast their own position. the community camera layer is reference data, so a missing pin does not mean there is no camera.
you can Watch or mute individual devices, turn on phone notifications per category (they all start off), and check counts at a glance with Live Mode or home-screen widgets. permanent mutes sync to the board. timed and place mutes only apply on the phone, so the board can still sound for that device. both apps support screen readers, larger text, and higher contrast, and are English-only for now.
| platform | requires | install | build from source |
|---|---|---|---|
| iPhone | iOS 18 or newer | App Store | iOS README |
| Android | Android 8 or newer | Google Play | Android README |
the app guide covers pairing, permissions, sample data, alerts and mutes, tracker evidence, Live Mode, widgets, and accessibility.
flashing
production beacon
normal updates come through the app. USB recovery depends on the board revision:
- rev-A beacon flasher, for the slim model (no power button)
- rev-B beacon flasher, for the battery model (side button)
never flash one revision's image onto the other, or a DIY image onto a production beacon. the wrong image can leave the board needing USB recovery.
DIY OUI-Spy, Mesh-Detect, and ESP32-C5
- connect the XIAO ESP32-S3, or the ESP32-C5 board, to your computer with a USB-C cable that carries data, not a charge-only cable.
- open the DIY flasher in Chrome or Edge and pick the firmware for your board.
- select the board when prompted and wait for flashing to finish.
the flasher uses Web Serial, so it needs a desktop browser; Safari and Firefox do not support it. the web flasher docs cover self-hosting and rebuilding the images.
the ESP32-C5 images are USB-only: the apps do not offer them over-the-air updates, so update by flashing again from the same page. the ESP32-C5-DevKitC-1 image was built for issue #2, where a community member confirmed it flashes and scans; we do not have that board ourselves, so report problems in a new issue.
flashing from the command line
for firmware development, use PlatformIO:
cd firmware
pio run -e oui-spy -t upload
# or, for Mesh-Detect:
pio run -e mesh-detect -t upload
pio device monitor -b 115200
platformio.ini defines the shipping, capture, and bench environments. capture builds log nearby identifiers and raw payloads, so keep those logs private and reflash shipping firmware when you are done. odid-sim is a Remote ID simulator for bench use only.
beacon-c5 (Seeed XIAO ESP32-C5) and beacon-c5-devkitc (Espressif ESP32-C5-DevKitC-1, the 8 MB N8R4 or N8R8 kits; the 4 MB kits cannot hold the partition table) are the ESP32-C5 builds: a single radio shared between Bluetooth and 2.4 and 5 GHz Wi-Fi (see radio coverage). their images are on the DIY flasher but not in the app's firmware manifest, so updates are USB reflashes. on the DevKitC-1 either USB-C port flashes, and serial output is on the port marked UART. their platform deletes the framework versions the other builds need from the PlatformIO core folder it runs in, so a plain pio run skips them. build them in their own core folder, from firmware/: PLATFORMIO_CORE_DIR=~/.platformio-c5 pio run -e beacon-c5 -t upload (or -e beacon-c5-devkitc).
developer documentation
| location | contents |
|---|---|
| firmware/ | shared detector engine, board entry points, tests, and release tools |
| ios/ and android/ | native apps and system widgets |
| web/ | the DIY browser flasher and its release manifests |
| docs/ | app guide, radio coverage, signature evidence, protocol, mesh setup, and map performance checks |
good places to start:
- the BLE protocol, for app integration
- the signature reference, for detector work
- the release guide, for signing and publishing
- the map performance checks, for the shared map regression workload and each platform's benchmark tests
- the false-positive log, for vendor matches that turned out to be other hardware
the companion nRF firmware and the beacon's hardware design files are not in this repository.
project status
the source tree is at 2.2.3 for the ESP32 firmware and both apps. published releases can trail the source, so check the app's firmware update screen and the store listings for what is actually available.
the detector, mesh path, apps, and update flows have all been tested on real hardware. field testing continues, especially for the capture candidates. the OTA protocol documents the update order.
2.0.7 was a one-time transition release that rotated the OTA signing key. from 2.0.8 on, the source tree signs with the production key only. a board that installed 2.0.7 needs nothing more. a board still on 2.0.6 or older only trusts the retiring key, so it cannot verify any update published since 2.0.8. the 2.0.7 transition image is no longer served over the air, so an in-app update fails on such a board at the signature check: update it once over USB from its board's flasher. the key-rotation guide has the details, and the steps for a future rotation.
license
the project's own application and ESP32 firmware code (the ESP32-S3 and ESP32-C5 builds) in this repository is licensed under Apache-2.0. bundled third-party components keep their own licenses; see CREDITS.md and their license files. keep the applicable LICENSE, NOTICE, and third-party notices with any distribution.
the companion nRF firmware, hardware design, PCB layout, enclosure, manufacturing files, product name, and trademarks are not covered by that license unless explicitly stated otherwise.
credits
- the Colonel Panic OUI-Spy ecosystem, for compatible hardware and earlier work
- OpenDroneID, for Remote ID decoding
- DeFlock and the independent researchers cited in the signature reference
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.
관련 프로젝트 살펴보기
trimstray/the-book-of-secret-knowledge
영감을 주는 목록, 매뉴얼, 치트시트, 블로그, 팁, 원라이너, CLI/웹 도구 등을 모은 컬렉션.
257,509 스타Hack-with-Github/Awesome-Hacking
해커, 펜테스터, 보안 연구자를 위한 다양한 Awesome 목록 모음.
125,103 스타swisskyrepo/PayloadsAllTheThings
웹 애플리케이션 보안과 모의 침투 테스트/CTF에 유용한 페이로드 및 우회 방법 목록.
82,542 스타caddyserver/caddy
빠르고 확장 가능한 멀티플랫폼 HTTP/1-2-3 웹 서버이며, 자동 HTTPS를 지원합니다
78,935 스타