The BLE connection with the paired device keeps disconnecting.

We use BLE devices connected to an iPhone, but after updating iOS to version 26.4 from version26.2, the following issue occurred: The device operates normally immediately after pairing. However, after disconnecting and reconnecting, the connection drops approximately 30 seconds later. The details of the error passed to func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) at that time are as follows: Error Domain=CBErrorDomain Code=7 "The specified device has disconnected from us." What could be the possible cause of this?

Thanks for the post, it seems like you haven't got any answer yet, so let me jump in, even I'm not a bluetooth expert nor I play one on TV.

The error CBErrorDomain Code=7 corresponds to CBErrorPeripheralDisconnected it means that the peripheral device initiated the disconnection

https://developer.apple.com/documentation/corebluetooth/cberror-swift.struct/peripheraldisconnected

or the lower-level Bluetooth link timed out because the peripheral stopped responding. The disconnection was not initiated by your iOS app or the iOS CoreBluetooth framework. The fact that this happens exactly 30 seconds after reconnection. 30 seconds is a standard timeout duration for several low-level Bluetooth protocols. This means the accessory itself terminated the link, not that iOS gave up on it.

I would recommend to look at the documentation. If you can share the raw HCI/LL termination reason from a PacketLogger capture, it can help narrow this down much further that reason code is really the missing piece here as there are bluetooth experts here that will be able to help. Unfortunately I’m not a bluetooth expert as I said previously.

Albert  WWDR

Thanks for the insightful explanation, Albert.

I checked the PacketLogger capture as you suggested. It seems the disconnection is indeed initiated by the peripheral. Here is the relevant log entry:

Jul 21 09:05:28.532  HCI Event        0x0059  TG1006CR           Disconnection Complete - Success  
	Parameter Length: 4 (0x04)
	Status: 0x00 - Success
	Connection Handle: 0x0059
	Reason:  0x13 - Remote User Terminated Connection

The reason code is 0x13 (Remote User Terminated Connection). This confirms that the accessory itself is terminating the link exactly 30 seconds after reconnection.

Given this specific reason code, does anyone have insights into why a peripheral might consistently trigger a "Remote User Terminated Connection" after a 30-second interval? Could this be related to a specific GATT timeout or a power-saving feature on the device side?

Any further advice would be greatly appreciated.

The BLE connection with the paired device keeps disconnecting.
 
 
Q