OTA Bootloader Bonding Problem | Cypress Semiconductor
OTA Bootloader Bonding Problem
We are using the fixed stack OTA bootloader with our application. The BLE Security configuration is Mode 1, Unauthenticated pairing with encryption, No Input No Output, Bonding, and Encryption key size 16 bytes.
For the most part, it is working. My test runs like this:
1. Remove any cached references to our product from the iOS device Bluetooth configuration ("Forget")
2. Load combined bootloader/bootloadable onto the BLE module
3. Launch our custom iOS app, confirm we are prompted to pair, agree to pair
4. Confirm communication is successful even after killing the app and restarting after several minutes. So Bonding (i.e. persistence of keys) was successful.
5. Trigger Bootloader (I happen to use a command in a characteristic value to do this as there are no physical buttons)
6. Open CySmart mobile app on the iOS device - Now at this point, it will time out on connect unless I go out to Bluetooth settings and "Forget" the device. Then I am prompted to pair, and am able to do OTA firmware update.
7. Once OTA firmware update is complete, the device begins advertising, but again I am unable to connect to it with CySmart or our own custom iOS app until I "Forget" the device in iOS Bluetooth settings. Once I do that, I am prompted to pair, and it reconnects as expected each time.
Is this normal behavior for having bonding enabled for the fixed stack OTA bootloader, to need to remove the bond when transitioning into and out of bootloader? If so, I'm not sure how we can make a workable user experience. Has anyone else run into this?