"Encryption is insufficient" message with BLE

I'm working on a BLE app with a hardware partner using samples of their device, which I am able to erase and re-flash when needed.

When I try to use the device it initially works fine. I can connect to it, make requests, and get back responses.

However, after a short time and a few successful runs, I start getting the error "Encryption is insufficient". The error is seen in the "didUpdateValueFor" function. I can still connect to the device, and enumerate all of its services and characteristics, but I can't read any data.

If at this point I re-flash the device and also go into the iOS setting app and "forget" it, then I can use the device normally again, at least for a while.

What causes this? Is there a way I can fix it in my app?

Thanks, Frank

Replies

Hello Frank, Did you manage to find a solution? I think we have the same problem since the last iOS updates. Thank you in advance for your feedback Kam

Hi,

Did anybody resolve this problem or have any thoughts on how to fix it?

Thanks, Dmytro

Depending on the your peripheral device, you may be able to set the properties of the characteristic that you are connecting to. In my case, where my peripheral was a Swift app on a Mac, I changed one of the properties from .notifyEncryptionRequired to .notify. It's obviously not an ideal solution, but it may be better than your app not working at all.