Surveillance-device detector for the ESP32-2432S028R ("Cheap Yellow Display"), and a growing list of other ESP32 boards.
SquachWatch-CYD sniffs WiFi and Bluetooth for known wireless signatures of Flock Safety cameras, Axon body cameras, recording glasses, card skimmers, AirTags, drones, proximity beacons and pentest hardware. On the 2.8" CYD it listens on 2.4 GHz and runs standalone on the bare board — no PC, no extras, just plug it into USB. A few other boards hear more: the NM-CYD-C5 scans 5 GHz as well, and the T-Watch S3 listens to LoRa, with GPS on the S3 Plus (see Boards).
The UI is a vaporwave-themed take on the SquachWare aesthetic: matrix digital rain, Squachy the mascot, full-screen dramatic ALERT overlays, and the glitchy SquachWatch wordmark.
That is the firmware itself, not a mockup.
Every frame above was rendered by the same C++ that runs on the board,
compiled for a PC.
Click it to drive it in your browser →
| Type | What | How |
|---|---|---|
FLOCK |
Flock Safety ALPR cameras | 49 WiFi OUI prefixes + flock- and bare Flock SSIDs + BLE names (Flock, Penguin, Pigvision, a bare ten-digit battery serial) + company ID 0x09C8 + Flock's own BLE service UUID |
AXON |
Axon body cameras, TASERs, LE equipment | 3 WiFi OUI + SSID prefixes AB2-/AB3-/AB4-/AXON- |
META |
Camera glasses — Ray-Ban Meta, Snap Spectacles | BLE service UUID 0xFD5F + Meta / Luxottica / Snap company IDs |
SKIMMER |
Bluetooth card skimmers (HC-05/06/03, RN42, BT04-A) | BLE advertised-name match + SPP UUID 0x1101 + 3 OUI |
RAVEN |
Raven gunshot detector | Any service UUID from 0x3100 to 0x3500 |
AIRTAG |
Apple AirTag / Find My trackers | Company ID 0x004C + Find My payload check |
DRONE |
Remote ID drones | Remote ID in a BLE advert's service data (0xFFFA) or in a WiFi beacon's vendor element, then the ASTM F3411 message decoded — aircraft position, altitude, serial, and the operator's location |
ALPR |
Motorola Solutions / Genetec plate readers | 7 WiFi OUI (5 Motorola, 2 Genetec) |
CAMERA |
Generic / covert IP cameras | 17 WiFi OUI (Wyze, Amazon, Tuya, Verkada, Avigilon, Axis, …) |
SAMSUNG_TAG |
Samsung Galaxy SmartTag / SmartTag+ | BLE service UUID 0xFD5A |
GOOGLE_TAG |
Google Find My Device trackers (Chipolo, Pebblebee, Moto Tag) | BLE service UUID 0xFEAA |
TILE |
Tile BLE trackers | BLE service UUID 0xFEED / 0xFEEC |
RING |
Ring doorbells / cameras | 15 WiFi OUI (Ring LLC's registered block + Amazon's) |
DEAUTH |
WiFi deauthentication floods | Rate-detected burst, not a signature: 12 deauth or disassociation frames in 3 s from one transmitter, or 6 of them to the broadcast address, or 24 broadcast ones from any mix of senders (a tool spoofing many networks at once) |
EVILTWIN |
Rogue / spoofed access points | One SSID beaconing from two BSSIDs that disagree about encryption |
IBEACON |
Retail proximity beacons | Exact Apple header 4C 00 02 15 — off by default, see below |
HACKER |
Flipper Zero, Pwnagotchi, WiFi Pineapple, ESP deauthers | Flipper Zero's service UUIDs 0x3081–0x3083 and its name (not Flipper's company ID or OUI, which the BUSY Bar desk sign uses); the Pwnagotchi's own beacon payload; Pineapple_ and pwned SSIDs |
Every hardware prefix in the firmware was checked against the IEEE registry rather than against other detectors. Of 97 rows: 33 High, 4 Medium, 60 Low.
That grading matters most on FLOCK, where exactly one of 49 prefixes is
registered to Flock Safety and the rest are the generic chip and module
makers' blocks they build on (Espressif, Liteon, Silicon Labs and friends) —
real evidence, shared with every dev board on earth.
ALERT FILTER is a minimum-confidence gate, so setting it to High keeps a
passing ESP32 in the log without taking over the screen.
The audit also removed 00:0E:58, which sat here for eleven releases
labelled "Vigilant" and is registered to Sonos. Every speaker in range
was being logged as a plate reader.
IBEACON ships switched off — not a judgement about importance, one about
volume. One shop can put more beacons in range than this device would
otherwise see all week. It is one tap away in TYPE FILTER.
Not sure which to buy? The 2.8" CYD (ESP32-2432S028R) is about $15 and is the board everything here is designed on: built-in 320×240 TFT, resistive touch, a microSD slot and an RGB light, and nothing else to add. No GPS, no extra modules; the board is the whole device. Every board below is on the web flasher. BETA means it runs the whole firmware but has had fewer hours on it. The longer answer is in docs/FAQ.md.
| Board | Flasher | Worth knowing |
|---|---|---|
| 2.8" CYD — ESP32-2432S028R | Yes | Ships with an ST7789 or an ILI9341 screen depending on the batch, and the flasher has both. A solid white screen means try the other one |
| DIYmalls 2.8" — JC2432W328C (capacitive) | Yes | Uses the shared ST7789 cyd / cyd-fast firmware with runtime touchscreen detection. Hardware guide |
| 3.2" capacitive — ESP32-2432S032C | Yes | IPS screen, capacitive touch |
| 3.2" resistive — Freenove FNK0103 | Yes | IPS screen |
| RL Phantom 2.4" — ESP32-2432S024R | Yes | Status light on the front |
| AWOK 2.4" — ESP32 Marauder v6.1 | Yes | |
| 3.5" resistive / capacitive — ESP32-3248S035R / C | BETA | |
| ESP32-32E 2.8" / 3.5" — E32R28T / E32R35T | Via another build | Takes the 2.8" CYD ILI9341 build and the 3.5" resistive one; type the code into the flasher's board finder |
| Freenove ESP32-S3 2.8" — FNK0104B | BETA | Capacitive touch, SDMMC card slot, WS2812 light, battery connector. Torn screen? On the flasher, untick 80 MHz under Advanced for the 40 MHz build. Pins in docs/PINOUT.md |
| Freenove ESP32-S3 4.0" — FNK0104S | BETA (build it yourself) | The 2.8"'s board with a 320×480 ST7796: pio run -e freenove-s3-40 -t upload. Not on the flasher yet |
| Freenove ESP32-S3 3.5" — FNK0104N | BETA | The black 3.5": a 320×480 panel on its own QSPI driver, capacitive touch, SDMMC card slot, WS2812 light, battery connector. Big text, and pets at double size |
| Elecrow CrowPanel Advance 7.0 | BETA | 800×480, drawn at 400×240 doubled on purpose. Has a buzzer, silent unless you switch it on. docs/CROWPANEL7.md |
| RockBase NM-CYD-C5 | BETA | The 2.8" CYD's glass on an ESP32-C5, the first RISC-V chip here. Scans 5 GHz too (WIFI BANDS in Settings). docs/NM-CYD-C5.md |
| Marauder V8 (justcallmekoko) | BETA | The ESP32-C5 Marauder: 2.8" screen, GPS for wardriving to the SD card (a WiGLE file), and a battery gauge. Scans 5 GHz too |
| Waveshare ESP32-C5-Touch-LCD-2.8 | BETA | An ESP32-C5 with a 2.8" capacitive touchscreen and 32 MB flash. Scans 5 GHz too. Not yet on the flasher: pio run -e waveshare-c5-28 -t upload. docs/WAVESHARE-C5-28.md |
| LilyGo T-Deck Plus | BETA | ESP32-S3 handheld: 2.8" screen, capacitive touch, a real keyboard that types into the message and password screens, speaker, GPS for wardriving, SD card, 2000 mAh battery, and LoRa: it listens to Meshtastic and MeshCore at once like the T-Watch, and can send to their public channels from the keyboard (off until you turn on LORA TX). The trackball is not used yet. Pins in docs/PINOUT.md |
| M5Stack StickS3 | BETA | 1.14" screen, landscape, two buttons. A keychain: shake and knock poke Squachy, FOB MODE. docs/SMALL-BOARDS.md |
| M5Stack Cardputer ADV | BETA | Driven from its keyboard, with hotkeys. Not the original Cardputer. SD card, the XL mod EXT screen, and a Grove GPS for wardriving. docs/SMALL-BOARDS.md |
| LilyGo T-Watch S3 / S3 Plus | BETA | On your wrist, with a battery and a buzz. Listens to LoRa; the S3 Plus adds GPS. See On the watch |
| M5Stack Tab5 | Test builds only (?lab=1) |
5" 1280×720 tablet on an ESP32-P4, whose radio is a separate ESP32-C6. WiFi and Bluetooth detection both work, but the C6 needs our firmware written first. No SD, sound or battery yet. docs/TAB5.md |
Board builds and their confirmed hardware support are listed in
platformio.ini. Compatible variants can share an environment when runtime
detection handles their hardware differences, as with the original CYD and
the DIYmalls JC2432W328C.
No build tools, no IDE, no cloning anything — flash a board straight from your browser:
Works in Firefox, Chrome, Edge, or Brave on desktop. Pick your board from the list (it is grouped by family, and there is a box for the code printed on the back if you are not sure which you have), plug in, click Connect & Install, done. A T-Watch has its clock set for it once the install finishes.
Three steps:
sh
git clone https://github.com/skizzophrenic/SquachWatch-CYD
cd SquachWatch-CYDsh
pio run -t upload
For a board that is not the default three, name its build, e.g.
pio run -e freenove-s3 -t upload.The first build pulls the TFT_eSPI, XPT2046, and NimBLE-Arduino libraries; after that it's incremental.
A full beginner-friendly walkthrough is in docs/BUILD.md.
Your settings, PIN and squad stay put whichever way you go.
| How | Where | Boards |
|---|---|---|
| **UPDATE O |
| 日期 | 榜单 | 排名 | 周期新增 | 总 STAR |
|---|