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

DFU update mesh SDK v1.0.0 to v2.x

Hi!

I have ~80 mesh nodes that are flashed with my customized version of the light switch server (I have added some I2C sensor stuff too). I've now been wrestling with trying to do a DFU mesh update to bring them all to mesh v2.

My first problem was that the bootloader binaries in v1.0.0 don't match the source code... The prebuilt binary can't handle an update of itself, if I build the bootloader from the source code it can update itself. But my 80 nodes have the the bootloaders which don't work... I built a bridge application which performs an "unsafe" replacement of the bootloader once it has received the new bootloader via normal mesh DFU.

My next problem is that softdevice 6.0.0 is larger than 5.0.0. The application on the existing nodes is located at 0x23000, the 6.0.0 SD will overflow its section and the mesh SDK v2 bootloader complains that it won't accept such a transfer.

I guess my only option is to concatenate the softdevice and the application, transfer it as one large softdevice and handle the big file by modifying the bootloader. The bootloader would then rewrite the info regarding the application section to for example 0x26000 instead.

Any other ideas? I'm choosing between more bootloader experimentation or start using a screwdriver and manually reflashing each node :-)

Thanks for any suggestions,

Pär-Olof

Parents
  • Hello Pär,

    I am sorry for the late reply. This is an interesting case, and it looks like you know what you are talking about. I will have to check with someone in our Mesh team regarding this issue. I will get back to you as soon as I can. Hopefully tomorrow morning.

     

    Best regards,

    Edvin

  • Hello again Pär,

    I am terribly sorry that this took so long. The mesh bootloader has a week spot, which means that it doesn't consider upgrading a major version of the SoftDevice.

    A possible hack is to strip the softdevice down to the size of the old softdevice (just cut it at that address), and merge the rest of the softdevice with the application, using the mergehex tool. That was the tip that I got from the Mesh team. I have not tested it. Hopefully, the bootloader doesn't use that part of the softdevice during the DFU transfer.

    Anyway, I suggest that you test this on one device before starting to update all devices to a snipped softdevice.

    Best regards,

    Edvin

  • Hi Edvin

    Splitting the SD is an interesting approach :-) I've manually reflashed 20 of my nodes, maybe I'll consider this for the remaining 60.

    Thanks,

    Pär-Olof

Reply Children
No Data
Related