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

Mesh DFU Relay Problem

Hi ,

     I have tested two boarrds(PCA10040) with  same application id and higher application version,These work  well done.Then I want to test mesh DFU Relay function,However ,the target board does not upgrade.

    Prepare: Name two boards, Board A which is connected to pc,acts as source ,Board B which is the targect to upgrade using mesh  .

   The follow is what i do:

   (1) To generate Device Page with config  "application_id": 1,"application_version": 1, .Using it to program Board   as mesh dfu guide .

   (2)To generate Device Page with config  "application_id": 2,"application_version": 1, .Using it to program Board  B  as mesh dfu guide .

 (3)To generate DFU file with command  :nrfutil dfu genpkg --application ... using config  "application_id": 2,"application_version": 2, 

   (4)Then ,Baord A connect PC with USB serial. Board B is just supplied power .Using command: nrfutil --verbose dfu serial -pkg ... to start mesh dfu.

   The result is:

     At the first few seconds ,both boards  go to dfu with LED 0and LED2 be lighted, A few mnutes later ,Baords B ends dfu with LED 0and Led1 be lighted . and Board A is still going with dos  windows shows rate of progress.About an hour later ,the dfu transport for Baord A is done,Even I still wait for another nearly one hour, However Board B is still not be upgarded.

  I check the Board B's final ending RTT log:

......

0> <t: 16666007>, nrf_mesh_dfu.c, 324, Write complete (0x2000FE90)
0> <t: 16666010>, nrf_mesh_dfu.c, 333, Flash idle.
0> <t: 16688463>, nrf_mesh_dfu.c, 528, RADIO TX! SLOT 6, count 3, interval: exponential, handle: FFFC
0> <t: 16688479>, nrf_mesh_dfu.c, 324, Write complete (0x2000FE90)
0> <t: 16688483>, nrf_mesh_dfu.c, 333, Flash idle.
0> <t: 16700264>, nrf_mesh_dfu.c, 383, Abort event. Reason: 0x3
0> <t: 16700267>, main.c, 175, Mesh DFU End !

    The Abort Reason:0x3 is found out in file dfu_types_mesh.h  DFU_END_ERROR_PACKET_LOSS  .  So the relay dfu fail  may be packet loss over RF radio.How  to repair this ? who can give me some advice ? Thanks you.

Best Regards,

Panda.

  • Hi Hung,

       I Have relied your similar question above .I use SES 4.16a.I just now test your given blinky110k.hex.The same issue happens after device A process 20% in dos command window.When I use blinky160k.hex.The device B's whole log just as follow without reaction:

    0> <t: 723195>, nrf_mesh_dfu.c, 390, New firmware!
    0> <t: 723198>, main.c, 154, Requesting DFU transfer with bank at 0x0004C000
    0> <t: 723202>, nrf_mesh_dfu.c, 528, RADIO TX! SLOT 0, count 255, interval: periodic, handle: FFFD
    0> <t: 723205>, nrf_mesh_dfu.c, 534, Killing a TX slot prematurely (repeats done: 3).
    0> <t: 723209>, nrf_mesh_dfu.c, 561, SERIAL TX!
    0> <t: 788600>, nrf_mesh_dfu.c, 528, RADIO TX! SLOT 0, count 255, interval: periodic, handle: FFFD
    0> <t: 788603>, nrf_mesh_dfu.c, 534, Killing a TX slot prematurely (repeats done: 0).
    0> <t: 788607>, nrf_mesh_dfu.c, 561, SERIAL TX!
    0> <t: 855246>, nrf_mesh_dfu.c, 383, Abort event. Reason: 0xD
    0> <t: 855249>, main.c, 175, Mesh DFU End !
    0> <t: 855252>, nrf_mesh_dfu.c, 528, RADIO TX! SLOT 0, count 255, interval: periodic, handle: FFFE
    0> <t: 855256>, nrf_mesh_dfu.c, 534, Killing a TX slot prematurely (repeats done: 20).
    0> <t: 855259>, nrf_mesh_dfu.c, 561, SERIAL TX!

    -----------   log end up without reaction   ----------

    Device A and B's base hex is light_switch_dimming_client_DFU_nrf52832_xxAA_s132_6.1.1.hex . I need use this application to mesh dfu ,not just do example. So there is need to find out reason and repair this issue.

       Do SDK mesh v4.0.0 fix this issue?

    Best Regards,

    Panda

  • Hi Panda, 

    I know that you need to use the dimming feature, but we want to try the default example to see if it was any issue integrating the DFU code into the dimming example causing the issue or not. 

    Which bootloader did you use ? Was it the precompiled one ? Could you state the .hex file you used ? 

  • Hi Panda, 

    Just a quick update, we have reproduced the issue here. With error 0x03. I will let you know when we have any finding. 

  • Hi Panda, 

    Just an update, we found that it's an issue when doing the test with just one relay node (device A , connected to PC) and one mesh node (device B) ,when there is any missing segment on device B,  the device A won't resend the missing segment (as it's only doing relay) and this will result in error 3. 


    It's not the case when device A also receive image, or when you have multiple nodes that receive the image as the destination not relay. In that case the other node(s) can resend the missing segment when requested by B. 

    We are working on a fix for this.

    You can test this theory by having 2 or 3 nodes as devices B, they should be able to serve each other if one node misses a packet. 

Related