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

Confusion : To use L2CAP vs GATT for max throughput with iOS.

I am starting up with nRF52840, currently i have the dongle but expected to receive my DK in the next few days. This is my first BLE project, so i started reading a lot of documents and posts to understand the best implementation to reach our target goal. And the target is to achieve max throughput possible from our peripheral to iOS device.

In lot of posts i saw people are talking about L2CAP to acheive the maximum throughput with iOS. Finally looking at presentation on wwdc2017  https://developer.apple.com/videos/play/wwdc2017/712/ (page 119) it clearly says L2CAP + EDL + 15ms Interval can reach  394Kbps. 

But on the other hand i saw posts stating L2CAP will not do any magic so same bandwidth would be achievable with GATT as well. Is this really true ?

Just wondering if someone can suggest the correct path to move further which can help me to reach nearest to my goal. It will help me to save lots of time and i am sure many guys have done this before with exactly the same target and they have already went through all the experimentation. I would really appreciate if they want to share their results.

And secondly if its the L2CAP where will i find the starting example, i browsed through SDK 16 but can not see anything for L2CAP and will use the SoftDevice 140.

Parents
  • Hi,

    I don't see that you get significantly higher bandwidth using L2CAP directly rather than GATT (which is on top of L2CAP). With iOS and other mobile devices there will always be many factors that affect the actual throughput, but to have a baseline, you can get up to ~700 kbps using the 1 Mbps PHY and GATT between two nRF devices (use the throughput example in the SDK to see it demonstrated).

    There are a few use cases for L2CAP connected oriented channels, particularly object transfer service, but unless you have a specific need for that I suggest you look at doing things the "normal" way with GATT first.

    Regarding examples, there are examples of L2CAP connected oriented channels in the SDK (6LoWPAN examples and object transfer service).

Reply
  • Hi,

    I don't see that you get significantly higher bandwidth using L2CAP directly rather than GATT (which is on top of L2CAP). With iOS and other mobile devices there will always be many factors that affect the actual throughput, but to have a baseline, you can get up to ~700 kbps using the 1 Mbps PHY and GATT between two nRF devices (use the throughput example in the SDK to see it demonstrated).

    There are a few use cases for L2CAP connected oriented channels, particularly object transfer service, but unless you have a specific need for that I suggest you look at doing things the "normal" way with GATT first.

    Regarding examples, there are examples of L2CAP connected oriented channels in the SDK (6LoWPAN examples and object transfer service).

Children
Related