Is it Possible to Develop a Mobile App to Act as a BLE Mesh Distributor for DFU?

Hello Nordic team and community,

I’m exploring the possibility of creating a mobile application (potentially using Flutter or native frameworks) that would act as a Distributor in a Bluetooth Mesh network for Device Firmware Updates (DFU). The app would send firmware updates directly to the target nodes in the mesh network, bypassing the need for a dedicated hardware Distributor. The Mobile app for exmaple in Nrf Mesh App is already part of the network as "Provisioner", can it act as a distributor as well? The benefit would be that all of our nodes would only need the Target fw support.

Before I begin development, I’d like to clarify the following:

  1. Feasibility:

    • Is it technically feasible to implement a Bluetooth Mesh DFU Distributor role in a mobile app using Nordic’s SDKs or libraries (e.g., nRF Mesh SDK or nRF Connect SDK)?
  2. Existing Solutions:

    • Are there any existing open-source libraries or examples (for Android, iOS, or Flutter) that demonstrate a mobile app functioning as a Bluetooth Mesh Distributor?
  3. Nordic Libraries:

    • Can the nRF Mesh SDK for Android or iOS be extended to include DFU Distributor functionality?
    • If not, are there plans to support such functionality in the future?

My goal is to leverage mobile devices to simplify firmware updates in mesh networks. I’d appreciate any insights, guidance, or resources you can provide.

Parents
  • Hi,

    While I do see that some aspects of running the Distributor on a smartphone may sound lucrative, there are some good reasons for the division into Initiator, Distributor and Target, and for delegating the Distributor role to a node which participates full time in the mesh network. Mainly it has to do with bandwidth and throughput.

    Delivering the firmware to one device (from Initiator to Distributor) can usually be done relatively quickly. This is especially the case if the two devices are directly connected over the GATT bearer, such as the smartphone's connection to a GATT Proxy node.

    Distribution to a larger number of devices, however, is a bit more time consuming. First, throughput may intentionally be set low, in order not to tax the network too much during the distribution. There will also most likely be some retransmission of data blocks, when one or a small handful of nodes did not properly receive a data block the first time around. The process might therefore take significantly longer than the initial passing from Initiator to Distributor.

    From a user perspective, it is therefore typically better to have the Distributor permanently in the network, so that the user (with the smartphone) does not have to stay continuously connected and wait for the full process to finish.

    Now, to your questions:

    Feasibility:

    • Is it technically feasible to implement a Bluetooth Mesh DFU Distributor role in a mobile app using Nordic’s SDKs or libraries (e.g., nRF Mesh SDK or nRF Connect SDK)?

    Technically, yes, it should be perfectly possible to implement the Distributor role for a smartphone app.

    Existing Solutions:

    • Are there any existing open-source libraries or examples (for Android, iOS, or Flutter) that demonstrate a mobile app functioning as a Bluetooth Mesh Distributor?

    Unfortunately we do not seem to have any samples for this from our end at the moment, and I am not aware of other solutions demonstrating the Bluetooth Mesh Distributor on a smartphone. Solutions for this may exist, so please let us know what you find in your search. I am afraid this is not something I have been actively looking for, so solutions may exist which I have not seen yet.

    Nordic Libraries:

    • Can the nRF Mesh SDK for Android or iOS be extended to include DFU Distributor functionality?
    • If not, are there plans to support such functionality in the future?

    I am afraid there are no efforts at this from our side that I know of. Forking the libraries and extending them should be possible, but please be advised that it would lead to maintenance needs in your end (e.g. when we release new versions of the libraries.) From what I can tell, the DFU functionality to be implemented for the nRF Mesh smartphone libraries are for the Initiator role.

    I will check some more internally, in case we have anything, but to summarize:
    For now it doesn't look like we have anything on smartphone Distributor role, no, as smartphones are primarily intended for holding the Initiator role.

    Regards,
    Terje

Reply
  • Hi,

    While I do see that some aspects of running the Distributor on a smartphone may sound lucrative, there are some good reasons for the division into Initiator, Distributor and Target, and for delegating the Distributor role to a node which participates full time in the mesh network. Mainly it has to do with bandwidth and throughput.

    Delivering the firmware to one device (from Initiator to Distributor) can usually be done relatively quickly. This is especially the case if the two devices are directly connected over the GATT bearer, such as the smartphone's connection to a GATT Proxy node.

    Distribution to a larger number of devices, however, is a bit more time consuming. First, throughput may intentionally be set low, in order not to tax the network too much during the distribution. There will also most likely be some retransmission of data blocks, when one or a small handful of nodes did not properly receive a data block the first time around. The process might therefore take significantly longer than the initial passing from Initiator to Distributor.

    From a user perspective, it is therefore typically better to have the Distributor permanently in the network, so that the user (with the smartphone) does not have to stay continuously connected and wait for the full process to finish.

    Now, to your questions:

    Feasibility:

    • Is it technically feasible to implement a Bluetooth Mesh DFU Distributor role in a mobile app using Nordic’s SDKs or libraries (e.g., nRF Mesh SDK or nRF Connect SDK)?

    Technically, yes, it should be perfectly possible to implement the Distributor role for a smartphone app.

    Existing Solutions:

    • Are there any existing open-source libraries or examples (for Android, iOS, or Flutter) that demonstrate a mobile app functioning as a Bluetooth Mesh Distributor?

    Unfortunately we do not seem to have any samples for this from our end at the moment, and I am not aware of other solutions demonstrating the Bluetooth Mesh Distributor on a smartphone. Solutions for this may exist, so please let us know what you find in your search. I am afraid this is not something I have been actively looking for, so solutions may exist which I have not seen yet.

    Nordic Libraries:

    • Can the nRF Mesh SDK for Android or iOS be extended to include DFU Distributor functionality?
    • If not, are there plans to support such functionality in the future?

    I am afraid there are no efforts at this from our side that I know of. Forking the libraries and extending them should be possible, but please be advised that it would lead to maintenance needs in your end (e.g. when we release new versions of the libraries.) From what I can tell, the DFU functionality to be implemented for the nRF Mesh smartphone libraries are for the Initiator role.

    I will check some more internally, in case we have anything, but to summarize:
    For now it doesn't look like we have anything on smartphone Distributor role, no, as smartphones are primarily intended for holding the Initiator role.

    Regards,
    Terje

Children
No Data
Related