Building Secure OTA Updates for ESP32 Over BLE with Rust

Earlier I wrote about BikeSafe Watchman, I have been busy building firmware that has to survive the real world (gloves on, cold hands, spotty RF, and a phone that is trying its best), I kept learning the same lesson: your protocol is part of your product. For BikeSafe Watchman (an ESP32-C3 BLE device), I wanted a protocol that is: cheap to parse (no JSON, no allocations, no decoding adventures) easy to extend without breaking older apps compact on the wire boring enough to debug at 11pm I kept landing on the same pattern: TLV (Tag, Length, Value). ...

December 11, 2025 · 12 min · Harry Gill  |