Flash the badge uplink once, then let it stage and relay scanner updates over its UART ports.
FoF Badge Scanner
Seeed XIAO ESP32-S3 scanner module — no config needed
BLE + WiFi scanner build
Badge UART pin mapping
Scanner-managed firmware checks
OTA receiver with CRC/NACK relay
Runtime identity: scanner-s3-combo-fof_badge
Your browser does not support Web Serial
Use this for first-time recovery or bench setup; normal scanner updates come through the badge uplink.
Step 2 — Configure Uplink
After flashing the Uplink board, keep it plugged in via USB and fill in your settings below.
The configurator writes directly to the board's flash memory over serial.
Stored on the ESP32 only — never sent to any server.
Your Friend or Foe backend server address.
Unique name for this sensor node.
Optional. WiFi hotspot name for direct phone connection. Leave blank for auto.
Optional. Default is "friendorfoe". Stored on the ESP32 only.
Get the hardware — ESP32-S3 scanner/seed boards + ESP32-S3 uplink + GPS module + OLED display.
See INSTALL.md for the full BOM (~$25-40 total).
Flash the Scanner — connect the ESP32-S3 via USB, click "Flash Scanner (S3)" or "Flash Seed Scanner (S3)" above.
No configuration needed — it auto-starts scanning.
Flash the Uplink — connect the ESP32-S3 uplink board, click "Flash Uplink (S3)".
Configure the Uplink — with the S3 uplink still plugged in, fill in WiFi and backend settings
in Step 2 above and click "Send Configuration to Board". Settings are saved to flash.
Wire the boards — connect TX/RX/GND between Scanner and Uplink, attach GPS and OLED to the Uplink.
See the wiring diagram for pin assignments.
Power on — both boards via USB or a shared 5V supply. The OLED will show connection status,
GPS fix, and drone detection count.
This page is deployed automatically via GitHub Pages with CI-built firmware binaries.
When you click a flash button, your browser downloads the firmware from this site and writes it
to your ESP32 over USB — no installs, no toolchain, no command line.
The configuration step also uses the browser's serial connection to write your WiFi credentials
and backend URL directly to the ESP32's flash memory. Your credentials never leave your browser
— they go straight to the board over USB.
Troubleshooting
"No compatible device found" — make sure you're using a data-capable USB cable (not charge-only).
"Failed to connect" — hold the BOOT button on the ESP32 board while clicking flash, then release after connection starts.
Button says "Not supported" — switch to Chrome or Edge. Firefox and Safari do not support Web Serial.
Config says "No response" — press the RST button on the S3 uplink board, then quickly click "Send Configuration". The board waits 3 seconds for config at boot.
Firmware files missing — the CI may not have run yet. Check Actions or download from Releases.