DFU using BLE stops working when migrating from SDK version 2.9.1 to 3.2.4

Hi,

We have an application where we have a working DFU over BLE with SDK 2.9.1 but once we have migrated to 3.2.4 it has stopped working. Something has obviously changed between those versions, but what do we need to change in order for it to work?

Best regards

Parents
  • A lot of things have changed after NCS 2.9.1

    1. SMP GATT now requires authentication by default, you add CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW=y in your prj,conf Without this SMP might silently reject writes unless client authenticates first.
    2. If your DFU mechanism was using legacy pairing, then add CONFIG_BT_SMP_SC_PAIR_ONLY=n
  • Could

    CONFIG_BT_L2CAP_TX_MTU
    CONFIG_BT_BUF_ACL_TX_SIZE
    CONFIG_BT_BUF_ACL_RX_SIZE
    have something to do with this issue and if so why has it been changed?
  • Sorry for the late reply Anders, 

    The MTU/buffer settings are likely relevant. 

    The web client you are using sends relatively large SMP writes and does not seem to be adapting as well as nRF Connect. Can you please try BLE SMP settings as the current smp_svr sample?

    CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW=y
    CONFIG_MCUMGR_TRANSPORT_BT_REASSEMBLY=y
    CONFIG_MCUMGR_TRANSPORT_NETBUF_SIZE=2475 
    CONFIG_MCUMGR_GRP_OS_MCUMGR_PARAMS=y
    CONFIG_BT_L2CAP_TX_MTU=498
    CONFIG_BT_BUF_ACL_RX_SIZE=502
    CONFIG_BT_BUF_ACL_TX_SIZE=502
    CONFIG_BT_CTLR_DATA_LENGTH_MAX=251

    If authentication is not intended then CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW=y is important since the default might be requiring authentication.

Reply
  • Sorry for the late reply Anders, 

    The MTU/buffer settings are likely relevant. 

    The web client you are using sends relatively large SMP writes and does not seem to be adapting as well as nRF Connect. Can you please try BLE SMP settings as the current smp_svr sample?

    CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW=y
    CONFIG_MCUMGR_TRANSPORT_BT_REASSEMBLY=y
    CONFIG_MCUMGR_TRANSPORT_NETBUF_SIZE=2475 
    CONFIG_MCUMGR_GRP_OS_MCUMGR_PARAMS=y
    CONFIG_BT_L2CAP_TX_MTU=498
    CONFIG_BT_BUF_ACL_RX_SIZE=502
    CONFIG_BT_BUF_ACL_TX_SIZE=502
    CONFIG_BT_CTLR_DATA_LENGTH_MAX=251

    If authentication is not intended then CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW=y is important since the default might be requiring authentication.

Children
No Data
Related