Project Starting Point
I have a Zigbee end device that until recently, did not include an MBR, Bootloader, or the OTA cluster. Prior to the implementation of the previously mentioned items, the application used the SAADC peripheral and generally consumed around 35uA, give or take depending on the status of the SAADC. There are periodic spikes in current, however they are brief. Unfortunately I do not have a PPK and all of my measurements are taken via DMM. I am also not using a DK so my current consumption numbers are probably a little higher than they might be on a DK but not largely so.
Bootloader and MBR
I am using the bootloader included in the Zigbee 4.0 SDK. The only modification made was to add my own key pair prior to compiling. I am using MBR 2.4.1.
Zigbee OTA Cluster
The implementation of the Zigbee OTA cluster was essentially a copy/paste from the client ota example. There were minimal changes needed to my existing application, primarily isolated to adding the cluster to my existing device context and endpoint. The majority of required changes was ensuring I had all of the required libraries and includes added to my project. I combed through sdk_conf.h and made the additions there as well.
Prior to adding the above, I was not using the app_timer or app_scheduler libraries, instead using the zboss scheduler. From what I can tell, the OTA client example does not use app_scheduler despite there being a call to app_sched_execute() in main.
After making the above modifications I was able to successfully perform an OTA firmware upgrade following the guide here.
The Problem
The additions above have increased the device's current consumption to about 8mA for roughly 3 seconds (though sometimes longer) upon powering the device and then settles in around 690uA. I imagine some increased power is needed on boot to verify the application however the current consumption increasing in such a large way in the application has be stumped.I have seen a number of other tickets that mention high power consumption using the secure bootloader but those issue appear to be related to pre SDK 15 issues.
I use RTT for logging so UART was never enabled, and disabling logging has 0 effect on consumption. I have never had trouble with app_timer using excessive amounts of power in the past but I've not used V2 until now. I wonder if something is going on with the crypto module but that's just speculation on my part.
I am not sure what would be helpful to provide at the moment. I'd be happy to provide the project files but I'm not using a standard/supported build environment but will gladly provide the code if needed.
Thanks for your time.