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