This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Request to enter bootloader mode failed asynchronously.

I was working with the buttonless DFU service that requires bonds and I was able to update my firmware just fine. Then I added Just Works OOB pairing using the nfc_ble_pair_lib. Now whenever the DFU characteristic is written, I receive the "Request to enter bootloader mode failed asynchronously" message. Any idea on what can be causing this?

<info> peer_manager_handler: Connection secured: role: Peripheral, conn_handle: 0, procedure: Encryption
<info> app: Connection secured. Role: 1. conn_handle: 0, Procedure: 0
<info> app: Received indication state 1
<info> app: Writing peer data to the bootloader...
<error> app: Request to enter bootloader mode failed asynchronously.

  • Hi Jonathan, 

    which nRF52 IC are you using? Also which SDK version and SoftDevice are you using? 

    I took a look in SDK v15.0.0 and the buttonless DFU example prints 

    NRF_LOG_ERROR("Request to enter bootloader mode failed asynchroneously.");

    when the BLE_DFU_EVT_BOOTLOADER_ENTER_FAILED event is passed by the Buttonless Secure DFU service.  This event is generated in either ble_dfu.c or ble_dfu_bonded.c. 

    In ble_dfu.c the BLE_DFU_EVT_BOOTLOADER_ENTER_FAILED  is returned at one location

    1. If ble_dfu_buttonless_bootloader_start_prepare() at line 194 in on_hvc() ruturns a non-zero error code, i.e. not NRF_SUCESS.

    In ble_dfu_bonded.c. BLE_DFU_EVT_BOOTLOADER_ENTER_FAILED  is passed to the event handler at four locations, 

    1. If ble_dfu_buttonless_bootloader_start_finalize() returns a non-zero error code when the PM_EVT_PEER_DATA_UPDATE_SUCCEEDED event is processed in pm_evt_handler()
    2. If ble_dfu_buttonless_bootloader_start_finalize returns a non-zero error code when the PM_EVT_PEER_DATA_UPDATE_FAILED event is processed in pm_evt_handler()
    3. If ble_dfu_buttonless_resp_send at line 266 returns a non-zero error code in ble_dfu_buttonless_on_sys_evt()
    4. If ble_dfu_buttonless_resp_send at line 358 returns a non-zero error code in ble_dfu_buttonless_on_ctrl_pt_write()

    Can you please place a breakpoint at these 5 locations and see which one is triggered?

    Best regards
    Bjørn

  • Somehow I didn't have this set:
    NRF_SDH_BLE_SERVICE_CHANGED 1

    However now, I am getting
    "Enabling indications failed"
    When trying to perform a bonded DFU.

    I also can not enable indications on the DFU characteristic manually via the LightBlue GATT client app

  • Setting #define NRF_SDH_BLE_SERVICE_CHANGED 1 Fixed this issue. The phone needed to be turned off and on again in order to completely erase the cache. forgetting the bluetooth device did not do this on it's own. 

Related