Packet drops when transferring multiple packets per connection interval from Android. NRF52805 S112

Hi Nordic Team and programmers,

I have a Bluetooth peripheral built from the uart example and it has been working perfectly while operating a basic message based protocol to the phone app during device operation, no packet drops at all both directions from computer/android/iphone.
I'm now testing it with large data transfers for remote updates. After I configured to allow multiple packets in one connection interval it is often dropping some of the later packets. My MTU is set to 247, and I have a 15ms connection interval. No packets are dropped when I run the transfer with multiple packets in one connection interval from my computer with python (bleak).



The sniffer trace is interesting because more data gets through than what is showed on the trace (looking at the uart tx of the nrf). Line number 7176 is where packet02 start is sent; the peripheral received all of packet02, the next one is dropped (missed by the sniffer), and then packet04 is received (also missed by the sniffer). Packets0 to 4 are all sent to the ble service on android at the same time so they are all sent in the same connection interval.

Any ideas on how I could make this stable?
I've tried adding an external RTC clock (no improvement), and changing the soft device to S113 with data length extension (but my phone still had L2Cap max length of 27 so it didn't change the transfer).

Thanks,

Russell

Parents Reply
  • Hi Sigurd, thank you for the reply.

    I do see packet loss at the peripheral when trying to send multiple packets in one connection interval.

    In that example trace the peripheral misses packet03. The sniffer loses connection after the l2cap start frame for packet02, so misses the rest of packet02, packet03 and packet04. Packet02 and 04 are both properly received by the device though and only packet03 is missed.

Children
Related