nRF Mesh DFU over the air

Hello,
I'm trying to set up the DFU over the air mesh. Using the mesh SDK 5 and nRF SDK 7.1.0.
Using the DFU example from nrf sdk17.1.0, I successfully ran it.
When I tried to execute the DFU example located in mesh_sdk5, I cannot find my board via NRF connect app and cannot send a DFU package.
After reading some documentation, I have not been able to add DFU features to my application.
How do I add DFU over the air to my mesh network application?
Is it necessary to use the DFU bootloader and then add the application that uses buttonless DFU over mesh on top of it?  If so, how can I connect all this in Segger studio?

On nRF52832, I am using NRF SDK 7.1 and mesh SDK 5.

I appreciate your help in advance!

  • Hello,

    Sorry for the late reply. I have been out of office. I was back now only for a day. I'll be back August 1st. I am sorry I didn't have time to look into this now. Due to limited staffing during the summer, I don't think anyone will look into this case, so if you need a reply sooner, I suggest you try to create a new ticket where you describe your latest question. Please specify where it says "Error type data: : 0B".

    A question that you can look into in the meantime is:

    I see that your line numbers (from the log) are different than mine. Did you change anything inside these files? What is located in your nrf_mesh_dfu.c line 421, and serial.c line 226? I see that the nrf_mesh_dfu.c logging is just a few lines shifted, but none the less, it means that you changed something in this file. The logging from serial.c I can't find in my SDK, so did you add it yourself? 

    Perhaps you should try your application in a clean, unmodified, freshly unzipped SDK?

    Best regards,

    Edvin

  • Hey,

    I added the log at line 226. As you suggested, I tried using a freshly unzipped MESH SDK. Now I only get the log "new firmware" at line 418, not the log at serial.c. As before, the DFU process doesn't work at all. I have no idea what the problem is.

  • what does the cmd / terminal from nrfutil say when you try to perform the DFU at this point?

  • D:\Nordic\mesh-nrfutil>nrfutil-mesh --verbose dfu serial -pkg dfu_test.zip -p COM3 -b 115200 --mesh
    Upgrading target on COM3 with DFU package D:\Nordic\mesh-nrfutil\dfu_test.zip. Flow control is disabled.
    Flushing com-port...
    Opened com-port
    Starting DFU upgrade of type 4, SoftDevice size: 0, bootloader size: 0, application size: 2416
    Sending DFU start packet, afterwards we wait for the flash on target to be initialized before continuing.
    1: PC -> target: 0502aabbccdd
    target -> PC: 0582aabbccdd
    Got echo response
    Sending DFU init packet
    Sending ready packet
    1: PC -> target: 1378fdff040fd76e663c59000000020004000000
    target -> PC: 16a6045900000002000400000059000000010001000000
    target -> PC: 03847800
    1: PC -> target: 1378fdff040fd76e663c59000000020004000000
    target -> PC: 16a6045900000002000400000059000000010001000000
    target -> PC: 03847800
    Sending start packet
    1: PC -> target: 1478fcff0000d76e663cffffffff5c02000040000c
    target -> PC: 03847887
    2: PC -> target: 1478fcff0000d76e663cffffffff5c02000040000c
    target -> PC: 03847887
    3: PC -> target: 1478fcff0000d76e663cffffffff5c02000040000c
    target -> PC: 03847887
    4: PC -> target: 1478fcff0000d76e663cffffffff5c02000040000c
    target -> PC: 03847887
    5: PC -> target: 1478fcff0000d76e663cffffffff5c02000040000c
    target -> PC: 03847887
    6: PC -> target: 1478fcff0000d76e663cffffffff5c02000040000c
    target -> PC: 03847887
    7: PC -> target: 1478fcff0000d76e663cffffffff5c02000040000c
    target -> PC: 03847887
    8: PC -> target: 1478fcff0000d76e663cffffffff5c02000040000c
    target -> PC: 03847887
    9: PC -> target: 1478fcff0000d76e663cffffffff5c02000040000c
    target -> PC: 03847887
    10: PC -> target: 1478fcff0000d76e663cffffffff5c02000040000c
    target -> PC: 03847887
    
    
    Failed to upgrade target. Error is: Device returned status code ERROR_INVALID_DATA (135) on a DFU data packet.
    
    Possible causes:
    - bootloader, SoftDevice or application on target does not match the requirements in the DFU package.
    - baud rate or flow control is not the same as in the target bootloader.
    - target is not in DFU mode. If using the SDK examples, press Button 4 and RESET and release both to enter DFU mode.
    - if the error is ERROR_BUSY at the beginning of the DFU process,increase the value of PAGE_ERASE_TIME_MAX by few milliseconds.
    Closing serial port...

  • Is there some way for me to reproduce what you are seeing? I have been able to successfully perform a Mesh DFU using the nRF5 SDK for Mesh 5.0.0 in combination with nRF5 SDK 17.0.2. Did you try this?

    Also, are you completely sure that you are using the correct keys? If you are not sure, please try to follow this guide, using an unmodified set of nRF5 SDK 17.0.2 and nRF5 SDK for Mesh v5.0.0.

    At least, following this guide, I was able to upgrade the nRF52832 DK using the mesh bootloader.

    Best regards,

    Edvin

Related