BLE device disconnect after 90s on iOS 16 beta

Hi,  Since the three last iOS 16 Beta (8, 7 & 6), I'm having some issues with the connection stability with our custom device that is using the nRF52832 Nordic chip. On iOS 15 all is good but as soon as you update any Apple devices (iPad and iPhone) to iOS 16, the issue remains: 

  • the connection last 90s and then disconnect. 

If using our custom App, the device is automatically reconnected. But if you use nRF Connect, the connection is lost. I'm in contact with Nordic but it really seems to be related to a change into iOS 16 with BLE devices... Anybody is having the same problem? There is no mention on the change logs about BLE...

The issue is also on iPadOS (16.1 included) On Apple M1 chips, there is no bugs, neither on Androïd.

Thanks for your help.

Answered by pmurphyjam1 in 728820022

So another post on this iOS16 issue. It appears Apple changed the Bluetooth Development guidelines so Minimum and Maximum connection intervals are now Min 15 ms, and Max 30 ms. This is defined in Nordic SDK in app_ble.c you need to change your parameters to this now: /* Minimum acceptable connection interval (20ms). Force the connection interval to be 15ms to maximize throughput. iOS devices will not handle a faster interval. Refer to the Apple Bluetooth development guidelines for further details. / #define MIN_CONN_INTERVAL MSEC_TO_UNITS(15U, UNIT_1_25_MS) / Maximum acceptable connection interval (30ms). */ #define MAX_CONN_INTERVAL MSEC_TO_UNITS(30U, UNIT_1_25_MS)

Update: We have discovered that after an iOS update, the bug is not happening during the first connection of the device... But happen as soon as you reconnect it.

Hi - I’m not an iOS developer so I won’t be of much help but two things may help you:

  1. I am experiencing issues with my BLE car key app beginning with Public Beta about 3-4 weeks ago. It’s still happening in the now released ios 16 version, so I do feel like something was changed.
  2. My issues go away for 24-48 hours after restarting my phone. This may or may not help you at least while testing.

I had the connection last 30s and then disconnect. But CABTMIDICentralViewController didn't.

I'm seeing the same thing in the released version of iOS16. In Segger Studio debug console the event is : app_ble: BLE_GAP_EVT_DISCONNECTED event received. It then reconnects right away with : app_ble: BLE_GAP_EVT_CONNECTED event received. It runs for a couple minutes, and then disconnects and reconnects. I'm running on our BT Sensor using an nRF52833 with the latest Nordic SDK nRF5 SDK 17.0 I've tried turning off and on BT, restarting the iPhone, this seems to help, but it still occurs.

Accepted Answer

So another post on this iOS16 issue. It appears Apple changed the Bluetooth Development guidelines so Minimum and Maximum connection intervals are now Min 15 ms, and Max 30 ms. This is defined in Nordic SDK in app_ble.c you need to change your parameters to this now: /* Minimum acceptable connection interval (20ms). Force the connection interval to be 15ms to maximize throughput. iOS devices will not handle a faster interval. Refer to the Apple Bluetooth development guidelines for further details. / #define MIN_CONN_INTERVAL MSEC_TO_UNITS(15U, UNIT_1_25_MS) / Maximum acceptable connection interval (30ms). */ #define MAX_CONN_INTERVAL MSEC_TO_UNITS(30U, UNIT_1_25_MS)

BLE device disconnect after 90s on iOS 16 beta
 
 
Q