Skyhook Under The Hood: Geopositioning More Than 1 Billion Wi-Fi Access Points

Feb 18, 2015   

Posted by Kipp Jones

Lat. 42.351994 Long. -71.047663

In my last post, I gave a historical look at Skyhook and provided a high-level view of how Skyhook’s positioning system works. We introduced how our network of beacons is a constantly shifting, living network, which represents a fairly significant challenge, especially when you scale globally. The world of Wi-Fi is a big, dynamic, moving, changing, growing beast. And our goal has long been to tame this beast.

Along the way to create a global ‘always available’ positioning system, we went beyond Wi-Fi, extending our hybrid location network to include Cell-based location, GPS-based location, and even added on-device sensors into the mix. And while we’ve always thought of Wi-Fi access points as beacons (heck, the information that they all transmit every 100ms is called a ‘Beacon Frame’ after all) we aren’t done with beacons — we have some exciting stuff in the works around the world of Bluetooth Low Energy beacons — some of you may have heard of these things as iBeacons).

But I digress — let’s get back to some of the fundamentals of how a Wi-Fi positioning system works.

So, how do we do what we do? There are a number of pieces to this puzzle:

  • First, you need to know where a bunch of beacons are located around the world.

  • Second, you need software on the device to acquire signal information about beacons around the device.

  • Third, you need to get information to that device — or, conversely, to get radio signal information to a service.

  • Fourth, you need to be able to compute a location based on that information.

  • Fifth, you need to constantly groom your database of beacons.

  • Sixth, GOTO First

Unfortunately, this isn’t actually an ordered list in real life — you actually need all of the above in place to really make the system work. Suffice it to say that we had to do some bootstrap moves to get to where we are today. This largely consisted of building the full system while seeding the database of access points by driving millions of kilometers of roads in search of Wi-Fi signals. This bootstrapping process allowed our positioning system to be fully operational before being fully deployed on millions of devices, and in fact is why customers have been willing to invest in using our system to deliver global positioning to their apps and devices.


device_triangulation_blog_positioning.png

Figure 2: Basic system diagram for Skyhook Location services

Figure 2 is a very rough view of how our Location Services are organized. The process is a continuous cycle of inbound requests/data, processing, analysis, rebuilding, and back to the beginning where we make use of the latest inputs.

Data coming into our system from mobile devices directly, through our APIs, or via our survey devices, gets incorporated into our processing to continuously update our global beacon geolocation database. The newly updated beacon database is provide to our API services to provide the latest and greatest geo location capabilities to all of our customers. And the data exhaust is fed into our analytics process to provide additional insights for our customers.

This creates the ever appealing virtuous cycle of data. The more data coming into the system, the better the positioning system, the more appealing to our customers and the end users, the more likely more people will use it. Though this cycle of goodness, the system is able to keep up with the shifting sands that is the Wi-Fi landscape, repositioning, recharacterizing, quarantining, retiring, and adding millions of Wi-Fi access points each and every week.

Next week, we’ll break these activities down a bit and talk about each one in turn. header_world

Download Skyhook Precision Location SDK

Topics: Devices