Battery Drain Solution as affected by identityservices / Messages
iOS9 Battery Drain - in relation to identityservices and Messages - affects IPhone, Watch and OS X Devices
Some people are having issues with battery drain on their iOS devices. We have two sets of iPhone (each a 6S+) / Watch combinations - each running the latest versions - 9.3.1 and 2.2 respectively. The battery drain on the Watch and iPhone was noticed about five days after the release of 9.3.1. I took the devices into the genius bar - they worked on them for three hours - doing many things to the watch — restoring it as new. They also reset all settings on the IPhone — all to no avail. Both devices had abnormal battery drain. They agreed to leave the ticket open since the issues were not resolved.
I found a post that suggested signing out of all services. I tried that on the first combination of iPhone and Watch. It seemed to clear the issue. Tried it a day later on the second phone - still very bad battery drain on the second set - it didn’t work. Various tests showed that the Watch by itself (matching iPhone not tuned on) did not drain - it drained only when the iPhone was on. And, the iPhone by itself drained.
Next step: I ran instruments from Xcode on the iPhone still having issues. I ran the activity monitor multiple times for various periods. The most recent run showed the system task: identityservices consuming over 5 HOURS CPU time in a 9 hour standby period. Safe to say that system task was draining the battery. The iOS log in the iPhone lists that task as consuming excessive CPU time - and that the thread causing it is related to a Messages store. I researched more and find that this system task seems to have created battery issues in other IOS version too.
I also found that the OS X version of that task (identityservicesd) was creating an inordinate number of error messages in the console log on two of our OS X devices (iMac and MacBook). It also ran the battery down on the laptop - quickly. Armed with that information I again instrumented the iPhone. I began shutting down each iOS device - (two iPhones and two iPads) one-by-one - when three of those devices were shut down the identityservices task dropped to minimal CPU usage - no longer at 50-90-105%. In addition the corresponding task on the OS X iMac and MacBook stopped spewing the error messages.
I re-booted each iOS device one-by-one after they were fully charged. The ‘runaway’ system task (identityservices) is back to very low usage. Battery life on the iPhones now - after being in standby mode for five hours - consuming very low “Usage.” Not actually doing much with the phones during that five hours. Previously Usage was almost equal to Standby time - it was a low ratio. Now it is a a very high ratio - about a 1 to 10. For those that like %’s - after five hours it is at 97%.
As to the watches - we are going to turn those and the IPhones back on soon and see how they do. I’ll post a report on those later in the day.
UPDATE: Watches are now running at normal battery levels.
The identityservicesd error messages on the OS X machines indicated that the error was associated with a particular “Machine ID” (not the same as the serial number shown in About). I’m going to see if I can track that number down to a specific device. I don’t know how to find the Machine ID’s on the iOS devices - or watches for that matter. Perhaps one of devices has an issue - more likely turning off all devices and re-booting them one-by-one cleared Messages caches.
I think some people may have the same issue - but perhaps do not realize it since they are used to a certain battery life level- or maybe they don’t have it as bad. In any event, I don’t think this particular system task should continue to run and consume high CPU when there is an issue.
I hope this note helps those few people that seem to have battery issues. This is not for everyone - I would consider the following to determine if it might help you.
- Check your iOS log (Settings | Privacy | Diagnostics & Usage) for an entry that starts with: ExcResource_identityservicesd-2016-MM-DD . . .
- If you have one or more of the above - chances are this may help you
- Power off all IOS devices (and maybe your OS X devices too - not sure if that is necessary) and power them back on one by one.
- Simple -- for us it has been very effective
- My concern - this may happen again if the system tasks is not modified.
My plan is to to submit a bug report to Apple to document this behavior as son
For reference, here is an example of the messages that were continually (~ 5/sec) being generated in the OS X console log during the periods of high battery drain.
Apr 17 20:31:20 XXX-MBP identityservicesd[288]: [Warning] Received IDS message payload is empty, not delivering B4DAF3C4-515F-477B-943F-6CF3B92643BB com.apple.private.alloy.thumper.keys
Apr 17 20:31:20 XXX-MBP identityservicesd[288]: [Warning] No broadcast desired for command 227 topic com.apple.private.alloy.thumper.keys -- deleting message with guid B4DAF3C4-515F-477B-943F-6CF3B92643BB
Apr 17 20:31:41 XXX-MBP identityservicesd[288]: [Warning] Received IDS message payload is empty, not delivering 9542E416-5CC5-4377-B3D6-BB1444BD7FBC com.apple.private.alloy.thumper.keys
Apr 17 20:31:41 XXX-MBP identityservicesd[288]: [Warning] No broadcast desired for command 227 topic com.apple.private.alloy.thumper.keys -- deleting message with guid 9542E416-5CC5-4377-B3D6-BB1444BD7FBC
Apr 17 20:31:41 XXX-MBP identityservicesd[288]: [Warning] Received IDS message payload is empty, not delivering F9CE360D-9705-4DE6-8E5C-EBB930BCD62D com.apple.private.alloy.thumper.keys
Apr 17 20:31:41 XXX-MBP identityservicesd[288]: [Warning] No broadcast desired for command 227 topic com.apple.private.alloy.thumper.keys -- deleting message with guid F9CE360D-9705-4DE6-8E5C-EBB930BCD62D
iPhone 6s Plus, iOS 9.3.1