PointPerfect Service Description


The PointPerfect service is designed to provide high-precision GNSS corrections to suitable receivers within a client system to allow for decimeter-level location accuracy.

Data Format and Distribution Protocol

PointPerfect uses either the MQTT 3.1.1 protocol (for IP-based connections) or L-band satellite for distribution of correction data. The correction data consists of a collection of messages in the SPARTN 2.0 format. Typical client systems will either exclusively use IP connections or a combination of IP and L-band. 

The table below shows the supported SPARTN message types:

Payload  Estimation

For IP, PointPerfect publishes SPARTN correction messages to topics within the PointPerfect MQTT broker where clock corrections come in every 5 seconds and GAD, HPAC and OCB messages come in every 30 seconds.  The size of the clock corrections is few hundreds of bytes. And the GAD, OCB messages are less than 1 kB each while HPAC message is around 8 kB. To obtain correction data, a client system must connect to the broker, subscribe to the relevant topics and then read and process the published messages.

For L-band, the correction data is streamed at the rate of around 90000 bits per 30 seconds.

Please note that the estimated payload varies by region, e.g. the average payload per 30 seconds in the EU region is 10kB, while in South Korea it is 3kB. Find more information on how to obtain correction data here: PointPerfect getting started guide

And for applications with limited data bandwidth and connectivity plans, a localized version of the PointPerfect service is also available. The localized PointPerfect significantly reduces the payload size.  Find more details here:  PointPerfect Localized Distribution

Note: To avoid possible device failures due to insufficient memory allocation, please adjust your data buffers to accommodate the current payload and leave room for future growth when more GNSS signals are added. We recommend setting your buffer limits to 1.5-2 times the observed payload average to ensure sufficient capacity and prevent potential bottlenecks during processing. 

MQTT Topic Structure

The topic structure follows the service distribution model to support both IP and L-band solutions and their combination. Currently the following models are supported:

The following table shows the topics used by the PointPerfect system.

Encryption/Authentication Implementation

The implementation of encryption & authentication for SPARTN messages is described in section 8.15 of the SPARTN 2.0 specification. However, PointPerfect implements a system-wide approach to authentication and encryption that combines elements of the SPARTN specification with those of MQTT.

Connections to the PointPerfect MQTT broker are made over TLS using system-unique X.509 certificates that can be downloaded and managed with the Thingstream portal. These certificates provide mutual trust between the client system and the MQTT broker. The MQTT client must also be configured with client-unique credentials (client ID, client certificate). 

The SPARTN messages published onto the correction topics (/pp/<plan>/<region>) may be encrypted per section 8.15 of the SPARTN specification. In order to decrypt this data, the client system must subscribe to the key topic /pp/key/<plan> to obtain the dynamic key and lease. This topic has a single message published to it by the PointPerfect service with the MQTT RETAIN flag set or through a dedicated REST API over HTTPS. This message will be updated every time the dynamic key is rotated, by default every 28 days. However, the dynamic key lease message (see below) contains details of the key validity period.

Note: for hybrid IP and L-band systems, the key leases must be obtained via MQTT or HTTPS as described above. The keys may then be cached on the client while they remain valid.

u-blox Receivers

In the case of u-blox high precision GNSS receivers (such as the F9P and F9K) the decryption of the SPARTN correction messages and the validation of messages using the Group Authentication Message is performed in the module itself. 

In the hybrid IP + L-band solution, the u-blox L-band receiver (the D9S) can be connected to either the host or directly to the F9 module. In the former scenario, the host is responsible for reading PMP data from the D9S and passing this to the F9P/K which (in addition to the SPARTN functions noted above) will also unpack the SPARTN payload from the PMP message. 

Dynamic Keys Lease

The dynamic keys lease message is encapsulated in a JSON structure in the following format:




      "start":"Current key lease start time (ms since start of epoch UTC)",

      "duration":"Current key lease duration (ms)",

         "value":"Current key as hex string"



      "start":"The next key lease start time (ms since start of epoch UTC)",

      "duration":"Next key lease duration (ms)",

      "value":"Next key as hex string"



L-Band Frequency Topic

The topic provides you information about the current frequency in MHz ("value") that is in use for a particular region. It also provides you with the information about the next frequency and the next frequency "start" time (in milliseconds since start of epoch UTC). Once the "start" time  to next frequency has passed, you would no longer see the next frequency, you would only see the current frequency. This information is provided so you can configure your receivers to the right frequency when the frequency switches. 

Here is a sample .json message that you would receive when subscribed to L-band frequency topic.



















Example System Architectures

The first diagram (below) shows a typical client system architecture for an IP-only system:

The second diagram shows a typical hybrid IP+L-band client system:

Technical Specifications

The following table shows the initial technical specifications of the service for the SPARTN 2.0 version.

* Horizontal accuracy: Typically, 3-6cm with compatible receiver. All accuracy results are based on :1) error-free GNSS observation data2) receiving complete and uninterrupted PointPerfect correction data
3) ambiguity fixed position results

Service Coverage

Homogeneous coverage in the contiguous USA, Canada, Europe, South Korea, and Australia, including up to 12 nautical miles (roughly 22 kilometers) off coastlines.

Contiguous USA and Canada 

All US states, excluding Alaska, Hawaii, and offshore US territories.


Albania, Andorra, Austria, Belgium, Bosnia and Herzegovina, Bulgaria, Croatia, Czech Republic, Denmark, Estonia, Finland, France, Germany, Holy see, Hungary, Ireland, Italy, Latvia, Liechtenstein, Lithuania, Luxembourg, Monaco, Montenegro, Netherlands, Norway, Poland, Portugal, Romania, San Marino, Serbia, Slovakia, Slovenia, Spain, Sweden, Switzerland, UK.
Excluding Sardinia and Corsica. 


New South Wales, Victoria, South Australia (Adelaide and periphery), Queensland (Brisbane and  periphery), Tasmania and Western Australia (Perth and periphery).

South Korea 

Device Provisioning

The service allows for device provisioning through the User Interface of the Thingstream platform, or through the API interface for programmatic provisioning.

Find out more information about Device Provisioning: PointPerfect getting started guide
Find out more information about Zero Touch Provisioning: PointPerfect Zero Touch Provisioning

PointPerfect Deserialized MQTT Topics

The SPARTN correction data IP topics (e.g. /pp/ip/eu) provide the SPARTN messages in a sequential order, where clock corrections come in every 5 seconds and GAD, HPAC and OCB messages come in every 30 seconds. The GAD, HPAC and OCB messages are required by the receiver to achieve a PointPerfect solution. 

To reduce the time the receiver takes to start using the correction data and achieve a PointPerfect solution, the device can subscribe to each of the SPARTN message topics individually. This enables the device to get the required data right away rather than waiting for 30 seconds while subscribed to the assembled SPARTN topic. 

The device needs to subscribe to the individual topics in the order described as follows to utilize them. Once the receiver has a fix (position information), the device shall first subscribe to the GAD topic. The device shall then subscribe to the HPAC topic, and finally to the OCB topic. After the data from these three topics have been received, the device shall subscribe to the CLK topic to receive the clock corrections.  Please refer to message sequence diagram shared below.

The individual topics used by PointPerfect for SPARTN messages for IP based plan are described in the table below.