I am looking into this one with the software team.
I had read that there were certain Bluetooth related bugs in iOS 8.0(iOS 8 Troubles Continue. iPhones Hit By Bluetooth Problems - Forbes) and they have fixed it in iOS 8.1, not sure if its related to that. Could you verify if you had any success with this.
According to the spec, sending security request should result in pairing if devices are not bonded, or setting up the encryption, if devices are already bonded. So if you are already bonded, your application should be waiting for encryption changed callback rather than SMP result callback. Application can check if it is paired with the device at the time when connection is established, by calling emconninfo_deviceBonded().
It actually works correctly in iOS 8 (and it used to work correctly in iOS 5). In 6 and 7 when phone received SMP request it would erroneously start pairing even if devices are already paired.
Pair device with iPhone.
Then from a disconnected state call these to attempt to clear out bonded info (this is done to attempt to clear out the pairing info if say we want the device to re-pair with a new phone)
Then from iPhone, reconnect to same device.
- emconninfo_deviceBonded() is false in connection up (expected)
- lesmp_sendSecurityRequest is sent
- encryption changed callback not received (not expected). Also no pairing dialog on phone appears.
device stays connected but emconninfo_deviceBonded() remains false.
So now we have a connected device but it is not bonded and no way to get it to bond except removing from iPhone bluetooth menu.