- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
What throughout are you hoping to achieve? Are you able to get each sample application working correctly independent of one another?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.