PointPerfect Zero Touch Provisioning

Overview of Credentials Provisioning

To access the PointPerfect service from a device, the basic steps include creating a PointPerfect Thing on our Thingstream platform and using the credentials provided in the PointPerfect Thing to provision the service onto the device.

Your device can be provisioned to use any available delivery methods provided by the PointPerfect plan (NTRIP, MQTT, L-band) with the corresponding client credentials for the device.  See all of these steps explained in the PointPerfect Getting Started Guide

As your fleet grows, performing these steps on individual devices can add time and other related costs to your organization. To reduce these costs, u-blox has developed Zero Touch Provisioning (ZTP) allowing customers to deploy devices that can provision themselves.  This happens automatically the first time they access our PointPerfect service in the field.

Implementing Zero Touch Provisioning 

PointPerfect ZTP is based on two elements:

Creating a Device Profile

Select 'Device Profiles' from the Location Services menu on the sidebar and click on 'Create Profile' in the top right corner. 

In this section

Still need help?

If you need more help or have any questions, please send an email to support@thingstream.io.

You can now set the following Device Profile attributes:

Calling the REST API

Once the Device Profile is created with the desired plan and preferences, you will find on the Device Profile page the ZTP endpoint URL and the provisioning token to be used for creating/provisioning devices using this Device Profile.

The swagger docs for the API can be found here.  

The body of the request shall be in the following format:

{"tags": ["string"],"token": "string", "givenName": "string", "hardwareId": "string" }  

where:

Upon a successful request the response body will include JSON code with content needed by the device to use the service, including device authentication parameters and specifics for using the selected plan and delivery methods defined in the Device Profile. The device can parse the JSON content to collect and store client authentication and connection requirements for PointPerfect after provisioning.

Note: Authentication parameters in the JSON (credentials such as certificates and private keys, username and passwords) are unique, and the device can store and use them as such. 

An example of the an MQTT request response in JSON format is shown below. 

{

    "certificate": "string",

    "clientId": "f5xexxxxxxxxxxxxxxxxxxxxxxx",

    "privateKey": "string",

    "brokerHost": "pp.services.u-blox.com",

    "supportsMqtt": true,

    "supportsLband": false,

    "subscriptions": [

        {

            "description": "IP key distribution topic",

            "path": "/pp/key/ip"

        },

        {

            "description": "IP correction topic for EU region",

            "path": "/pp/ip/eu"

        },

        {

            "description": "IP correction topic for US region",

            "path": "/pp/ip/us"

        }

    ],

    "subscriptionsTitle": "Subscriptions",

    "rotatingKeyTitle": "IP Dynamic Keys",

    "dynamickeys": {

        "next": {

            "duration": 2419199999,

            "start": 1647043182000,

            "value": "95axxxxxxxxxxxxxxxxxxxxxxxx"

        },

        "current": {

            "duration": 2419199999,

            "start": 1644623982000,

            "value": "82xxxxxxxxxxxxxxxxxxxxxxxxx"

        }

    }

}

An example of an NTRIP request response in JSON format is shown below. 

{

    "brokerPort": 0,

    "ntripCredentials": {

    "userName": "d2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",

    "password": "xxxxxxxxxx",

    "endpoint": "ppntrip.services.u-blox.com",

    "httpPort": "2101",

    "httpsPort": "2102",

    "mountPoints": [

      {

        "path": "/EU",

        "region": "Europe",

        "displayName": "Europe"

      },

      {

        "path": "/US",

        "region": "United States",

        "displayName": "United States"

      },

      {

        "path": "/AU",

        "region": "Australia",

        "displayName": "Australia"

      },

      {

        "path": "/KR",

        "region": "Korea",

        "displayName": "Korea"

      }

    ]

  },

  "supportsMqtt": true,

  "supportsLband": false,

  "subscriptions": []

}

The PointPerfect Thing for your device (auto-created as a result of your successful ZTP request) can be seen in the Location Things section on the Thingstream platform. You can search your device using the name, the unique "hardwareId" parameters used in the provisioning request, or the tags defined in the device profile.