Skip to main content

Troubleshooting & common issues

A field guide to the symptoms operators and installers hit most often, grouped by component. Each entry pairs a visible symptom with the underlying cause and the practical fix — enough to recognize and resolve an issue without diving into the code.

Recorder

The recorder is an ESP32-S3 device with a small color display. Most issues fall into a few recognizable classes.

SymptomLikely causeWhat to do
Screen lights up but freezes at the boot spinner (device otherwise finishes starting)The display's refresh timer isn't running, so the UI never repaintsRecheck the UI library configuration after any library update — a reinstall can silently reset it
Records and registers normally but can't self-update over the airFlashed with a firmware layout that has no spare update slotReflash using the dual-slot layout that supports over-the-air updates
"Server registration failed" during setupGraphics memory crowded out the contiguous block the secure connection needsKeep display buffers and working memory in external PSRAM, not internal RAM
Black screen after a manual firmware flashWrong flash mode used during the manual flashReflash with the correct, compatible flash settings (the standard upload tool handles this automatically)
Device doesn't appear as a serial port when plugged inFirmware built without USB serial supportRebuild with USB serial enabled
Battery reads wrong or the device restarts in a loopBattery sensing wired to the wrong pin for this chipRestore the correct battery sense pin for the ESP32-S3
Over-the-air update fails on a device with a large backlogFragmented memory leaves too little room for the secure downloadReboot the device first, let it come back online, then trigger the update

Pendant

The pendant is a small wearable that streams audio over standard Bluetooth Low Energy.

SymptomLikely causeWhat to do
Firmware runs but the pendant never advertises and exposes no serial portFlashed with an incompatible board core that overwrites part of the Bluetooth stackReflash using the correct board core; recover a corrupted board by restoring its Bluetooth stack first
App can't find the pendant when scanningThe pendant's name is only in its scan response, and a cached name may be staleScan without a service filter and match on any of the advertised identifiers
Brief gaps in audio while connectedNormal — the pendant sleeps during silence to save powerNot a disconnect; no action needed
Harsh buzzing on loud audioLoudness boost applied in two places at onceUse a single loudness stage (see the Pendant guide)

Backend

The backend spans an Device API, a long-running container that runs AI processing, and cloud storage. Audio processing is intentionally asynchronous.

SymptomLikely causeWhat to do
A session stays stuck in "processing" indefinitelyA long AI job was run inside a short-lived edge function and hit its execution time limitKeep AI processing in the long-running container, never inline in an edge function
Duplicate recordings appear for one sessionTwo components processed the same session at onceEnsure only the container performs processing
Large recordings fail to download during processingA project-wide file-size limit was set below the size of a long takeRaise the storage size limit at the project level, not just per bucket
Device registration breaks after a redeploy ("Setup link expired")The API was redeployed with token verification misconfiguredRedeploy the device and token services with their intended verification settings

Development environment

Dynamic LAN address

The development machine's local network address can change between sessions. A stale address is a common reason the app or device provisioning "suddenly" can't reach it — verify the current address first before assuming a deeper fault.

See Known issues for the broader list of tracked items.