Device Provisioning Is an Identity Problem Disguised as Wi-Fi Setup
Getting credentials onto a device is easy; binding the right device to the right backend identity is the security boundary.
TOPIC
Lessons, explainers, experiments, and implementation notes.
Getting credentials onto a device is easy; binding the right device to the right backend identity is the security boundary.
A new image should become permanent only after the device proves it can boot, verify, connect and report healthy.
Network arrival time is not an audio clock. A stable playout schedule needs its own timing and buffer policy.
Digital audio bugs are often scheduling and buffer bugs that happen to come out of a speaker.
A device should decide whether firmware is authorized, not merely whether the download completed successfully.
Microphone sampling, RTP packetization, network arrival and speaker playout each have their own timing domain.
It is easy to think of saving data as one indivisible event: write it and it is done. In reality, power can disappear in the middle of a write. The next boot then has to distinguish complete, incomplete, and usable state.
A slow monochrome display changes interaction design: information hierarchy matters more than animation.
A regularly fed watchdog does not prove that important work is progressing. A dedicated task can keep feeding the timer while an audio or network task is stuck, making the real failure invisible to the watchdog.
An echo canceller cannot remove what its reference channel does not represent.
Resetting a stuck device is not the same as fixing it; watchdog design needs crash evidence and bounded recovery behavior.
An embedded network client is only useful if it survives AP loss, DHCP renewal and reconnect loops without wedging the application.
Before tuning echo cancellation I verified that the algorithm was receiving the microphone and far-end reference channels I thought it was.
Downloading new firmware is easy; proving the device can recover from a bad update is the real OTA design work.
Once SIP, RTP, codecs, Wi-Fi and a UI share one MCU, memory and timing decisions stop being implementation details.