Duration of DFU for multiple nodes simultaneously

Hi,

I made DFU procedure with a distributor (nRF52840 DK) and one target (nRF52840 dongle): procedure completed successfully in approximately 45min

Then I made:DFU procedure with:

a distributor and two target: procedure completed successfully in approximately 90min (that is 2*45min)

a distributor and four target: procedure completed successfully in approximately 180min (that is 4*45min)

a distributor and six target: procedure completed successfully in approximately 270min (that is 6*45min)

a distributor and eight target: procedure completed successfully in approximately 360min (that is 8*45min)

So it seems that if I have N targets,to update,  the DFU procedure will take about N*45min! A lot of time, in particular if N>>1!

Is it possible to know how the procedure is realized? The Distributor sends packets to only a target at a time or it sends packets to all targets simultaneously and then waits for acks?

Thanks in advance for your response

Parents
  • Hi,

    in addition,

    I went on with my DFU procedure test, and I found that I manage to update 10 targets max. When I try to update more than 10 Targest the procedure fails and this is the final part of the report that I receive through serial:

    [00:21:56.037,475] <dbg> bt_mesh_blob_cli: chunk_send: 36 / 37 size: 113
    [00:21:56.037,475] <dbg> bt_mesh_blob_cli: blob_cli_broadcast: 11 targets
    [00:22:05.548,522] <dbg> bt_mesh_blob_cli: broadcast_complete: continuing
    [00:22:05.548,553] <dbg> bt_mesh_blob_cli: chunk_send: 37 / 37 size: 28
    [00:22:05.548,583] <dbg> bt_mesh_blob_cli: blob_cli_broadcast: 11 targets
    [00:22:09.010,528] <dbg> bt_mesh_blob_cli: broadcast_complete: continuing
    [00:22:09.010,528] <dbg> bt_mesh_blob_cli: block_check:
    [00:22:09.010,559] <dbg> bt_mesh_blob_cli: blob_cli_broadcast: 11 targets
    [00:22:09.119,476] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:09.119,506] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:09.119,537] <dbg> bt_mesh_blob_cli: rx_block_status: 0x0044: block: 0 status: 10
    [00:22:09.119,537] <wrn> bt_mesh_blob_cli: Dropping 0x0044: 10
    [00:22:09.119,567] <err> bt_mesh_dfu_cli: Target 0x0044 failed: 3
    [00:22:09.119,567] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x0044, pending: 11
    [00:22:09.319,702] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:09.319,732] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:09.319,763] <dbg> bt_mesh_blob_cli: rx_block_status: 0x0049: block: 0 status: 10
    [00:22:09.319,763] <wrn> bt_mesh_blob_cli: Dropping 0x0049: 10
    [00:22:09.319,793] <err> bt_mesh_dfu_cli: Target 0x0049 failed: 3
    [00:22:09.319,793] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x0049, pending: 10
    [00:22:09.430,816] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:09.430,877] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:09.430,877] <dbg> bt_mesh_blob_cli: rx_block_status: 0x0039: block: 0 status: 10
    [00:22:09.430,908] <wrn> bt_mesh_blob_cli: Dropping 0x0039: 10
    [00:22:09.430,908] <err> bt_mesh_dfu_cli: Target 0x0039 failed: 3
    [00:22:09.430,938] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x0039, pending: 9
    [00:22:09.931,091] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:09.931,121] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:09.931,152] <dbg> bt_mesh_blob_cli: rx_block_status: 0x004b: block: 0 status: 10
    [00:22:09.931,152] <wrn> bt_mesh_blob_cli: Dropping 0x004b: 10
    [00:22:09.931,182] <err> bt_mesh_dfu_cli: Target 0x004b failed: 3
    [00:22:09.931,213] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x004b, pending: 8
    [00:22:10.032,226] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:10.032,287] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:10.032,287] <dbg> bt_mesh_blob_cli: rx_block_status: 0x004c: block: 0 status: 10
    [00:22:10.032,318] <wrn> bt_mesh_blob_cli: Dropping 0x004c: 10
    [00:22:10.032,318] <err> bt_mesh_dfu_cli: Target 0x004c failed: 3
    [00:22:10.032,348] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x004c, pending: 7
    [00:22:10.085,845] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:10.085,876] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:10.085,906] <dbg> bt_mesh_blob_cli: rx_block_status: 0x004d: block: 0 status: 10
    [00:22:10.085,906] <wrn> bt_mesh_blob_cli: Dropping 0x004d: 10
    [00:22:10.085,937] <err> bt_mesh_dfu_cli: Target 0x004d failed: 3
    [00:22:10.085,937] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x004d, pending: 6
    [00:22:10.154,693] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:10.154,724] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:10.154,754] <dbg> bt_mesh_blob_cli: rx_block_status: 0x004e: block: 0 status: 10
    [00:22:10.154,754] <wrn> bt_mesh_blob_cli: Dropping 0x004e: 10
    [00:22:10.154,785] <err> bt_mesh_dfu_cli: Target 0x004e failed: 3
    [00:22:10.154,815] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x004e, pending: 5
    [00:22:10.230,072] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:10.230,133] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:10.230,133] <dbg> bt_mesh_blob_cli: rx_block_status: 0x004f: block: 0 status: 10
    [00:22:10.230,163] <wrn> bt_mesh_blob_cli: Dropping 0x004f: 10
    [00:22:10.230,194] <err> bt_mesh_dfu_cli: Target 0x004f failed: 3
    [00:22:10.230,194] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x004f, pending: 4
    [00:22:10.304,748] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:10.304,809] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:10.304,809] <dbg> bt_mesh_blob_cli: rx_block_status: 0x0050: block: 0 status: 10
    [00:22:10.304,840] <wrn> bt_mesh_blob_cli: Dropping 0x0050: 10
    [00:22:10.304,840] <err> bt_mesh_dfu_cli: Target 0x0050 failed: 3
    [00:22:10.304,870] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x0050, pending: 3
    [00:22:10.386,627] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:10.386,688] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f8ffffff1f
    [00:22:10.386,688] <dbg> bt_mesh_blob_cli: rx_block_status: 0x0051: block: 0 status: 10
    [00:22:10.386,718] <wrn> bt_mesh_blob_cli: Dropping 0x0051: 10
    [00:22:10.386,718] <err> bt_mesh_dfu_cli: Target 0x0051 failed: 3
    [00:22:10.386,749] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x0051, pending: 2
    [00:22:14.252,777] <dbg> bt_mesh_blob_cli: retry_timeout: 12
    [00:22:14.347,717] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:14.347,747] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:14.347,747] <dbg> bt_mesh_blob_cli: rx_block_status: 0x004a: block: 0 status: 10
    [00:22:14.347,778] <wrn> bt_mesh_blob_cli: Dropping 0x004a: 10
    [00:22:14.347,778] <err> bt_mesh_dfu_cli: Target 0x004a failed: 3
    [00:22:14.347,808] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x004a, pending: 1
    [00:22:14.347,961] <dbg> bt_mesh_blob_cli: broadcast_complete: continuing
    [00:22:14.347,991] <dbg> bt_mesh_blob_cli: block_check_end:
    [00:22:14.347,991] <dbg> bt_mesh_blob_cli: end: 0
    [00:22:14.348,022] <dbg> bt_mesh_dfu_cli: dfu_failed: 3
    [00:22:14.348,052] <dbg> bt_mesh_dfd_srv: dfu_ended: reason: 3, phase: 1, apply: 1
    Distribution phase changed to Failed

    Could you please tell me why this happens? Why the limit of 10 Targets? What can I do for updating more than 10 Targets?

    Thank you

Reply
  • Hi,

    in addition,

    I went on with my DFU procedure test, and I found that I manage to update 10 targets max. When I try to update more than 10 Targest the procedure fails and this is the final part of the report that I receive through serial:

    [00:21:56.037,475] <dbg> bt_mesh_blob_cli: chunk_send: 36 / 37 size: 113
    [00:21:56.037,475] <dbg> bt_mesh_blob_cli: blob_cli_broadcast: 11 targets
    [00:22:05.548,522] <dbg> bt_mesh_blob_cli: broadcast_complete: continuing
    [00:22:05.548,553] <dbg> bt_mesh_blob_cli: chunk_send: 37 / 37 size: 28
    [00:22:05.548,583] <dbg> bt_mesh_blob_cli: blob_cli_broadcast: 11 targets
    [00:22:09.010,528] <dbg> bt_mesh_blob_cli: broadcast_complete: continuing
    [00:22:09.010,528] <dbg> bt_mesh_blob_cli: block_check:
    [00:22:09.010,559] <dbg> bt_mesh_blob_cli: blob_cli_broadcast: 11 targets
    [00:22:09.119,476] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:09.119,506] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:09.119,537] <dbg> bt_mesh_blob_cli: rx_block_status: 0x0044: block: 0 status: 10
    [00:22:09.119,537] <wrn> bt_mesh_blob_cli: Dropping 0x0044: 10
    [00:22:09.119,567] <err> bt_mesh_dfu_cli: Target 0x0044 failed: 3
    [00:22:09.119,567] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x0044, pending: 11
    [00:22:09.319,702] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:09.319,732] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:09.319,763] <dbg> bt_mesh_blob_cli: rx_block_status: 0x0049: block: 0 status: 10
    [00:22:09.319,763] <wrn> bt_mesh_blob_cli: Dropping 0x0049: 10
    [00:22:09.319,793] <err> bt_mesh_dfu_cli: Target 0x0049 failed: 3
    [00:22:09.319,793] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x0049, pending: 10
    [00:22:09.430,816] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:09.430,877] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:09.430,877] <dbg> bt_mesh_blob_cli: rx_block_status: 0x0039: block: 0 status: 10
    [00:22:09.430,908] <wrn> bt_mesh_blob_cli: Dropping 0x0039: 10
    [00:22:09.430,908] <err> bt_mesh_dfu_cli: Target 0x0039 failed: 3
    [00:22:09.430,938] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x0039, pending: 9
    [00:22:09.931,091] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:09.931,121] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:09.931,152] <dbg> bt_mesh_blob_cli: rx_block_status: 0x004b: block: 0 status: 10
    [00:22:09.931,152] <wrn> bt_mesh_blob_cli: Dropping 0x004b: 10
    [00:22:09.931,182] <err> bt_mesh_dfu_cli: Target 0x004b failed: 3
    [00:22:09.931,213] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x004b, pending: 8
    [00:22:10.032,226] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:10.032,287] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:10.032,287] <dbg> bt_mesh_blob_cli: rx_block_status: 0x004c: block: 0 status: 10
    [00:22:10.032,318] <wrn> bt_mesh_blob_cli: Dropping 0x004c: 10
    [00:22:10.032,318] <err> bt_mesh_dfu_cli: Target 0x004c failed: 3
    [00:22:10.032,348] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x004c, pending: 7
    [00:22:10.085,845] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:10.085,876] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:10.085,906] <dbg> bt_mesh_blob_cli: rx_block_status: 0x004d: block: 0 status: 10
    [00:22:10.085,906] <wrn> bt_mesh_blob_cli: Dropping 0x004d: 10
    [00:22:10.085,937] <err> bt_mesh_dfu_cli: Target 0x004d failed: 3
    [00:22:10.085,937] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x004d, pending: 6
    [00:22:10.154,693] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:10.154,724] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:10.154,754] <dbg> bt_mesh_blob_cli: rx_block_status: 0x004e: block: 0 status: 10
    [00:22:10.154,754] <wrn> bt_mesh_blob_cli: Dropping 0x004e: 10
    [00:22:10.154,785] <err> bt_mesh_dfu_cli: Target 0x004e failed: 3
    [00:22:10.154,815] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x004e, pending: 5
    [00:22:10.230,072] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:10.230,133] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:10.230,133] <dbg> bt_mesh_blob_cli: rx_block_status: 0x004f: block: 0 status: 10
    [00:22:10.230,163] <wrn> bt_mesh_blob_cli: Dropping 0x004f: 10
    [00:22:10.230,194] <err> bt_mesh_dfu_cli: Target 0x004f failed: 3
    [00:22:10.230,194] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x004f, pending: 4
    [00:22:10.304,748] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:10.304,809] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:10.304,809] <dbg> bt_mesh_blob_cli: rx_block_status: 0x0050: block: 0 status: 10
    [00:22:10.304,840] <wrn> bt_mesh_blob_cli: Dropping 0x0050: 10
    [00:22:10.304,840] <err> bt_mesh_dfu_cli: Target 0x0050 failed: 3
    [00:22:10.304,870] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x0050, pending: 3
    [00:22:10.386,627] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:10.386,688] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f8ffffff1f
    [00:22:10.386,688] <dbg> bt_mesh_blob_cli: rx_block_status: 0x0051: block: 0 status: 10
    [00:22:10.386,718] <wrn> bt_mesh_blob_cli: Dropping 0x0051: 10
    [00:22:10.386,718] <err> bt_mesh_dfu_cli: Target 0x0051 failed: 3
    [00:22:10.386,749] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x0051, pending: 2
    [00:22:14.252,777] <dbg> bt_mesh_blob_cli: retry_timeout: 12
    [00:22:14.347,717] <dbg> bt_mesh_blob_cli: handle_block_status: status: 10 block: 0 encoding: 2
    [00:22:14.347,747] <dbg> bt_mesh_blob_cli: handle_block_status: Missing: f0ffffff1f
    [00:22:14.347,747] <dbg> bt_mesh_blob_cli: rx_block_status: 0x004a: block: 0 status: 10
    [00:22:14.347,778] <wrn> bt_mesh_blob_cli: Dropping 0x004a: 10
    [00:22:14.347,778] <err> bt_mesh_dfu_cli: Target 0x004a failed: 3
    [00:22:14.347,808] <dbg> bt_mesh_blob_cli: blob_cli_broadcast_rsp: 0x004a, pending: 1
    [00:22:14.347,961] <dbg> bt_mesh_blob_cli: broadcast_complete: continuing
    [00:22:14.347,991] <dbg> bt_mesh_blob_cli: block_check_end:
    [00:22:14.347,991] <dbg> bt_mesh_blob_cli: end: 0
    [00:22:14.348,022] <dbg> bt_mesh_dfu_cli: dfu_failed: 3
    [00:22:14.348,052] <dbg> bt_mesh_dfd_srv: dfu_ended: reason: 3, phase: 1, apply: 1
    Distribution phase changed to Failed

    Could you please tell me why this happens? Why the limit of 10 Targets? What can I do for updating more than 10 Targets?

    Thank you

Children
Related