Open badge firmware / CH582M / Rust experiment

The nametag that watches back.

FrogAlert keeps doing the useful thing—showing your name—then briefly listens for nearby Bluetooth signals and flashes a local warning when an explainable rule matches.

  • Detection core tested
  • Firmware not yet released
  • Browser flasher experimental
BADGEMAGIC // 11×44 LOCAL ONLY
CH582M PASSIVE BLE NO CLOUD

Concept UI — not a photograph of supported hardware

The premise

Still a nametag. Occasionally a tiny situational-awareness frog.

01

Wear your name

Upload text and animations through the familiar BadgeMagic app. FrogAlert must preserve that content exactly.

02

Listen briefly

When no app is connected, pause advertising for a short passive BLE scan. No pairing, interrogation, location, or cloud log.

03

Show the hint

Known public-address prefixes or advertised names can trigger COP DETECTED or HAX DETECTED, then the nametag returns.

Proposed radio cycle

One radio. Four deliberate states.

The WCH Bluetooth stack must safely switch between a BadgeMagic-compatible peripheral and a passive observer. Hardware testing decides whether this schedule ships.

  1. ~57 sNAMETAGAdvertising + normal display
  2. 3 sSCANPassive observer window
  3. ~5 sALERTOnly when a rule matches
  4. <1 sRESTOREResume user content

No vaporware arithmetic

What exists today

Every requirement + status →

SHIPPED / HOST

Rust detection core

Allocation-free, no_std, unit-tested matching for public OUIs and advertised names.

cargo test --workspace

PROTOTYPE / BROWSER

Guarded WebUSB path

Read-only target identification, local BIN validation, program/verify sequencing, and explicit safety gates.

node --test tests/*.test.mjs

PLANNED / BADGE

Embedded firmware

Display driver, BadgeMagic GATT, observer scheduling, alert overlay, and physical power/recovery testing.

no release binary yet
Initial conservative match seeds
SignalSourceResultGuardrail
00:25:DFAxon public OUICOP DETECTEDPublic addresses only
B4:1E:52Flock Safety public OUICOP DETECTEDPublic addresses only
Axon Body / TASERAdvertised nameCOP DETECTEDCase-insensitive hint
Flipper / Ray-BanAdvertised nameHAX DETECTEDCase-insensitive hint

Experimental hardware lab

Connect normally with Bluetooth. Replace firmware with USB.

Web Bluetooth cannot install firmware on this badge. It can verify the normal BadgeMagic GATT service. Firmware replacement happens through the CH582 factory USB ISP bootloader.

Checking browser capabilities…
NON-DESTRUCTIVE

Running badge

Ask for a BadgeMagic device advertising service FEE0, then verify characteristic FEE1. This probe changes nothing.

Ready for a compatibility probe.

READ-ONLY FIRST

WCH bootloader

Enter ISP mode with KEY2, then identify the USB target. Connecting does not erase or program anything.

Waiting for a WCH ISP bootloader.

Target
not connected
Bootloader
UID check

FROGALERT / WEBUSB FLASH CONSOLE

Artifact + irreversible-write gate

EXPERIMENTAL · UNTESTED ON HARDWARE

Required. A release must list this exact value; a developer BIN is bound to the value present when selected.

Loading release manifest…

Processed locally. Never uploaded.

File
not loaded
Size
PCB revision(s)
SHA-256
All confirmations are required before the Flash button unlocks
0%
  1. Session ready. No device access has been requested.

Build in the open

Rust, packet tests, hardware gates, and receipts.

FrogAlert is early by design and explicit about what remains. The repository includes the requirements tracker, local build tools, browser protocol tests, release contract, upstream research, and operating memory for the next contributor.