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

BLE DFU Speed difference between SDK14.2 and SDK15.3

Config1:
MCU : nRF52840
SDK : SDK15.3
Softdevice : s340_nrf52_6.1.1_softdevice (SDK15.3)
Phone: iOS version 12.1

Config2:
MCU : nRF52832
SDK : SDK14.2
Softdevice : s332_nrf52_5.0.0_softdevice (SDK14.2)
Phone: iOS version 12.1


We have use SDK Bootloader example code for both SDK14.2 and SDK15.3 for BLE DFU. Our bootloader is based on the BLE secure bootloader example from SDK14.2 and SDK15.3

Now if we use SDK14.2 then it will take max 2 minute for BLE application upgrade.
and if we use SDK15.3 then it will take around 12 to 15 minute for BLE application upgrade.

Note: Application file size which is used in both upgrade is same.

so my question is for SDK15.3 boothloader example code takes more time then SDK14.2 bootloader example code.
Why it takes more time?

I use same app and mobile device in both condition.

Thanks,
Sandip Divani

Parents
  • Hi, 

    12 to 15 minutes is a lot. 
    There must be something wrong here. I suspect that the connection interval was set to too large. 
    Could you please check the connection interval when doing DFU ? 

    As sniffer trace could be useful to reveal what caused the long DFU. 

  • Hung Bui

    Following is our connection parameter. Is there any wrong?

    // <h> BLE DFU connection

    //==========================================================
    // <o> NRF_DFU_BLE_MIN_CONN_INTERVAL - Minimum connection interval (units).
    // <i> Minimum GAP connection interval, in 1.25 ms units.

    #ifndef NRF_DFU_BLE_MIN_CONN_INTERVAL
    #define NRF_DFU_BLE_MIN_CONN_INTERVAL 6 //12
    #endif

    // <o> NRF_DFU_BLE_MAX_CONN_INTERVAL - Maximum connection interval (units).
    // <i> Maximum GAP connection interval, in 1.25 ms units.

    #ifndef NRF_DFU_BLE_MAX_CONN_INTERVAL
    #define NRF_DFU_BLE_MAX_CONN_INTERVAL 80 //12
    #endif

    // <o> NRF_DFU_BLE_CONN_SUP_TIMEOUT_MS - Supervision timeout (ms).
    // <i> GAP connection supervision timeout, in milliseconds.

    #ifndef NRF_DFU_BLE_CONN_SUP_TIMEOUT_MS
    #define NRF_DFU_BLE_CONN_SUP_TIMEOUT_MS 4000 //6000
    #endif

    // </h>
    //==========================================================

    Thanks,

    Sandip Divani

  • Hi Sandip, 

    Please try to get the actual connection interval when the DFU is transmitting. It's the p_ble_evt->gap_evt.connected.conn_params. min_conn_interval value when you receive BLE_GAP_EVT_CONNECTED event inside ble_evt_handler()

    Or you can capture a sniffer trace. It gives more information with the sniffer trace. 

Reply Children
No Data
Related