> ## Documentation Index
> Fetch the complete documentation index at: https://docs.adsumnetworks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Common firmware bugs Adsum catches

> Real runtime failures that general agents miss, and how Adsum closes them by reading the board.

These are the kinds of bugs that build clean and pass review, then fail on hardware. A general agent reads your code and stops there. Adsum reads the board too, which is why it closes them.

## BLE notifications stop working after a reconnect

* **Symptom** notifications work on the first connection, then go silent after the central disconnects and reconnects.
* **Cause** the Client Characteristic Configuration state is tied to the bond, and settings were never loaded, so the stack does not restore the subscription. Often a missing `settings_load()` after `bt_enable()`.
* **How Adsum catches it** it watches the live BLE exchange over the air and on the device log, sees the subscribe step never re-arm after reconnect, and traces it to the missing settings restore rather than to the notification call itself.

## Bond is lost on every cold boot

* **Symptom** pairing works, but the device forgets the bond after a power cycle and forces re-pairing.
* **Cause** `CONFIG_BT_SETTINGS` is enabled without a working flash backing for the settings subsystem, so keys are held in RAM and never persisted.
* **How Adsum catches it** it correlates the boot log with the Kconfig and storage setup, spots that settings have no non-volatile backend, and points at the configuration, not the pairing code.

## ESP firmware builds clean but fails at runtime

* **Symptom** `idf.py build` succeeds, but the device reboots, hangs, or cannot find an app on boot.
* **Cause** a partition-table or sdkconfig mismatch: the flashed layout does not match what the build expects.
* **How Adsum catches it** it reads the serial output through the boot sequence, matches the failure against the partition table and sdkconfig, and fixes the layout instead of chasing application code that was never the problem.

## A bug that only appears across two devices

* **Symptom** each board looks fine on its own, but a central and peripheral (or two nodes) misbehave when talking to each other.
* **Cause** a timing, state, or protocol mismatch that is only visible when both sides are observed together.
* **How Adsum catches it** it captures both log streams at once and correlates them on a shared timeline, so the interaction bug becomes visible instead of hiding between two passing single-device views.

***

These cases come straight from the failure modes our curated knowledge is built on. See the [benchmark](/benchmark) for the head-to-head, or [contribute the bugs you have lived through](/contributing).
