Bluetooth Low Energy (BLE) 5 Extended Advertising

Hello,

I’m currently working on a project that implements Bluetooth Low Energy (BLE) 5 Extended Advertising.

We are experiencing an issue specifically on iOS 18.6.2. The device is visible/scannable, but we are unable to establish a connection with it.

Initially, our advertising interval was set to 2 seconds. We suspected that this interval might be too long for reliable discovery on iOS, so we reduced it to 100 ms.

With the same firmware and advertising configuration:

  • iOS 26.5.2: the device is discovered and a connection can be established successfully.
  • iOS 18.6.2: the device can be detected/scanned, but the connection cannot be established.

Could you please clarify whether there are any known limitations, restrictions, or differences in the handling of Bluetooth 5 Extended Advertising between iOS 18.6.2 and newer iOS versions?

In particular, we would like to know whether iOS 18.6.2 has any specific requirements regarding:

  • BLE Extended Advertising / LE Extended Advertising
  • Primary and secondary advertising channels
  • Advertising intervals
  • PHY configuration (1M / 2M / Coded PHY)
  • Connectable Extended Advertising

We would also appreciate any documentation or known issues related to Extended Advertising on iOS that could explain why the same device and configuration works correctly on iOS 26.5.2.

Thank you in advance for your help.

Putting aside that a 2 second interval is ridiculously long for a reliable discovery, and while 100ms is much better, you should try to use the closest recommended interval in Section 58.5 instead for optimum discoverability-to-power performance, I am not sure if your issue is with advertising.

You say

the device can be detected/scanned, but the connection cannot be established

which I would take to mean advertising and discovery has worked, but you are getting stuck at the connect phase.

Sounds like you are issuing a scan and then a connect to the discovered CBPeripheral. If connection is failing, there would be an error.

Maybe this is an iOS 18.6.2 issue, but you might be looking at the wrong place. What errors do you see (if any) after the connectPeripheral() is called? What do you see happening in the packet trace?

-- S.Beck -- 7strikes.dev