The Blood Pressure monitor(TI CC2541)
is a slave and the Apple product is a master. We test on iOS 6.1.3.
If we use the pairing
method comply with “BluetoothDesignGuidelines R6.pdf”, it really
works well after pairing and bonding.
But after I selected “Forget this device”, the iOS cannot pair and bond
with my BLE device anymore. In addition, the slave also
could not know the iOS has forgot it.
When I debug the slave’s pairing and bonding
procedure, I find that even the iOS has forgot this device, the slave can still
use the
old IRK
resolving the new random device address into the Apple product’s public device
address, so, the slave considers itself is still
in the
bonding status. And because the iOS had forgot this device, the iOS did not
encrypted the link. In this case, when the slave
received an
ATT read request of characteristic, the slave shall reject this ATT read
request with the “Insufficient Encryption” error
code,
because the slave still ask a encrypted link. However, the iOS does nothing to
process this error code.
We also test on iOS 7 beta(11A4414e), there is no
problem anymore. Does there any way to resolve on 6.1.3, and will 7.0 or later
could keep
the status in beta version.