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

Question about DFU on Mesh SDK

Hi, teams.

I am trying to implement DFU functionality on mesh node devices.

Currently, I am using Mesh SDK 4.1.0 and have read DFU-related documents, but still something is not clear.

  1. Doing DFU via nRFConnect for Mobile in mesh device is not possible for now. Right?
  2. There are two kinds of bootloader: serial / non-serial. Which kind of bootloader should I use, if I want to do DFU over BLE, not using UART?
  3. The actual DFU process for each device is still unclear to me.
    1. "nrfutil dfu serial ..." command can send DFU over the air from first device to second device, Right?
    2. If a. is correct, what is the firmware requirement for two devices(sender / receiver)?
    3. "nrfutil dfu serial ..." command is the only method for DFU in Mesh ? Or there is other alternative?

TIA

Parents
  • Hi,

    Sorry for late response.

    1. Yes, that is correct. You can't do Mesh DFU over nRF Connect.

    2. You can't do Mesh DFU over BLE, there is no solution for this. The serial bootloader is used by default for Mesh DFU.

    3a. Yes, that is correct.

    3b. Both devices must have an application with DFU support and bootloader.

    3c. This is the only method that we have implemented. If you want to do it some other way, you have to implement that yourself.

  • Hi,

    1. No, they don't have to be in the same network. Have a look at this.

    2. We do not have a proper solution for this, but what you can do is to put a network index in the Firmware ID, and just accept DFU with the correct network index. This would not require different firmware in each device, you can accept the DFUs you want, even if they comes in as "relay request"-events.

Reply Children
  • Hi.

    Still, I cannot fully understand the concept.

    1. Do you mean the whole mesh nodes will try to update firmware if I started DFU with one device? By default, Or with some modification you mentioned - "accept the DFUs, even if they comes in relay request"?

    2. What is the exact meaning of "put network index in the firmware ID"? Put some unique ID in --application-id during DFU archive creation with nrfutil?

    3. I found two DFU example in Mesh SDK, dfu example and the one in lpn example. they seems to be quite different approach. Which one should I refer to?

  • Hi,

    1. The devices need to decide themselves if they want to receive the firmware update when they come in, they do this by calling either nrf_mesh_dfu_request(accepting the update), nrf_mesh_dfu_relay(just relaying), or do nothing(just ignore). They can do every thing on each of the NRF_MESH_EVT_DFU_FIRMWARE_OUTDATED and NRF_MESH_EVT_DFU_REQ_RELAY events, but the latter comes for FWIDs that do not match the one that already are on the device.

    2. Yes, that is correct.

    3. DFU in the LPN-example er for standard BLE DFU, refer to the DFU-example for Mesh DFU.

Related