Requirements for AGPS
To get fully functional AGPS for the L5 we need the following
-
A reliable source of worldwide almanac and ephemeris data -
A cloud service to upload that data to -
A cloud service to vet and collate that data -
A cloud service to disseminated the collated files -
An L5 service to download the files from the cloud and upload them to the GNSS module
Reliable source of worldwide almanac and ephemeris data
The easiest way to get this would be to install a service into every L5 shipped but this has a couple of issues
- Sending the almanac and ephemeris data to the cloud would give an imprecise location for every user of the service
- Running the GNSS uses additional power so should only be turned on when needed
A better way to get the data would be to have the STM reference design https://www.mouser.ca/new/stmicroelectronics/stm-evb-liv3f-board/ or a Librem5 running 24 hours a day to upload these files to the cloud. One per continent would likely be the minimum for a seemless service but even 1 can shorten the TTFF by minutes.
Cloud service to upload the data
The almanac an ephemeris data are simple text files containing NMEA strings. The service would need to authenticate the users and store the files for later processing.
Authenticating the user would be step 1 of vetting the data.
Cloud service to vet and collate
The data contains checksums but these are easy to create so don't form much of a basis for vetting the data , basically just an error check on the upload. User authentication is the primary way to vet the source of information.
The data collation service partially decodes the binary data contained in the test file so that forms another part of vetting the data but again easy to bypass.
There is a POC for the data collation here https://source.puri.sm/angus.ainslie/almanac-collate
Cloud service to disseminated the data
These are simple text files so can be distributed in many ways.
Again there is a POC from https://storage.puri.sm/agps/
L5 service to get the data and upload to the module
gnss-share has the ability to upload the data to the module from the L5 filesystem.
There are also POC scripts that work with gnss-share or can upload to the module directly if gnss-share is shut down https://source.puri.sm/angus.ainslie/librem5-agps