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

Slow transfer speed to an nRF52

Hello!

We are doing transfer from an Android app to a device using nRF52. We don't get the transfer speed I have seen other achieve. I get between 8.5-10 kbps. As a reference, if I run DFU I get 16 kbps. But I still want these ~100 kbps I have seen people talk about. We use SD132.

One of the comments on the high speed reached is for instance in this post. Also in the documentation there are higher speeds. Though that is higher connection interval than what is used.

The connection interval is set to 7.5 ms. nRF Connect reports 15 - 200 ms, whatever that means. (the interval I mean). We use "transfer without response". MTU size is 23.

I have gotten tips on "disable advertising". Isn't advertising automatically turned off when a connection is established? Is advertising a known "link hog"? I have tried, but not seen any real difference.

I apologize for these open ended questions, but I have no better way to try to explain this.

[Updated with reference to comments about transfer speed].

Thanks and best regards, /Stefan

  • Thanks for update Stefan. I'm really skeptical about achieving 100kbps with just any android phone (which is BT SIG 4.x) especially on higher layer like GATT. Nordic specifications and examples are typically speaking about link where you control lower layers e.g. two nRF5x devices against each other, which is quire different from Android phone. Anyway if we would assume it's applicable your and TurboJ numbers are pretty in-line with the last lines of first table: ~10kbps for Write with Response and ~40kbps for Write command or Notification. I would take the RF trace and see what exact parameters are on the link. Then if you are sure you use optimal GATT methods you can try:

    • Getting shorter connection interval through Android API as suggested below.
    • Using PDU length extension and MTU length extensions as suggested on blog zone.
  • Also make sure you use proper bandwidth settings when enabling SD on nRF5x side.

  • Thank endnode. I looked into bandwidth and it says if S132 is peripheral (as my nRF52 device is) high BW is default. I hope I have read the documentation properly and also interpreted "BLE peripheral" properly.

Related