This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

iOS 8.2 CC2541 Multiple packets per connection event

Other Parts Discussed in Thread: CC2541

Hello,

I am developing firmware for a client that requires sending multiple packets per connection event between iOS and the CC2541.  It worked really well until iOS 8.2 came out at which point iOS stopped sending multiple packets per connection event which broke the product.

I also observed that iOS used to choose something on the order of 37.5-40ms for the connection interval, now it is selecting 20ms for the connection interval.

Does anyone here know if iOS just changed it's BLE behavior and is there any way we can get back to multiple packets per connection event?

Thanks,

Jacob

  • Hello. You should still be able to get multiple packets per connection event (at least from TI -> iOS). I can't speak for the other direction. Based on your findings, it sounds like the answer is no. You may want to try enabling overlapped processing: processors.wiki.ti.com/.../OverlappedProcessing

    Unfortunately, Apple tends to unpredictably and drastically change their BLE behavior with each iOS release.
  • 1) As I said in my first post, I had it working before iOS 8.2. I was using overlapped processing because that was the only way to get it to work. I had up to 6 packets per connection event.
    2) I was looking specifically for any available information on iOS 8.2. As I said, my firmware worked great until iOS 8.2 came out and broke everything. Something they did stopped me from being able to get more than 1 packet per connection event through. This is true for both directions.
    3) Referring back to my original post, something is new and different in iOS 8.2 Wiki pages from 2014 are probably not going to help me fix them. I am not the only one suffering from iOS 8.2 breaking my bluetooth product so it is probably in TI's best interest to assist in finding out what changed and how it affects bluetooth low energy designs going forward. If Apple really did stop the ability to send multiple packets per connection event it has a HUGE impact on data throughput to iOS devices and closes down a lot of use cases for BLE.
  • I have noticed the same problem. This is pretty big issue because it slows down the throughput from 4 kb/s to 1,3 kb/s. 

  • I have observed with CC2541 that a paired connection to iOS 8.3 results in 1 packet per connection event. Also, if you successfully negotiate a connection interval (min 20ms, max 40ms, iOS selects 37.5ms) you also get 1 packet per connection. Unpaired connections or unsuccessful negotiations lead to 30ms interval with up to 6 packets per connection. The only time I have observed a lower connection interval (15ms) is when HID is one of the services of the device (still with 1 packet per connection). The only time I have observed multiple packets per connection is when the device is Bluetooth MIDI (15ms interval 3-4 packets per connection). I am convinced CC2541 is capable of delivering higher packet rate and lower connection speeds, so I think the limitation is on the Apple side of things.
    I hope this helps,
    Keith.
  • That is absolutely correct. Two TI devices can transmit as many packets per connection as can fit in the timeframe of the connection interval. iOS implements its own connection parameter and packets per connection event limitations. Also, these seem to change based on the iOS version and device.