Over the past couple of weeks, you’ve probably noticed a resurgence of the old rumour that Apple deliberately slows down older iPhones with software updates, presumably to encourage users to upgrade. Here’s the post on Reddit from “TeckFire” that, I think, sparked recent rumours to that effect:
[…] Wear level was somewhere around 20% on my old battery. I did a Geekbench score, and found I was getting 1466 Single and 2512 Multi. This did not change wether I had low power mode on or off. After changing my battery, I did another test to check if it was just a placebo. Nope. 2526 Single and 4456 Multi. From what I can tell, Apple slows down phones when their battery gets too low, so you can still have a full days charge. […]
John Poole of Primate Labs, the company that runs Geekbench, effectively confirmed the post by examining Geekbench users’ scores in aggregate, and concluded:
If the performance drop is due to the “sudden shutdown” fix, users will experience reduced performance without notification. Users expect either full performance, or reduced performance with a notification that their phone is in low-power mode. This fix creates a third, unexpected state. While this state is created to mask a deficiency in battery power, users may believe that the slow down is due to CPU performance, instead of battery performance, which is triggering an Apple introduced CPU slow-down. This fix will also cause users to think, “my phone is slow so I should replace it” not, “my phone is slow so I should replace its battery”. This will likely feed into the “planned obsolecense” narritive.
Here’s what Apple says about this:
Our goal is to deliver the best experience for customers, which includes overall performance and prolonging the life of their devices. Lithium-ion batteries become less capable of supplying peak current demands when in cold conditions, have a low battery charge or as they age over time, which can result in the device unexpectedly shutting down to protect its electronic components.
Last year we released a feature for iPhone 6, iPhone 6s and iPhone SE to smooth out the instantaneous peaks only when needed to prevent the device from unexpectedly shutting down during these conditions. We’ve now extended that feature to iPhone 7 with iOS 11.2, and plan to add support for other products in the future.
This statement is via Matthew Panzarino, who writes:
As that battery ages, iOS will check its responsiveness and effectiveness actively. At a point when it becomes unable to give the processor all of the power it needs to hit a peak of power, the requests will be spread out over a few cycles.
Remember, benchmarks, which are artificial tests of a system’s performance levels, will look like peaks and valleys to the system, which will then trigger this effect. In other words, you’re always going to be triggering this when you run a benchmark, but you definitely will not always trigger this effect when you’re using your iPhone like normal.
Apple’s solution is quite clever here: to make a device last longer during the day with a battery in poor condition, the system simply caps peak performance. Since most activities don’t require that level of performance, users shouldn’t notice this cap in typical usage.
However, for the tasks that do make full use of the CPU, the effect of performance capping can be very noticeable. If search is indexing in the background, or the user is playing a game, or Safari is rendering a complex webpage, the device will feel much slower because it’s hitting the wall of reduced peak performance.1
Even though I think Apple’s solution is clever and, arguably, right, I don’t think they communicated this very well. I don’t know why Apple would even consider keeping something like this hidden — there are hundreds of millions of iPhones in active use around the world, so it’s guaranteed to be discovered. I understand why they would be reluctant to communicate this to users because it shatters the apparent simplicity of the product, but it would also be trivial to present users with a first-run dialog indicating that the battery is in a poor state and the phone will run with reduced performance until it is repaired. By choosing to implement this quietly, it appears more nefarious than it really is. That doesn’t engender trust.
Update: Apple has long been very good about managing expectations. When an item is backordered in their online store, they almost always beat their own shipping time estimates. The web is awash with stories from users who were pleasantly surprised with free or inexpensive repairs when they went to an Apple Store. This is an instance where they blew it — needlessly, I think.
Update: It would be interesting to know how Android handles battery degradation, and whether they employ similar throttling mechanisms or have their phones shut off when CPU power requests exceed the maximum battery output.