Hacker News new | ask | show | jobs
by nosignal 5532 days ago
How can the iPhone determine the location of a cell tower (or WiFi access point) just by receiving its signal?

While it seems obvious from that analysis that it is indeed logging the locations of the towers rather than the phone, I am more interested in how it derives the locations for those towers.

It could simply have a lookup table, but that would mean every iPhone has a lookup table of every cell tower (GSM and CDMA) as well as WiFi point in the world - with a globally unique identifier and location - as part of the OS. Which seems pretty implausible.

If it's doing a remote lookup, then it must be polling some service to determine the location of every CellID it seems. Something like OpenCellID (http://www.opencellid.org/) or Navizon http://www.navizon.com/) is what I mean. If so, it would effectively be broadcasting your location in real-time. This is equally implausible, as it just seems like the kind of thing we'd have heard about by now through OS investigation, or even just "why is my battery draining so quick".

It could conceivably triangulate the tower itself, but that's implausible as a) the phone's GPS would have to be active (see battery issue above) and b) it couldn't possibly be accurate unless you were effectively spiralling around the emitter.

It can't be getting it from the signal itself, as "emitter location" sure isn't part of the WiFi spec and I'd be amazed if it was in GSM or CDMA.

How else can the iPhone know (or estimate) the GPS coordinate of cell towers?

2 comments

I'm not entirely familiar with the protocols in use, but I assume the cell towers publish their GPS coordinates.

When my carrier installed a new tower in my area, Google Maps would start with my location hundreds of miles away until the GPS locked on. It eventually corrected itself, but I assumed at the time that they had the wrong GPS coordinates entered for that cell location.

There are dots on my map for places I have never been, so I don't think it is coming from the on-board GPS receiver.

They are getting it from a database, probably a proprietary one controlled by Apple.