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

Mesh DFU how to update Softdevice

We have a device with the following configuration:

  • nrf5_SDK_for_Mesh_v3.1.0
  • nRF5_SDK_15.2.0
  • s140_nrf52_6.1.0_softdevice
  • mesh_bootloader_gccarmemb_nrf52840_xxAA

 Our task:  Update a device using Mesh DFU to this configuration:

  • nrf5_SDK_for_Mesh_v4.2.0
  • nRF5_SDK_17.0.2
  • s140_nrf52_7.2.0_softdevice

 We are aware that our application only will run if we also update the softdevice.

Questions:

1/ is it possible to update the softdevice with Mesh DFU?

>> we failed when trying to update the Softdevice

  • We generated an update package this way

nrfutil dfu genpkg --softdevice s140_nrf52_7.0.1_softdevice.hex --company-id <our_own_companyID> --application-id <app_id> --application-version <appl_vers> --sd-req 0xFFFE --mesh <packageName>.zip

Our investigations showed us, that in the mesh_evt_handler() the function fw_updated_event_is_for_me() is called which returns false for a dfu_type NRF_MESH_DFU_TYPE_SOFTDEVICE.

Therefore the function nrf_mesh_dfu_relay() will be called.

  • What are we doing wrong?
  • If we run an Application DFU, nrf_mesh_dfu_request() will be called. Why not for SoftDevice DFU?
  • What is the correct way to generate a package for the softdevice?

2/ Is it possible to update the application AND the softdevice with a single update package (only 1 zip file)?

3/ is there a tutorial how (and in which sequence) to update the SW parts (Bootloader, Softdevice, Application)?

 thanks for the help

Parents Reply
  • Hi, 

    Sorry for the late reply.

    Unfortunately upgrading the SD with a larger footprint is not possible with Mesh DFU. Even though the upgrade might succeed, the application won't start (or cannot be upgraded to new application), because the application start address is fixed in the device page.  Each major revision of the SoftDevice changes its flash footprint. 

    The only way around this (without re-flashing the devices), would be to do some customary trick in the application to update the device page with new values for the application start, length, and softdevice length. More details about device page can be found in the SDK documentation.

Children
Related