Chris Schoeneman wrote:
I fixed a rapid iPhone 4s battery drain several days ago. I simply changed the MMS APN. Details follow.
My wife's phone recently started draining its battery fast -- 100% in well under 24 hours with no usage. The phone had been fine then started doing this for no known reason. We did the usual reboots, turning off unneeded stuff, the time zone fix, etc. That didn't work but with the above change it's now back to normal and can go for days on standby.
I have an identical phone without the problem so I compared the two using XCode's Instruments. CommCenter on her phone would spike the CPU briefly every several seconds and the log showed a message '... is telling PDP context -1 to go active' every 30 seconds. I suspected these were related.
From my understanding, there's no such thing as a context -1 and this must be a bug. Launch field test (by dialing *3001#12345#*) and it'll show you the PDP contexts, which are numbered 0, 1, 2, etc. I don't know how long context -1 had been around but I'm guessing the whole time the battery was draining fast. We had tried rebooting the phone to fix the battery drain but that didn't work. I don't know if the phone was keeping the context around across reboots, but I doubt it. I suspect the GPRS network was keeping it and pushing it to the phone. I know next to nothing about GPRS, though, so that may be wrong/impossible.
I searched using google for a way to force all contexts to be flushed. What I found was that changing the APN would do that. As it happens, her MMS APN (Settings > General > Network > Cellular Data Network) wasn't set, preventing her from sending multimedia attachments in texts. I set it correctly. (Had it been it set correctly I would've cleared it then set it back.) That seems to have fixed the battery drain, plus she can again send images in texts now.
Now three caveats. First, I can't reproduce the battery drain so I can't verify that these steps always work. But I can say that the fast draining had been going on for a few weeks and it stopped immediately following the above.
Second, shortly after doing the above the springboard became unresponsive to touches. I don't know what that was all about -- I've never seen it before (and I have changed the APN before). I had to reboot the phone to recover. (Interestingly, pressing and holding the home and sleep/wake buttons didn't bring up the power off slider; the phone just shut off after a few seconds.) Now we had tried rebooting the phone to fix the battery drain before and it didn't work and it didn't become unresponsive for a while after changing the APN, long enough to see the battery drain problem looked like it was fixed, but I can't be sure the reboot wasn't important somehow.
Third, your phone may not be having the same problem. But it's easy enough to check the log for the 'PDP context -1' message using XCode or, say, YASC (in the AppStore). However, that presumes the battery drain is related to that message and not some other unrelated problem that causes CommCenter to wake up every several seconds.
Since the potential fix is so easy, it's worth just trying it. Go to Settings > General > Network > Cellular Data Network, write down the MMS APN, clear it, then reboot. Go back to the same page and put the MMS APN back and reboot again. (The reboots may not be necessary.) See if the drain is fixed.