Re: Zephyr DFU protocol


Richard Peters <mail@...>
 

Hi,

i am looking for a solution like that and just want to contribute my
requirements.

i would like to use zephyr with an external bootloader like the Nordic
DFU, where i can update firmware via bluetooth.
Unfortunately I doubt this is easy to achieve, due to the way the Nordic DFU bootloader expects the SoftDevice to be present in flash, something that is not the case when using Zephyr instead. The Nordic DFU procedure is also closely tied to the image format of the Nordic SDK (and SoftDevice).
However, Zephyr is indeed compatible with a bootloader, mcuboot, and we are currently discussing adding support for a DFU (over BLE and other transports) to Zephyr in another thread in this mailing list. You are welcome to contribute to that thread with your requirements and comments, and as soon as we've chosen a protocol we'll start working towards implementing the DFU procedure.
My devices are in a BLE mesh network with no direct internet
connectivity to the outer world.
The user can connect with a smartphone ot tablet to one of the devices
in the mesh over BLE.
There is an App, which downloads the latest firmware for the devices to
the smartphone.

A firmware update will be transfered via BLE to the connected device and
then spread to all devices in the mesh that need this update.

I think there are two possible ways to achieve this:

1.) The update gets transferred to the target devices via bluetooth.
This happend in the zephyr application and gets stored in a filesystem
(on internal or external flash memory). The bootloader performs the
update from the filesystem after a reboot.

2.) The bootloader starts and receives the firmware (on the fly) from
the next device in the mesh network (which is running zephyr, too).

The whole process should be optimized for the memory usage.

Regards,
Richard

Join devel@lists.zephyrproject.org to automatically receive all group messages.