PointPerfect Service Description


The PointPerfect service is designed to provide high-precision GNSS corrections to suitable receivers (e.g. u-blox F9 platform products) within a client system to allow for decimeter-level location accuracy.

Technical specifications of the PointPerfect Service can be found on our product page for PointPerfect, including reference frame and GNSS signal support.  

GNSS corrections can be distributed to your receiver in various ways to suit your needs.  See the pages below for a description of each method, including related architecture and topic details. 

Data Format and Distribution Protocol

All distribution methods for PointPerfect use 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. 

The table below shows the supported SPARTN message types, also described in the F9 Integration Manual. [1]  Use the UBX-RXM-COR messages to see how this information is received.

Payload  Estimation

Payload estimates vary by distribution method and by region.  For example, Continental payloads in South Korea and Japan may be one-third that of Europe, and Localized corrections are generally smaller resulting in lower bandwidth usage and user data costs

Correction data from L-band satellites is streamed continuously at a rate of 9000 bytes per 30 seconds. 

PointPerfect SPARTN Correction OCB messages are sent to the MQTT broker every 5 seconds, while HPAC and GAD messages are sent every 30 seconds. PointPerfect localized corrections are generally smaller than continental corrections, resulting in a reduction in bandwidth usage and lower user data costs of up to 80% depending on your region.  


The following table shows the differences between Localized and Continental payloads for the US region. 

*The IP Continental HPAC message is received in four smaller messages that are sent simultaneously 


Note: It is important to ensure your device has enough memory allocation to avoid possible failures. We recommended adjusting your data buffer limits to 1.5 times the observed payload average to accommodate the current payload while leaving room for future growth. This will make sure you have enough capacity to avoid potential bottlenecks during processing as well as to accommodate any additional GNSS signals when added. 

MQTT Topic Structure

The topic structure follows the service distribution model to support all solution combinations.  Currently, we support these distributions:

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.

Client Certification

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). 

Message Decryption with Dynamic Keys

The SPARTN messages published onto the Continental or L-band correction topics (/pp/<plan>/<region>) may be encrypted per section 8.15 of the SPARTN specification.  Localized topics (/pp/ip/{tile}/{node}) are not encrypted.

To decrypt this data, the client system must subscribe to the key topic (/pp/ubx/0236/<plan>) to obtain the dynamic key and lease.  This key topic has a single message published to it by the PointPerfect service with the MQTT RETAIN flag set of through a dedicated REST API over HTTPS.  This message  will be updated when the dynamic key is rotated approximately every 28-35 days.  However, the dynamic key lease message (see below) contains details of the key validity period.  

Note:  for L-band or hybrid L-band+IP 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 

When using u-blox high precision GNSS receivers (e.g. u-blox F9 platform products), the decryption of the SPARTN messages and the validation of messages using the Group Authentication Message is performed in the module itself. 

In the hybrid L-band+IP solution, the u-blox L-band receiver (NEO-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 F9 which (in addition to the SPARTN functions notd above) will also unlock 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"



Reminder:  The Localized distribution method does not encrypt the data and will not require management of these dynamic keys. 

Service Coverage

See our Service Coverage page where we provide our PointPerfect service.  Coverage includes up to 12 nautical miles (roughly 22 kilometers) off continental coastlines.  Note some distribution methods may not be available in all areas, and bandwidth estimations may vary. 

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 every 5 seconds and GAD, HPAC and OCB messages come 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 required order 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 the message sequence diagram shared below.

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

Reference Documentation

[1] ZED-F9P Integration manual, UBX-18010802

[2]  PointPerfect Service Coverage page

[3]  Thingstream Knowledge Base – Services Support