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

use DFU SDK ( Android phone central) to update firmware on multiple peripheral devices concurrently

Hi 

We are planning to use the DFU SDK to update the firmware from an Android tablet(central) to multiple peripherals/slaves at the same time.  The FW is around 200KB and the peripheral devices have nRF52832 BLE parts) I know Android supports up to 7 connected devices, however in practice will it work? Can you push the same FW data to all devices concurrently?   I would be very grateful for some help! 

(The physical layer will have its limitations/ throughput constraints.   Each connection will have its own frequency hopping sequence. Not sure how each connection is multiplexed?) 

Thanks, Gerry 

  • Hello,

    The current DFU library is build as IntentService of which can be only one instance at the same time. You could rebuild the library to make it more transport independent, and manage connections on your own. Maintaining multiple connections is indeed possible, but remember that there's just one host on the tablet, which would have to split time between each device. If your fw is based on SDK 14+, which supports long MTUs and DLE, and your Android tablet isn't very old as well, the host would have to jump between devices, which will limit the speed per single update. 

    When you sniff the DFU using a Bluetooth sniffer, on modern phones and new Nordic SDKs a single upload takes significant portion of bandwidth, so sending it ti multiple clients at the same time would definitely make it slower per device, don't know how about the overall time.

  • Hi Alek, thanks very much for your answer. Clear that we would have to modify the transport to get it working as DFU only support 1-to-1.   Not so clear when you say"If your fw is based on SDK 14+, which supports long MTUs and DLE, and your Android tablet isn't very old as well, the host would have to jump between devices" can you please explain? Thanks

  • The dfu bootloader from SDK 14 (or 15?) supports MTU > 23 and DLE (Data Length Extension) which greatly increase bandwidth. They both increase the percentage of time used to send payload. That means that the phone has less time that can spend on sending data to other devices. Higher MTU are supported in Android since Lollipop, and DLE since Marshmallow, if their hw supports it.

  • Thanks Alek,  I have a second issue( may need a new ticket?). Mt device is buttonless. I will use DFU but not sure how to get the device into the BLE bootloader.  I saw the following options shown below for the bootloader to enter DFU mode.  I would like to understand what and how to activate SotfDevice. From what I read SoftDevice is just the BLE stack, so I do not understand how this mobile application can initiate the device to go into BLE DFU bootloader?

    Thanks Gerry   

    In the DFU mode, the bootloader activates the DFU transports and the device is ready to receive new firmware. The bootloader enters the DFU mode on the following conditions:

Related