Max BLE Secure DFU speed for NRF52832 target

What is the theoretical maximum DFU speed that can be reached for a NRF52832 target?

  • I didn't find the time yet to exactly replicate your test, but I did something similar.

    I repeated the same DFU procedure with a 195016 bytes application with our SDK 15.2 based bootloader (minor modifications from the SDK example) with different DFU master tools (5 repetitions for every tool).

    With:

    1. NRF Connect for desktop 3.12.0, BLE 4.0.0: around 2 minutes with some variation between 1 minutes 40 seconds and 2 minutes 20 seconds
    2. nrfutil v6.1.7: very consistent 42 seconds
    3. NRF Connect 2.5.3 on Iphone 12 Mini with IOS 15.6.1: very consistent 23 seconds

    It seems there is a lot of difference in DFU speed depending on the master tool used...

    I'd like to build a PC or Raspberry Pi based solution with at least the same performance (preferable better) as the IOS app. I'm guessing even better performance should be possible since on IOS, the connection interval, number of packets per connection interval and MTU are limited. Correct?

  • Interresting that the iPhone was that much better. I wouldn't expect it. 

    The key to increasing the transfer speed is to optimize the connection parameters for this purpose. 

    I don't know if the case is that you already have 1000 devices deployed that you need to upate. In that case, I believe I would simply start updating them, and you would be done by now. If the case is that you plan to have 1000 devices in field, then you may start looking into this now, but you can also consider deploying devices with a bluetooth Mesh bootloader, which then makes it possible to update all the devices at once. It is quite slow, but it will take about an hour, and all your devices would be updated at once. 

    To increase the speed, the trick is to have a connection interval about of about 50ms, a large MTU (247 = max), send as large packs as possible. I would think that nrfutil already did that about as efficiently as possible. What is the connectivity board you are using with nrfutil and nRF Connect for Desktop?

    nRF Connect for Desktop is closed source, so it is not possible to change anything there (but I imagine you don't want to sit and click through all 1000 updates.

    nrfutil is open source (although I must admit I have never built it myself):

    https://github.com/NordicSemiconductor/pc-nrfutil

    So you should be able to tweak parameters there. Also note that you "can't" use an nRF51DK (you can, but it will not have the same throughput).

    Also, the DFU libraries used in nRF Connect for Android or iOS are also available. iOS version here. So it is also possible to write a custom app, either using nrfutil and a connectivity DK, or using a mobile phone, that can iterate through and update all the devices. 

    Best regards,

    Edvin

Related