Using big MTU to maximize throughput

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
JaSi_1632926
Level 4
Level 4
Welcome! 25 replies posted 10 replies posted

Hi!

I'm trying to maximize the throughput of BLE using big MTU:s. Data is transferred via notifications. I've based my code on the speed_test and long_char_big_mtu example projects. However, I'm not sure what method I should call to know whether I can send more data using lel2cap_sendConnectionLessPkt(). In speed_test blecm_getAvailableTxBuffers() is used to know whether there are enough available TX buffers to send data.

Trying to send data at a too high rate cause crashes (allocation error in cfa_hci_AllocateBLEACL). It works if I call it at a large interval (say, 200 ms or so).

So, how can I do to maximize throughput using big MTU:s?

Thanks, Jacob

0 Likes
8 Replies
MichaelF_56
Moderator
Moderator
Moderator
250 sign-ins 25 comments on blog 10 comments on blog

What throughout are you hoping to achieve? Are you able to get each sample application working correctly independent of one another?


James Lee 

0 Likes

Perhaps you may explore another strategy to maximize throughput by using Notification (which you are already using), and pushing as many data packets as possible in one shortest connection interval of 7.5ms. You may check out what is MD bit.

Hi boont

Does SDK support API or callback to know or set the MD bit?

Jack,

0 Likes
BoonT_56
Employee
Employee
500 likes received 250 likes received 100 likes received

Speed_test could provide some insight into this.

Is 80 kbps throughput really possible with 20736S?

I'm doing experiments to see how large throughput I can get between an iOS device as central and BCM20737 as peripheral. With a competing product, I have managed to get up to 8 kbyte/sec stable throughput.

The sample applications work well independently - but the big MTU example doesn't really send packets at a high rate.

Sending multiple packets per connection interval is an option - although I'm not sure what the current limitations on this are in iOS land.

Surely there must be a way to check whether it's possible to send additional big MTU packets? I must say that using bigger MTUs is pretty cumbersome in the WICED world.

Thanks, Jacob

0 Likes

iOS can send more than 4 packets per connection interval now.  But SDK big_mtu application can only take 4 of them.  The fifth one need to be retransmitted in the next connection interval.  Like to know if this limit can be change in SDK 2.2.

0 Likes
ChristopherA_76
Employee
Employee
5 likes given First like received First like given

What is your test setup?

Theoretical max throughput for BLE is 270Kbps, but this is an ideal and cannot be achieved in real-world RF environments.

Are you using an iOS device? Apple place additional limits on BLE throughput. 32Kbps is the max for unacknowledged packets. 4Kbps for acknowledged packets.

Our partner Anaren have a good page of information on BLE data throughput considerations - there are many factors.

https://atmosphere.anaren.com/wiki/Data_rates_using_BLE

airdev

speed_test (sample app) demonstrates 80kps when used with out TAG3 board.

Many of our customers and partners have been able to recreate this throughput using the sample application.

SDK2.2: How to achieve the max 80kps data rate by using Window SpeedTest with speed_test run in tag3...