Want to know the speed of the nrf54 series device firmware update

We evaluated the BLE Mesh DFU performance on the nRF52840 and observed that transferring a 342 KB binary took approximately 36 minutes. This aligns closely with the documentation provided on Nordic’s website. We would like to confirm whether the DFU speed for the nRF54 Series remains around ~1 kbps, or if higher throughput can be expected.

  • I’m using the default distributor and target sample code without any modifications to the configuration. If I change the default value to 500 or 1000 in the distributor code, will it improve the transmission speed? Alternatively, could you guide me on how to configure the settings to achieve higher transmission speeds?


    config BT_MESH_TX_BLOB_CHUNK_SEND_INTERVAL
    int "BLOB Client chunk send interval"
    default 0
    range 0 2147483647

  • This is what I heard from the internal experts:

    "Wondering why do they need even faster DFU timing than default timing of unicast (i.e. one to one) mesh DFU transfer? Is customer's ultimate goal is to upgrade just one or two  nodes (using unicast DFU) or do hundreds of nodes simultaneously (using multicast DFU) in parallel?  Also, is it acceptable for their use-case to have a performance bottleneck (or missed messages) for other command and control mesh messages (such as turning the FAN on or off, or getting temperature reading from the sensor, etc.) when multicast or unicast mesh DFU is in progress?"

    -Priyanka

  • I tried using multicast by subscribing all targets to the group address 0xC000. I then added this group address to the receiver target list in the distributor. After starting the DFU process, it did not work. Am I missing something in this procedure?

  • Nagajans said:
    I tried using multicast by subscribing all targets to the group address 0xC000.

    That's correct. Make sure you have subscribed Firmware Update Server, and BLOB Transfer Server model instances on the target devices. It is necessary to configure both for subscriptions.

    Nagajans said:
    I then added this group address to the receiver target list in the distributor.

    You cannot add group address to target list. The target list is still the unicast addresses for the target. The DFU start command becomes different when you want to use the group address. So,

     

    For Unicast DFU transfer, you will use something like this (if your appkey index is 0 and slot index is 0):

    mesh models dfd start 0 0

     

    For Multicast DFU transfer, you will use something like this (if your appkey index is 0 and slot index is 0, groupcast address of 0xC000):

    mesh models dfd start 0 0 0xC000

    Also, you can try using iOS nRF Mesh app to evaluate this (mesh DFU including group transfer). We recently added this feature to iOS mobile app, we don't have exact documentation yet explaining this, but it should be possible to evaluate this on your own by experimenting. It will alleviate a lot of hassle in trying to configure publish/subscribe settings and setting up of the transfer.

    -Priyanka

  • I tested broadcasting with a multicast address, but it seems to take longer compared to updating a single device, since the Distributor waits for responses from each target. Is there a way to perform the update without requiring responses, to make the process faster?

Related