Assisted GPS with the Location Service

Registered by Thomas Voß on 2013-11-06

The location service as deployed on the Ubuntu Touch image today supports the notion of different location providers. It features network assisted positioning by means of Ubuntu's geoclue provider and satellite-based positioning via the Android HAL. It however lacks the following features:

  * Glue code to wire up the Android GPS HAL hooks for assisted GPS to:
     * Inject reference time
     * Inject reference location
  * Common interface to query network information:
    * Wifi IDs
    * Cell IDs
  * Feeding the data back to positioning databases like https://blog.mozilla.org/services/2013/10/28/introducing-the-mozilla-location-service/

This session will cover the requirements for securely and efficiently wiring up all features to seamlessly support assisted GPS. On top, if time permits, we could deep dive into different stumblr approaches.

Blueprint information

Status:
Not started
Approver:
Thomas Voß
Priority:
High
Drafter:
Thomas Voß
Direction:
Approved
Assignee:
Thomas Voß
Definition:
Review
Series goal:
None
Implementation:
Unknown
Milestone target:
milestone icon ubuntu-14.04

Related branches

Sprints

Whiteboard

Assisted GPS can be split up in two big chunks:

(1.) Assisting the GPS chipset to acquire a first fix as fast as possible. To this end, a reference location rl is required that the GPS chipset uses to query a (SUPL) server over a data link, providing the chipset with almanac, ephimeris and ionosphere data that it would otherwise have to receive via the GPS beacons. In case of cold starts, transmitting all the required information can easily take up to 15 minutes. Leveraging SUPL (see http://en.wikipedia.org/wiki/Assisted_GPS) significantly reduces this time-to-first-fix (TTFF).

(2.) Step (1.) obviously relies on an external reference location. The higher the accuracy of this reference location, the better the results in terms of reducing TTFF in step (1.). Commonly, a reference location is obtained via network-based positioning. This technique relies on WIFI IDs and Cell IDs visible to a device to query a map (online or offline) of known WIFI APs and Cell IDs for a reference location. The higher the quality of the map, the higher the quality of the reference location. In addition to just feeding to the GPS chipset, the reference location can be provided to applications, too, and further reduce the impact of TTFF on application usability.

(?)

Work Items

Work items:
Document and identify required click package hooks for installing providers and reporters: TODO
Expose an API for querying WIFI and Cell IDs within the location service: TODO
Expose and identify the GPS HAL hooks for injecting a reference location into the GPS HW: TODO
Implement a reference location provider that is hooked up within the GPS provider to feed rl's into the GPS chipset: TODO
Provide users with means for opting out of WIFI and Cell ID harvesting: TODO
Provide a reporter infrastructure to allow for hooking up to arbitrary stumbling services: TODO
Implement a demonstration reporter: TODO
Ensure that WIFI IDs marked with -noscan are not harvested and transmitted to stumbling services: TODO

This blueprint contains Public information 
Everyone can see this information.