PointPerfect getting started


Reach the mass market with your precise positioning solutions using PointPerfect. Precise, reliable, and easy to use, PointPerfect is a PPP-RTK GNSS augmentation data service that delivers centimeter-level accuracy in seconds on a continental scale. With 99.9% uptime availability via both internet and L-band satellite, you can rely on PointPerfect for mission-critical applications. Reduce your data cost significantly with the efficient SPARTN open data format and the scalable, simple to integrate MQTT messaging protocol. Reduce your bandwidth further by subscribing to the  Localized Corrections specific for your device’s current location. Zero Touch Provisioning makes it easy to deploy huge device fleets, eliminating the headaches of managing digital certificates. Our flexible price plans are tailored to suit your needs. PointPerfect is ready to use because it is pre-integrated with u-blox F9 and D9 high precision GNSS modules. Non-native SPARTN receivers are supported by the PointPerfect SDK.   

Supported u-blox products

u-blox products supporting PointPerfect:

In this guide we will see how to create PointPerfect Things in the Thingstream platform, how to provision them, and how to choose the plan that best suits your needs.

u-blox service platform sign-up

u-blox Thingstream is a service delivery platform providing a management console that you can use to enable and manage the entire suite of u-blox services , including IoT Location-as-a-Service and your Location Things (the logical representation of your location device in the Thingstream platform).

Sign-up is free, quick and easy.  Just go to the management console and register with your company information. If you already have a Thingstream domain for IoT Communication-as-a-Service (MQTT Anywhere, MQTT Here or MQTT Now),  or for IoT Security-as-a-Service you do not need to register again.

Creating PointPerfect Things 

Before your devices can use the service, you must create a Thing that represents the device in the system. Click on the Location Services item in the navigation bar on the left of the page and then click on the "Add Location Thing" button on the top right of the page.

When you add a location Thing you can add different Things for different services, in this case we want to create /add a PointPerfect Thing.

When you click on the Add PointPerfect Thing button, you will be prompted to enter a friendly name for the newly created Thing.

After you added the name, click Create to continue, now you will be asked to choose a Plan. For now let's skip this step, more about plans later in the guide. When you click Skip a new dialog opens with the options to see the details or the credentials of the new Thing you just created.

In the Thing Details section you can see the information of the Thing and if it is active and connected (in the example above it is disconnected). Additionally you can see:

In this dialog you can also Activate the Thing, and by doing so you will need to choose a plan.

Choosing The Right Plan

When you want to activate a PointPerfect Thing you will need to choose a plan based on which you will be invoiced for using the service. u-blox offers a great selection of plans that are designed to meet most of the requirements and business plans that you might have.

Please see the Pricing page for the details of each plan.

Individual Plans

The individual plans are a mix of fixed plans and hourly based plans. The fixed plans are meant for devices that will be consuming the service continuously, either over satellite L-band or over IP (MQTT). Conversely, the hourly based plans are optimal for devices that will consume the service only for an estimated monthly average. E.g. a device that is expected to use the service only 2 hours a day on average, would probably be satisfied with the monthly 60H plan.

Pooled Plans

Pooled plans are ideal for applications where the individual device usage may vary, depending on fluctuating factors, and where also the number of devices in use at any given time is not predictable or known. In this case, a fleet of a number of devices can be associated to a pooled plans to allow all the devices to share a pool of hours.

In the case below we will select the 250H individual plan and activate the device.

Once the plan is selected the Thing is now active and you can see its status now active and the plan to which it is associated. Also notice the renewal date that is now set on the monthly recurrence from when the plan was purchased.

Device Provisioning

Now that we created a new PointPerfect Thing and activated in the platform, we will need to enable it to connect to the platform. This is also known as "Provisioning". 

To provision the Thing we will need to download the certificates that we will need to install (upload) to our physical device to make sure it can connect to the broker and receive the service.

Downloading Client Key and Certificate

To download the key and the certificate go to the Thing details and click on the Credentials tab. 

Credentials Tab 

In this tab you can see the information that are needed to provision and also configure the device for the service access. To download the key and the certificate click on the respective links and save the key and certificate to your system. Now you are ready to transfer the files to to your device so that it is fully authorized to connect to the service.

Please note that if you want to use u-center evaluation software,  you only need to download U-Center Config JSON file which contains all the certificates and configurations needed by u-center.

Device Configuration

The next step is to configure the device to subscribe to the right topics to access the service. In the Credentials tab, shown below, you can also find the topics that are needed for the device to consume the service correctly.

The device will need to know where to get the keys that are needed to decrypt the encrypted SPARTN messages and to which topic to subscribe to receive the correct stream for PointPerfect data.

More details on the PointPerfect service can be found in the service description document.

Dynamic Keys

For the device to use the service, it must have access to the Current key to decrypt the data. “Current” and “Next” keys are provided with valid start dates to provision two keys simultaneously.  Please see more information in PointPerfect Key Management

Dynamic Key Topics

Each device must subscribe to a key distribution topic associated with their plan. When you subscribe to the key distribution topic in MQTT, you'll always receive the updated keys, regardless of when it was originally published.

See the Dynamic Keys Lease section of the PointPerfect Service Description document for an example of dynamic key messages in .JSON format. 

Service Data Topics

The service data topics depend on the plans chosen and they will differ between the L-band + IP service plans and the IP only plans. So, please pay attention to the differences especially if you have two different plans in your domain to support different applications and devices.

The list of current topics can be seen in the service description document.

Once you configure the topics for the PointPerfect data streams, the device is ready to access and consume the service.

Putting it All Together

Now that your device is configured, it can access the service. If the configuration was successful you should be seeing the Thing status changing to Connected in the Things details. Furthermore , when the device subscribe to PointPerfect topics, the Events tab in the Thing Details will show the successful subscribing operation as shown below.

Using u-blox Products: u-center and ZED-F9P

If you are interested in evaluating PointPerfect as part of a full solution, you might want to use also a u-blox high precision module such as the ZED-F9P. The ZED-F9P ships with the C099-F9P evaluation board.


The first step is to install and configure u-center to use the high precision GNSS receiver board C099-F9P (please refer to the u-center [1] and C099-F9P board documentation [4] on how to configure the solution).   

Once you have verified that your basic GNSS setup is operating, you can proceed to the configuration of u-center to access the service.

How to Obtain u-center

The version of u-center 23.08 that supports PointPerfect MQTT can be downloaded from Thingstream downloads portal portal.thingstream.io/app/downloads/pointperfect.

Note that u-center needs to be run as Administrator or installed in a folder that does not have restricted permissions, otherwise you will receive an error as shown in the screenshot below when trying to install the MQTT client configuration file. 


In order to access the service you only need to download "U-Center Config" JSON file from Thingstream > Location Things > Credentials

This will be the configuration file that u-center will use for the connection to the PointPerfect broker. This file applies to both Localized and Continental corrections. No editing is needed.


Once you have downloaded and stored the configuration file, the final step is to load the JSON into u-center.

First open the Receiver menu and select the MQTT Client item as shown in the next screenshot.

Selecting the MQTT Client item will open a new dialog as shared in image below. Click on the ellipsis (...) icon to browse your file system and select the correct JSON config file. Now, it's time to choose the correction type, and you have two options: 

Localized Corrections

Details on PointPerfect Localized Distribution can be found here

To access localized corrections, apply the JSON configuration file downloaded from Thingstream as described in the Preparation step above,

Choose the "localized" correction type, as shown in the image below. Subscribing to the AssistNow topic is optional.

After clicking 'OK,' the MQTT client will establish a connection to the broker and subscribe to the nearest node topic as determined by your device's location to receive localized corrections data. 


You can check the MQTT connection status in the u-center's status bar.

Clicking on the green connector icon will open the log, where you can monitor the messages being received and view the MQTT topic subscriptions as demonstrated below.

Continental  Corrections

To select Continental corrections in the MQTT client settings dialog box, you must also select "Subscribe to key topic" and "Subscribe to data topic" (and optionally "Subscribe to AssistNow topic" if needed.) Use the "Select Data Topic" drop-down menu to choose the topic that corresponds to your region. At the time of the writing of this guide, we offer four options: 

Please note that the topics you select should align with your plan.
Once you've made your selections, click 'OK.'" 

After clicking 'OK,' u-center will establish a connection with the PointPerfect service and begin receiving augmentation data. You can check the MQTT connection status in the u-center's status bar. Clicking on the green connector icon will open the log, where you can monitor the messages being received, as demonstrated below. 

At this point the C099-F9P is receiving PointPerfect service and you can see the performance of the solution by utilizing u-center. Please refer to u-center [2] and ZED-F9P documentation [1,3] for more information on how to analyze the high precision GNSS performance.

u-blox Receivers

Dynamic  Keys in UBX format

For the u-blox receivers that are in devices that do not implement a UBX parser, the users can subscribe to the following topic to get the keys in UBX format and transfer them to the receiver without having to construct the message. The keys data generated by this topic is in binary format and is not encapsulated in any envelope, so it can be transferred to the receiver as it is. 

AssistNow over PointPerfect MQTT 

To improve the time to first fix (TTFF) and ensure that receiver always has the latest ephemerides data, the device can subscribe to the AssistNow topics over the PointPerfect MQTT broker. With this additional assistance data, the receiver won't need to download ephemerides from the satellites, significantly reducing TTFF after a cold start. By subscribing to the AssistNow topics, your device can receive ephemerides data and updates for all four constellations, GPS, GLO, GAL, and BDS. 

To get started, simply subscribe to the /pp/ubx/mga topic, where you'll receive ephemerides data for all constellations. With a message size of around 8 kB, you'll have access to all the data you need to get started. Once you've received this data, it's time to unsubscribe and subscribe to the /pp/ubx/mga/updates topic to get incremental ephemerides updates with a message size of around 80 bytes for each satellite as they are updated.

By using this bandwidth optimized approach, your device can ensure that it always has the latest ephemerides data available, during periods of poor sky visibility and signal loss, such as in urban canyons.

While it is true that the incremental updates can reduce the required bandwidth, it is important to note that these updates still have an impact on overall data traffic. As such, unless the assistance data is deemed essential for operations in challenging environments, such as urban canyons, we would recommend refraining from subscribing to the aforementioned topics. By doing so, you can effectively conserve valuable data traffic and reduce operational costs.

The table below shows the two different topics and their respective message size and update frequency. 

Python sample script: PointPerfect MQTT Client 

If you are interested to evaluate PointPerfect with an MQTT Client built-in your host application, you may please refer to PointPerfect MQTT Client sample python script available in the Thingstream Downloads PointPerfect section to get started. The script demonstrates on how to authenticate the MQTT client with the broker and subscribe to the MQTT topics. 

Zero Touch Provisioning 

The device provisioning process described above is tedious and often slows down the production line increasing manufacturing costs. That's why u-blox has developed a much more straightforward way of doing bulk provisioning on large fleets of devices. This process is called Zero Touch Provisioning (ZTP). You can refer to the PointPerfect ZTP solution here

PointPerfect L-band Configuration: NEO-D9S, ZED-F9P and u-center

NEO-D9S is a satellite data receiver for L-band correction broadcast, which can be configured to be used with a variety of correction services.  The PointPerfect L-band guide document provides instructions on how to configure  NEO-D9S and the  ZED-F9P receivers for PointPerfect L-band  evaluation purpose.

GNSS Receivers without native SPARTN Support

For receivers that do not support PointPerfect (SPARTN format) natively, the users will need to integrate PointPerfect SDK in their application in order to take advantage of the PointPerfect service. 

PointPerfect SDK has two primary functions:

The SDK can be requested by writing to support@thingstream.io by providing details of the target platform architecture. We will review your request and provide you with the appropriate SDK build and documentation. 

Ephemeris Data over PointPerfect MQTT

To simplify SDK integration, ephemeris data required by the SDK is now available over MQTT.  The data is available on the following topics:

To get started, your application needs to subscribe to the /pp/rtcm/eph and forward the message it receives to the PointPerfect SDK library. Once you have sent the initial data from this topic, you need to unsubscribe from it and subscribe to /pp/rtcm/eph/updates instead. This will allow you to receive incremental updates only, which shall be sent to the PointPerfect SDK library. This feature is particularly useful when you are unable to obtain ephemeris data from the receiver, as it always provides the latest ephemeris data required by the SDK.

While the subscription to ephemeris service topic does simplify the SDK integration process, it is important to note that it will result in an increase in the incoming data traffic. If data cost or increased data traffic is a concern, it may be more appropriate to utilize local ephemeris data from the GNSS receiver, if available. 

Reference Documentation

[1] ZED-F9P Integration manual, UBX-18010802
[2] u-center User guide, UBX-13005250
{3} u-blox F9 HPG 1.32 Interface description, UBX-22008968
{4} C099-F9P application board User guide, UBX- 18063024