Dear Team and Developpers,
My team and I have engineered and released last yearon the market a BLE product based on the TI cc2541, stack 1.4.0.
This accessory uses Just Works pairing.
Up to iOS 9.0.x everything was just fine.
Since the upgrade I noticed that full pairing (1st ever connection) or half pairing (the accessory is forgotten on the iPad 3) fail
Using ComProbe BLE Protocol Analyzer, the pairing process stops just after the exchange of the pairing random value at the SMP layer.
Here are the logs, to be opened the ComProbe free software : https://drive.google.com/file/d/0BxzxSBSzsu49aW45d1FyeFE2SkE/view?usp=sharing
The central (iPad 3) isn't actually starting the encryption.
The connection is then terminated after channel encryption timeout.
That's a serious problem as, for my iPad 3 clients, they cannot use their accessory anymore.
Is it a known bug ?
Is there any workaround ?
BR,
//KaHo
Please test this with the latest seed of iOS 9.1 beta. If it does not resolve your issue with the iPad 3, please file a bug report at https://bugreport.apple.com
In the meantime, if you want to solve this issue on your end you can try and fix it in firmware.
The reason for having this issue is the peripherals assuming that some reserved bits in BLE Spec 4.0 would always be zero.
iOS 9 is now using the new LE Secure Connections pairing model, and the SC bit is set to 1 in the pairing request.
The peripheral can ignore this request and choose to use the legacy pairing model, but it cannot ignore the bits when creating the keys.
The peripheral is supposed to use the pairing request exactly as received to calculate the keys. Some peripherals are assuming that some of the reserved bits would be zero and calculating the keys based on the wrong data when iOS sends a pairing request with these bits (in this case the SC bit) set to 1.