A/B slot design
Active firmware lives in one slot, the incoming update goes into the other. The bootloader only switches after the full image is received, verified and committed. At no point are both slots in an inconsistent state.
Fail-safe A/B bootloader that receives firmware updates as audio. Encode, play, done -- no USB, no debug probe, no special tools. Just a WAV file and a 3.5 mm cable.
Built for resource-constrained MCUs with no floating-point hardware and no external oscillator.
KARON turns an existing audio input into a firmware update channel. The user holds a button during power-on, plays a WAV file from any device, and waits for the LED to confirm. If anything goes wrong -- cable pulled, power loss, corrupted file -- the module reboots into the previous working firmware. It cannot brick.
Active firmware lives in one slot, the incoming update goes into the other. The bootloader only switches after the full image is received, verified and committed. At no point are both slots in an inconsistent state.
Firmware is encoded as four audio tones. Each tone carries two bits. No amplitude or phase measurement needed -- just which frequency has the most energy. Works through uncalibrated analog front-ends and cheap phone DACs.
The transmitter and receiver clocks are never synchronized. KARON measures the drift during a calibration preamble and continuously corrects it using a Bresenham-style accumulator that distributes fractional corrections evenly across the stream.
Every packet is CRC-checked and sent twice. An LFSR scrambler breaks up repetitive byte patterns in the firmware image that would otherwise degrade detection reliability. Packet gaps prevent cascade failures from propagating across the stream.
The full engineering story -- why audio, how the Goertzel filter works, what went wrong,
and how every design decision connects back to the constraint of building a bootloader over
the worst possible transport.
Read the KARON lab notes →
© Oscaria Audio. Berlin, Germany.