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

Related