Why does GPS on the iPhone use so much power?

I keep reading in articles that GPS on the iPhone, or any cell phone for that matter, uses a lot of power, but I've never heard an explanation of why.

Why is this? The phone doesn't have to transmit like it does with 3G or WiFi.

Does the actual act of receiving and amplifying the signal take a lot of power?

Or is it used by the CPU? I find it hard to believe that the computation necessary to process the GPS signal would tax a modern processor.

So where does the power drain come from?


Solution 1:

To obtain a semi precise GPS position, you need at least three satellites (but usually four or more is required to obtain a decent degree of precision) to triangulate your position. The more you have the better the accuracy.

A GPS receiver needs to power its antenna, and constantly process the signal sent by each satellite. Remember that satellites are continually transmitting messages. (50 bits/sec as far as I can remember)

Satellites emit messages specifying their exact location, trajectory, speed, the time each message was sent and the rough location of all the other satellites in the constellation.

By comparing this info to the time the signal was received a distance from the satellite to the receiver can be determined. When you have three or more satellites you can triangulate your location in three dimensions relative to the positions of the satellites.

The iPhone (and other phones) use A-GPS, which is designed to (believe it or not) among other things, make the GPS work better in poor reception areas (cities?) and reduce the amount of information that the receiver needs from the satellites, thus saving battery power from the Antenna.

The parts of the GPS signal about location, speed and orbital trajectory usually drop out first when in low reception, that’s where A-GPS fits in, feeding that info for every satellite in that part of the world to the phone, from a central database via the mobile network. Now the phone just has to search for the short timing signals from each satellite, which are easier to receive than the other parts of the transmission.

When all that information is calculated, an algorithm (there are a few as far as I know) is used to compute the position of the actual receiver.

Now add to that the fact that GPS messages are encoded and that satellites broadcast the messages at about 50 bits per second. And that each message is really a subset of frames with time, position, error correction, etc, etc.

There are more factors involver, but for the purpose of making this simple, the GPS’s cpu must constantly use the radio (already power hungry) to capture the signal (which may be weak!) for usually four or more (sometimes up to 20!) satellites that are constantly sending packages, then it must decode and process them, perform calculations to analyze the results and in some cases draw a map or feed an application with the info.

As you can see, this sounds easy but it’s not. There’s a lot of CPU processing involved in the back (plus the antenna’s power!)

So the GPS power consumption usually comes from the real time nature of the operation. Powering the antenna, listening for information and processing it, uses power, more than just a standby radio antenna (the phone) waiting for a call. Plus the A-GPS uses also the phone’s radio and (if available) Wi-Fi networks to determine its location (and use less GPS info), which means, more power is used at the same time.

The Wikipedia GPS page has a lot of detailed information if you want to get the specifics and/or dive into more GPS geekery, including the math and error correction stuff.

Solution 2:

Although Martin's answer has tons of great information, I'm going to add an answer that differs on several key points as I don't feel comfortable editing his article to change it substantially.

In a nutshell, the CPU takes the power and the GPS keeps the CPU from sleeping. Furthermore, with background location updates, apps can now enter low power state even while geo fencing and remote recording is enabled so that the app can wake itself up periodically to get more accurate fixes without keeping the CPU+GPS circuitry active for hours on end. By triggering a high accuracy GPS fix once every 15 to 45 minutes while hiking is far more energy efficient than needing constant location updates which is what the OS changes now allow.

Yes, the GPS antenna circuitry does take some additional power to do the timing calculations and spit out a location but since the antenna is receive only and no signal needs to be amplified, this power drain is more of a rounding error than the cause of high power consumption. The signal processing and complicated math to spit out location, probable error and speed vectors is done in the GPS silicon chip and not the CPU of the phone.

All portable GPS units have to receive and process the GPS antenna signals - so that power usage is likely to be similar across all devices using modern GPS chipsets. Also the energy of two AA batteries is 4.2 WHr which compares very well to iPhone 3 and 4 battery capacities. Thus the big difference in run times between say a Garmin and an iPhone is the app that uses the data runs a much more power hungry iPhone CPU and screen.

Having an app in the foreground constantly processing GPS data (or in the background but sleeping very much less than normal) is what makes the iPhone use battery energy so much faster than a single purpose GPS unit. (whose screen and CPU use much less power and sleep far more of the time than the iPhone does)

A poorly designed iPhone app that is constantly checking and sending / receiving data to report a location or react to the latest new data will use more energy than you might expect. A well designed app that needs to be running all the time will similarly drain the battery of most iPhones in 3 to 5 hours.

If the iPhone is transmitting data or searching for faint cell signals - that circuitry will be on it's highest consumption level. Hiking out of cell coverage is a "double whammy" of the cell modem transmitting on high power to talk to a distant tower or search for coverage at the same time GPS location data is preventing the CPU from sleeping as often. You can see this by going to the settings app and comparing the Standby and Usage times with and without GPS active.