Introduction
To successfully decode PointPerfect L-band corrections received from the NEO-D9S, your F9 module requires SPARTN dynamic keys (UBX-RXM-SPARTNKEY) upon every power-up. These keys are stored in the F9’s RAM layer for security reasons, meaning they are not retained after a power cycle.
To ensure uninterrupted operation without frequent manual intervention, a structured approach is needed to fetch, store, and transmit these keys automatically.
Understanding the Dynamic Key Cycle
Each device receives two dynamic keys, both valid for four weeks but with staggered activation times. This setup allows offline operation for 28 to 56 days, depending on the key cycle.
To avoid interruptions in correction services, it is highly recommended to retrieve new keys every 28 days. If additional keys are required beyond the default allocation, contact services-support@u-blox.com for approval.
Setting Up Key Management
Key Management Steps:
-
Fetching Keys:
- Use the ZTP API OR
- Manually download the keys from the portal and transfer them to the host. (coming soon)
- Storing Keys: Securely save them on the local host memory.
-
Converting to Binary & Transmitting Keys:
- Convert the stored keys into UBX-RXM-SPARTNKEY binary format.
- Send them over USB, UART, SPI, or I2C to the F9 module at startup.
(Sample script attached: generate_spartnkey_updated.py.)
For detailed guides and scripts to help with integration, see below.
Fetching & Storing Keys
Automated Provisioning (ZTP)
If managing multiple devices, use Zero Touch Provisioning (ZTP) to automate:
- Device registration (creating Thing)
- Fetching dynamic keys and credentials
Refer to the Zero Touch Provisioning (ZTP) guide
Manual Provisioning for single Thing (coming soon)
Sending Dynamic Keys to the F9 Module (UBX-RXM-SPARTNKEY)
This sample script converts the dynamic keys into a binary UBX-RXM-SPARTNKEY message, which transfers dynamic SPARTN keys to a u-blox receiver.
Configuration Requirements
Before running the script, you must edit it to provide the following connection details:
- Have your *.JSON file ready
-
USB Port:
- Windows: COM#
- Linux: /dev/ttyACM0 (or /dev/ttyUSB0, depending on your setup).
- Baud Rate: Typically 38400 (verify based on your device).
The Python script reads data from the retrieved *JSON file and transmits it to the F9 module via the specified serial port and baud rate.
A sample script is attached