On master (33e095d, OTAFIX 2.3 + #34), a BLE OTA started from the Meshtastic Android app (buttonless trigger → DFU_MAGIC_OTA_APPJUM, SoftDevice inherited from the app) transfers fine, but after ACTIVATE_AND_RESET the node goes dark - LEDs solid, no USB, no advertising - for ~90 s before it boots the new app. RAK4631, firmware 2.8.0.abd3348, two runs:
06:29:21 USB disconnect (activate) → 06:30:51 app enumerates 90 s
07:16:31 USB disconnect (activate) → 07:18:01 app enumerates 90 s
The 90 s is the application's watchdog: Meshtastic arms the nRF52 WDT, app-jump keeps it running, the bootloader feeds it from wait_for_events() - so after activation we are spinning somewhere outside that loop (post-bootloader_dfu_start: sd_softdevice_disable() → usb_teardown() → NVIC_SystemReset(), with the app's SoftDevice instance). A hard fault would reset immediately via app_error_fault_handler, so this is a hang, not a fault.
User-visible: the Android app's post-update reconnect times out and reports failure even though the update succeeded.
Context: the 0.11 rebase in #32 does not have this hang (reboots ~1 s after activate) but has a mirror-image one before START_DFU on the same path. Debug output is RTT-only, so pinning it down needs an SWD probe or a UART log backend.
On master (
33e095d, OTAFIX 2.3 + #34), a BLE OTA started from the Meshtastic Android app (buttonless trigger →DFU_MAGIC_OTA_APPJUM, SoftDevice inherited from the app) transfers fine, but afterACTIVATE_AND_RESETthe node goes dark - LEDs solid, no USB, no advertising - for ~90 s before it boots the new app. RAK4631, firmware 2.8.0.abd3348, two runs:The 90 s is the application's watchdog: Meshtastic arms the nRF52 WDT, app-jump keeps it running, the bootloader feeds it from
wait_for_events()- so after activation we are spinning somewhere outside that loop (post-bootloader_dfu_start:sd_softdevice_disable()→usb_teardown()→NVIC_SystemReset(), with the app's SoftDevice instance). A hard fault would reset immediately viaapp_error_fault_handler, so this is a hang, not a fault.User-visible: the Android app's post-update reconnect times out and reports failure even though the update succeeded.
Context: the 0.11 rebase in #32 does not have this hang (reboots ~1 s after activate) but has a mirror-image one before START_DFU on the same path. Debug output is RTT-only, so pinning it down needs an SWD probe or a UART log backend.