Hey, I've had issues with bootloading in the past, but recently I've ran into a new issue. The client can complete the download from the server, but it seems to fail at applying the new update. For more details see the attached image, but in summary the image downloads, passes ebl verification, applies the update, resets, then tries and fails to verify the image again. Why does this happen? I've had problems with the eeprom before, could it cause this?
Just a little something to add: The second verification doesn't always fail. When it doesn't, the device just perpetually tries to update.
Can you confirm which bootloader you are using. Try to make sure that you are using the appropriate bootloader. By that I mean, a bootloader that matches the correct stack version, and you likely do not want to use secure either.
Based on your comment that it perpetually keeps trying to update, this can happen if you built the .ebl file manually and set the version number higher than what you set in the OTA Bootload Cluster Client Policy Plugin.
What happens in this scenario is that your server thinks the ebl file is a certain version (2 for example) but your firmware version is actually 1 as determined in the plugin. So when you download it, you still have version 1 and the server still thinks it has version 2.
If you did make the .ebl file make sure to have all the appropriate values set such as image type ID and manufacturing ID (Set in the ZCL global tab).
I'm using an application bootloader. I don't know how to tell if it matches the stack or not. The ota file specifies the stack version as 2, while the stack I'm using is version 5.1.2, if that's what you're referring to. What you said about the ebl file having a higher version number made sense, but I have the ota file being generated automatically from the ebl with the same parameters (i.e: manufacturerId), and it still doesn't work. It just seems like the update isn't being applied at all.
Did you ever figure out why the client wasn't updating?
These kinds of issues can be tricky to debug sometimes since the bootloader isn't big on diagnostic output (due to space constraints).
I am also testing with OTA cluster for firmware upgrade.
Can you please let me know, do we have to handle OTA cluster's server callback and manually initiate the new firmware file transfer OTA?
And on the client side, do we have to handle the client attribute change callback and send the request to OTA server?