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 Reply Children
  • 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. 

Related