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

nRF Mcp Dfu freezes when »Number of packets« is set greater than about 356 packets

Hey there,

today I'd tested around with the Dfu service.

  • Peripheral is nRF51822 running Sdk 5.2.0 bootloader example (Softdevice 6)
  • Central is Android 4.3 running nRF Mcp 1.9.1
  • Testfile (nRF51822 Application) is Hrs Example (about 43k binary size)

In the settings of Mcp I found some Dfu options and I determined that the »Number of packets« value has an affect to the update data throughput.

My Android device connects with 48,75 ms connection intervall and transferes mostly about 4 packets at each connection intervall. So, the max throughput is theoreticly at

4 x 20 Byte / 48,75 ms = about 1.641 Byte/s

But when metering the Dfu throughput, I got just about 1.000 Byte/s. Well, after changing »Number of packets« from 20 to 300, I got about 1.600 Byte/s - nice.

But then, when I set »Number of packets« to greater values (e.g. to 400), the Dfu upload freezes at 16 % - and the same when I switching off the option »Packets receipt notification procedure«.

For »Number of packets«, I determined a treshold value of 356. This means that Dfu works with values up to 356, but for greater values the Dfu freezes at 16 %.

Ok, I don't expect higher throughput with higher »Number of packets« values. I'd just detected that issue and would report it.

Btw: Is this the right place for that kind of topics or should I rather put that in an issue tracker?

Parents
  • IMHO it's an issue of the S110 Softdevice.

    Within my own service, were I transfer lots of data from Central to Peripheral using »write without response«, I detected the same problem. After about 7.000 Byte (350 packets of each 20 Byte) the transfer stucks. My workaround is, that I insert a read after each 300 »write without response« packets.

    I'd tested that with a couple of Android devices / versions all with the same result. So my conclusion is, that this might be a problem in the Softdevice.

Reply
  • IMHO it's an issue of the S110 Softdevice.

    Within my own service, were I transfer lots of data from Central to Peripheral using »write without response«, I detected the same problem. After about 7.000 Byte (350 packets of each 20 Byte) the transfer stucks. My workaround is, that I insert a read after each 300 »write without response« packets.

    I'd tested that with a couple of Android devices / versions all with the same result. So my conclusion is, that this might be a problem in the Softdevice.

Children
Related