Thursday, April 09, 2015

Constant 50% CPU usage on iPhone running iOS8

I don't usually publish break/fix stuff here, but I couldn't find ANYTHING on the Internet that helped me solve this one, and I think I've nailed it.  So here goes.

I have an iPhone 6 running iOS 8.x, I am on the Rogers network in Canada.  I was travelling in the US on the AT&T network, and got a carrier update which I mistakenly applied (although all my support calls indicated that this shouldn't affect anything).  Upon returning to Canada, I discovered my CPU usage was bouncing between 50-51% as a flat bar (Discovered using SysStatLite).  Anyone who knows anything about CPU graphs and computers know that when a computer is idle, the CPU bounces between 2-8%, but when it's doing stuff, the CPU graph bounces randomly all over the place, unless the CPU is pegged at 100% doing some processing (photo editing, video editing, video gaming, etc)

Idle CPU Example

As you can imagine, the two biggest battery eaters on a mobile device is the CPU and Screen, followed closely by network).  So with my CPU hovering at 50%, my battery life was cut in half.  an hour drive home would eat 1/4 of my battery, so that's like 4-5 hours of battery life in my phone, not acceptable!

So let's get into the list of things I tried without getting intrusive:

  • Rebooting
  • Closing all open applications (double-tap home screen and close apps)
  • Turning off all background apps
  • Turning off all location services
  • Going into Airplane mode
  • Restoring from iCloud
Whoa! Going into Airplane mode killed the CPU instantly, that's a good sign.  In fact, turning airplane mode back off, then left my CPU normal... but only for 30-60 minutes, then back to 50%!

50% CPU, airplane mode to 8%, off airplane mode spike and back to 8%
As you can probably guess, I don't just feel my phone in my pocket getting warm and immediately open it, turn on airplane mode, and then turn it off and stick it back in my pocket, so I would often pull it out of my pocket and think "damn, my phone is hot", and I have 30% battery left.

Time to call support

I called Apple.  Apple support is A-Mazing if you have never called it.  We did a number of things
  • Back-up the phone and Restore it from iCloud (and also from iTunes), again
  • Factory reset the phone (no issues, but no data)
  • Set up the phone from scratch again (without using a backup, by the way this is extremely intrusive and painful!)
All these problems still persisted.  Apple replaced my phone.


I went to Rogers support, they replaced my SIM, so now I have a new phone, new data, and new SIM and the problem still existed.  Clearly since this isn't wide-spread on the Internet it was something I was doing.  I started researching everything that I could find (apps would crash as seen in SysStatLite) and I would research them
Still nothing seemed to drop the CPU instantly, until I came across this community article.
Answer #3 on this page indicated that if you sync'd your phone against an Exchange server, contacts would have issues now and then.

This made something click for me.  As a former Microsoft employee, I'm pretty knowledgable on Exchange (after my years working on Small Business Server).  I knew that supported Exchange Active Sync which is a fantastic protocol for syncing email, usually reserved for full Exchange (Office365).  Instead of setting up my iPhone using the default settings, I chose to set up as an exchange server.  I deleted my personal email account and re-set it up using the prescribed method for syncing addresses on iPhone.  One of the benefits of EAS is you never have to reconfigure it, even if an admin moves something around.  So I figure maybe an admin would move my mailbox somewhere, and change the config, but my hard-coded config on the phone wouldn't adapt to this.

So far the CPU hasn't spiked since! it's been idle and my battery life rocks again!

So, the moral of the story is (aka, TL;DR)
(1) Don't be too smart for these devices
(2) Use the most tested methods when using both Apple and Microsoft software/hardware for the best experience.

Hope this helps a few more people save the hours it took me to figure this one out.