Skip to main content

Firmware Update

SparkPNT releases new firmware to improve or fix the functions and subsystems of the SparkPNT FPL-T. These firmware releases will update either the device's primary controller; or the subsystems for the GNSS receiver and LoRa radio. The firmware versions are displayed in the configuration header.

System information on the configuration page

Configuration page with system version numbers

info

Users can check out the SparkFun_RTK_Everywhere_Firmware GitHub repository for the firmware releases and changes. Additionally, the firmware files from each release is archived in the SparkFun_RTK_Everywhere_Firmware_Binaries GitHub repository.

Updating ESP32 Firmware​

The ESP32 runs off our open-source RTK Everywhere firmware, which is used in all of our GNSS RTK devices. The version of this firmware, is listed in a variety of places:

WiFi Config page

Header of the WiFi Config page listing the firmware version

Web Config - System Configuration

Firmware version listed in the System Configuration menu of the Web Config page

Most of our firmware releases will update functions or add new features. To check for the most current versions, follow the Check for New Firmware section of the Configuration Settings guide. Most users will upgrade the firmware through the web configuration interface.

  • OTA Method: Connects to a WiFi network to download the latest firmware from the internet. This can be done using the WiFi AP Config Mode, but also requires a local WiFi network with an internet connection.
  • WiFi Method: Uploads the firmware directly from a mobile device, using the WiFi AP Config Mode.
  • Reprogram the ESP32: Reprograms the ESP32, using the FPL-T's USB interface. This method is primarliy used for a device failure, when the firmware needs to be restored with the default settings.

Over-The-Air​

With the Over-The-Air (OTA) method, the FPL-T will use the local WiFi network to check the internet for new firmware. If new version is available, it will automatically download the firmware file from the internet and update itself. Users can also enable this process to run automatically, to keep their device(s) updated.

  1. Connect to the FPL-T with the web configuration interface
  2. Make sure that a WiFi network has been configured in the settings
  3. Navigate to the System Configuration setting, where the firmware can be updated

    Updating Firmware from WiFi config page

    Updating the firmware via WiFi config page

    1. Click on the Check for New Firmware button. The FPL-T will connect to the internet, through the configured WiFi network. Then it will check for the latest firmware releases, excluding the release candidates.
    2. If a new firmware version is available, an Update to version number button will appear.
    3. Click the button to begin the OTA update process. The FPL-T will download the latest firmware binary and update the firmware to the ESP32.
Automatic Updates

To enable automatic updates, select the Enable Automatic Firmware Updates option. Then click the Save Configuration button at the bottom of the webpage, to save this configuration change.

note

Automatic firmware updates are supported over WiFi, which makes checking and upgrading a unit simple. The polling period is specified in minutes and defaults to once a day.

note

The OTA update method only checks for and installs the latest firmware release; it cannot be used to restore a firmware release or revert to an older firmware release.

Upload from WiFi​

The upload from WiFi method, is for users who already have the firmware binary file downloaded on their computer or mobile device. Then, using the WiFi connection to access the FPL-T configuration menu, they will upload the firmware file from their computer or mobile device.

  1. Connect to the FPL-T with the web configuration interface
  2. Navigate to the System Configuration setting, where the firmware can be updated

    Advanced system settings

    1. The firmware is uploaded to the unit by clicking on Upload BIN button.
    2. In the dialog box, locate and select the firmware binary file (i.e. RTK_Surveyor_Firmware_vx_x.bin) from your device.
    3. Click the Ok button to begin the upload sequence. This will transfer the firmware file from the computer or mobile device to the FPL-T, through the WiFi connection, where the FPL-T will automatically update the firmware itself.
  3. The unit will automatically reset once the firmware upload is complete.

Reprogram the ESP32​

This method is a more involved process, but it can be used in emergencies to restore the firmware when the FPL-T is bricked, frozen, or unresponsive. The firmware will be uploaded directly to the ESP32 through its serial interface; effectively, reprogramming the module. There are a variety of ways to perform this; however, our RTK Firmware Uploader tool is the simplest.

Reprogramming the ESP32 with the RTK Firmware Uploader
  1. Connect the SparkPNT FPL-T to a computer with a USB cable.

    USB connector

    Users can access the USB-C port under the rubber cover on the bottom of the FPL-T

    When connecting to the USB interface of the SparkPNT FPL-T to a computer, the device should automatically be detected as two COM ports. If the ports are not detected then users will need to install a USB driver to access the data or configure any settings.

    USB Driver

    The USB drivers for the CH342 USB-to-Serial converter can be downloaded below:

  2. Install the RTK Firmware Uploader tool. The program can be downloaded from the release page, with additional instructions provided in the README.md file.
  3. Download the firmware's binary file. All of our firmware releases can be downloaded from the SparkFun_RTK_Everywhere_Firmware_Binaries GitHub repository.
  4. Open the program and connect to the FPL-T. Select Channel B of the CH342, in the COM Port menu.

    Connecting to the device

    Selecting the serial port for the ESP32

    tip

    The baud rate can be left at the default setting.

  5. Click on the Browse button to select the firmware binary file you'd like to install.
  6. Click the Upload Firmware button to reprogram the ESP32
info

To restore the firmware to the factory default settings, select the Erase Flash option from the Extras drop-down menu. This will completely erase the flash memory, including the LittleFS file system.

Erase flash memory

Selecting the Erase Flash option

Updating the Subsystems​

Before users can update the GNSS receiver or LoRa module of the FPL-T, users will need to reconfigure the UART connection to those subsystems. This can only be changed with the SparkPNT FPL-T's serial interface's configuration menu.

note

The mosaic-X5 GNSS receiver doesn't require the UART connection; users can upload the firmware directly through its web server, using the USB interface.

Update Mode Configuration​

To reconfigure the UART connection for the GNSS receiver or LoRa module, users will need to access the serial interface of the SparkPNT FPL-T with a terminal emulator.

  1. Connect the SparkPNT FPL-T to a computer with a USB cable.

    USB connector

    Users can access the USB-C port under the rubber cover on the bottom of the FPL-T

    When connecting to the USB interface of the SparkPNT FPL-T to a computer, the device should automatically be detected as two COM ports. If the ports are not detected then users will need to install a USB driver to access the data or configure any settings.

    USB Driver

    The USB drivers for the CH342 USB-to-Serial converter can be downloaded below:

  2. Install your preferred terminal emulator.
  3. Connect to the FPL-T with your preferred terminal emulator. Select Channel B of the CH342 and use a baud rate of 115200bps. When connected properly, users should see the unit's status messages.
    Example - Status Messages
    Messages - Device Status
    STATE_ROVER_NOT_STARTED --> STATE_ROVER_CONFIG_WAIT
    Batt (89%): Voltage: 8.05V Discharging: 7.53%/hr
    Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
    Rover configured
    STATE_ROVER_CONFIG_WAIT --> STATE_ROVER_NO_FIX
    LoRa radio configured for receiving
    Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
    Batt (89%): Voltage: 8.05V Discharging: 7.37%/hr
    Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
    Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
    Batt (89%): Voltage: 8.05V Discharging: 7.27%/hr
    Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
    Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
  4. Access the serial configuration's Main menu by sending any character through the terminal emulator. The screen of the FPL-T, should display Serial Config.

    OLED Display

    Serial Config displayed on the screen of the FPL-T

    tip

    If the GNSS output is enabled, users need to send the +++ character combination to enter the Serial Configuration menu.

  5. From the Main menu, send the s character to select the Configure System option and enter the System Configuration menu.
    Example - Main Menu Options
    Menu: Main
    1) Configure GNSS Receiver
    2) Configure GNSS Messages
    3) Configure Base
    4) Configure Ports
    5) Configure Logging
    6) Configure WiFi
    7) Configure TCP/UDP
    f) Firmware Update
    i) Configure Corrections Priorities
    p) Configure PointPerfect
    r) Configure Radios
    s) Configure System
    u) Configure User Profiles
    +) Enter Command line mode
    x) Exit
  6. From the System Configuration menu, send the h character to select the Debug hardware option and enter the Hardware Debug menu.
    Example - System Configuration Menu Options
    Menu: System
    ----- Mode Switch -----
    Mode: Rover
    A) Switch to Base mode using Base Assist
    B) Switch to Base mode
    C) Switch to Base Caster mode
    R) Switch to Rover mode
    W) Switch to Web Config mode
    S) Shut down
    ----- Settings -----
    a) Automatic device reboot in minutes: Disabled
    b) Set Bluetooth Mode: Dual
    c) Shutdown if not charging: Disabled
    d) Debug software
    e) Echo User Input: On
    g) Enable Beeper: Enabled
    h) Debug hardware
    l) Debug LFS and SD card files
    n) Debug network
    o) Configure operation
    p) Configure periodic print messages
    r) Reset all settings to default
    u) Printed measurement units: meters
    z) Set time zone offset: 00:00:00
    ~) Setup button: Enabled
    x) Exit
  7. Send the characters for the associated subsystem options:
    • LoRa Radio
      • Send 17 to select the STM32 direct connect for LoRa firmware upgrade option and enter the LoRa update mode.
      • This will switch Channel B of the CH342 to the UART interface to the STM32 LoRa module.
    • GNSS Receiver
      • Send 13 to select the GNSS direct connect for firmware update option and enter the GNSS update mode.
      • This will switch Channel A of the CH342 to the UART1 port of the GNSS Flex module, the primary UART interface for the GNSS receiver.
      warning

      This is not required for the mosaic-X5. The firmware can be uploaded through its web server on the USB interface.

    Example - Hardware Debug Menu Options
    Menu: Hardware Debug
    1) Print battery status messages: Enabled
    3) Print RTC resyncs: Disabled
    4) Print log file messages: Disabled
    5) Print log file status: Enabled
    7) Print SD and UART buffer sizes: Disabled
    9) Print GNSS Debugging: Disabled
    10) Print Correction Debugging: Disabled
    11) Print Tilt/IMU Debugging: Disabled
    12) Print Tilt/IMU Compensation Debugging: Disabled
    13) GNSS direct connect for firmware update
    14) PSRAM (online): Enabled
    15) Print ESP-NOW Debugging: Disabled
    16) Print LoRa Debugging: Disabled
    17) STM32 direct connect for LoRa firmware upgrade
    18) Display littleFS stats
    19) Print CLI Debugging: Disabled
    20) Delay between CLI LIST prints over BLE: 50ms
    21) Double-Tap Interval: 250ms
    22) Print GNSS Config Debugging: Disabled
    23) Reset GNSS Config
    24) EA Protocol name: com.sparkfun.rtk
    25) RTCM buffer debugging: Disabled
    26) STM32 direct connect for LoRa RX testing
    27) STM32 dedicated LoRa TX testing
    e) Erase LittleFS
    r) Force system reset
    x) Exit
  8. The FPL-T will restart and enter the update mode for the chosen subsystem. Proceed to the instructions, in the following sections, to update the firmware for the associated subsystem.
    Example - LoRa Update Mode
    Response Messages - LoRa Passthrough
    STM32 passthrough mode has been recorded to LittleFS. Device will now reset.
    ets Jul 29 2019 12:21:46

    Before restarting, users should see the message above confirming the selected option.

    OLED Display

    LoRa update message on the screen of the FPL-T

    Once the FPL-T restarts, the display will show the message above and provide the following instructions in the terminal:

    Response Messages - Update Instructions
    Entering STM32 direct connect for firmware update
    Disconnect this terminal connection
    Use 'STM32CubeProgrammer' to update the firmware:
    Baudrate: 57600bps. Parity: None. RTS/DTR: High
    Press the power button to return to normal operation
    Example - GNSS Update Mode
    Response Messages - GNSS Passthrough
    GNSS passthrough mode has been recorded to LittleFS. Device will now reset.
    ets Jul 29 2019 12:21:46

    Before restarting, users should see the message above confirming the selected option.

    OLED Display

    GNSS update message displayed on the screen of the FPL-T

    Once the FPL-T restarts, the display will show the message above and provide the following instructions in the terminal:

    Response Messages - Update Instructions for LG290P
    Entering GNSS direct connect for firmware update and configuration
    Use the GNSS manufacturer software to update the firmware via CH342 Channel A
    With QGNSS:
    Open Tools / Firmware Update
    Select the .pkg firmware file
    On the top tool bar, click "Reboot" (blue circle-back icon)
    Then click the green arrow to start the Firmware Update
    Hit R to reset the GNSS manually if needed - after starting the Update
    Initial baudrate: 460800bps
    Press the power button or hit any key (except R) to return to normal operation
    Response Messages - Update Instructions for ZED-X20P
    Entering GNSS direct connect for firmware update and configuration
    Use the GNSS manufacturer software to update the firmware via CH342 Channel A
    Hit R to reset the GNSS manually if needed
    Initial baudrate: 230400bps
    Press the power button or hit any key (except R) to return to normal operation
    Response Messages - Disconnect
    Exiting GNSS direct connect
    Restarting...
    warning

    Please, keep this terminal open for the GNSS update proccess. It will be required to restart the GNSS receiver.

  9. Press the () power button to exit from the update mode and restart the FPL-T .
    Example - Startup Messages
    Messages - Startup Sequence
    Jul 29 2019 12:21:46

    rst:0xc (SW_CPU_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
    configsip: 153911750, SPIWP:0xee
    clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
    mode:DIO, clock div:1
    load:0x3fff0030,len:4832
    load:0x40078000,len:16460
    load:0x40080400,len:4
    load:0x40080404,len:3504
    entry 0x400805cc
    E (1219) esp_cor��fVW
    }���͡� No core dump partition found!
    E (1219) esp_core_dump_flash: No core dump partition found!


    28:56:2F:AC:9E:DC - wifiMACAddress
    28:56:2F:AC:9E:DE - btMACAddress
    28:56:2F:AC:9E:DF - ethernetMACAddress
    =======================
    Board ADC ID (mV): 2233
    =======================
    LittleFS Started
    Using profile #0
    PSRAM Size (bytes): 2097152
    I2C Devices:
    0x0B - BQ40Z50 Battery Pack Manager / Fuel gauge
    0x10 - Authentication Coprocessor
    0x21 - PCA9554 GPIO Expander with Interrupt (Facet FP)
    0x3C - SSD1306 OLED Driver (Facet FP)
    GPIO Expander for switches configuration complete
    Display started
    ================
    SparkPNT FP <Firmware Version>
    ================
    Profile 'Profile1' loaded
    GNSS <GNSS Receiver Model> online
    <GNSS Receiver Model> version: <Firmware Version> 2025/12/12 11:21:01
    Fuel gauge configuration complete
    No GNSS date/time available for system RTC.
    Authentication coprocessor online
    Bluetooth SPP and BLE broadcasting as: SparkPNT <FP Model>-<Serial Number>
    STATE_ROVER_NOT_STARTED --> STATE_ROVER_CONFIG_WAIT
    Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
    Rover configured
    STATE_ROVER_CONFIG_WAIT --> STATE_ROVER_NO_FIX
    Batt (89%): Voltage: 8.06V Discharging: 6.97%/hr
    LoRa radio configured for receiving
    Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
    Batt (89%): Voltage: 8.06V Discharging: 6.99%/hr
    Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
    Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
    Batt (89%): Voltage: 8.06V Discharging: 6.99%/hr
    Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix

Update the LoRa Radio​

To update the firmware for the STM32 LoRa module, users will need to install the STM32CubeProgrammer, download the LoRa firmware file, and reconfigure the FPL-T into the LoRa update mode.

  1. The device should be operating in the LoRa update mode at 57600bps, and ready to be programmed.
    note

    Don't forget to close/disconnect the terminal used to configure the LoRa update mode. That UART port is used to program to the STM32 LoRa module.

  2. Download the latest STM32 LoRa binary file from the SparkFun_RTK_Everywhere_Firmware_Binaries GitHub repository.
  3. Download and install STM32CubeProgrammer.
    warning

    Users will need to create an account to download the software from the STMicroelectronics website.

  4. Open STM32CubeProgrammer.

    Settings in STM32CubeProgrammer

  5. Select UART from the drop-down menu (blue box) as the programming interface and select the Port associated with Channel B of the CH342. Then, configure the following UART settings: Baudrate to 57600, Parity to None, along with the RTS and DTR to High.

    Settings in STM32CubeProgrammer

    Option - Read Unprotected

    Do not enable the Read Unprotected option. This setting writes to fuse bits and if there is a problem with serial communication, it can lead to an inoperable bootloader. The device can be repaired, but only at SparkPNT (we have to use an ST-Link to reprogram the fuse bits over the SWD interface).

    Don&#39;t select Read Unprotected

  6. Click the Connect button.
  7. Once connected, select the Erasing & Programming menu from the left side-bar.

    Connected to STM32

  8. Click the Browse button to select the downloaded binary file. Then, click the Start Programming button to upload the firmware to the STM32 LoRa module.

    Programming button in STM32CubeProgrammer

  9. After a few seconds, programming will complete and a dialog message will pop up.

    Programming complete confirmation

  10. Click the Disconnect button to close the COM port connection.

    Disconnect button

  11. Press and release the () power button to exit the LoRa update mode and restart the device.

Update the LG290P Firmware​

To update the LG290P GNSS receiver, users will need to install the QGNSS v2.x software, download the GNSS firmware file, and reconfigure the FPL-T into the GNSS update mode.

  1. The device should be operating in the GNSS update mode at 460800bps, and ready to be programmed.
  2. Download the latest LG290P firmware file from the SparkFun_RTK_Everywhere_Firmware_Binaries GitHub repository.
  3. Download and install QGNSS v2.x. QGNSS is the software created by Quectel to configure and view output from their GNSS modules.
  4. Open QGNSS and connect to your device by, selecting LG290P(03) from the drop-down menu for Model. Then, select Channel A of the CH342, set the baud rate to 460800, and press OK to connect to the FPL-T.

    Select the COM port and baud rate

    Select the model, COM port, and baud rate

    tip

    If the baud rate doesn't work, users may need to reconfigure the baud rate of the LG290P to the default settings.

  5. To upload firmware to the LG290P, navigate from the Tools drop-down menu and select the Firmware Update option (Tools > Firmware Update).

    Open the Firmware Download window

    Open the Firmware Update tool

  6. Select the firmware file to upload, by clicking on the button. (This should be the *.pkg file that was downloaded in Step 2.)

    Select the firmware file

    Select the firmware file

  7. Press the start arrow in the Firmware Update window.

    Starting the Firmware Update Process

    Start the Firmware Update Process

  8. Before the firmware can be uploaded, the LG290P must be reset to synchronize the module with the firmware upload process. To reset the LG290P, send the r character in the terminal emulator used to configure the GNSS update mode.
  9. The update process takes a little over a minute. Once completed, close QGNSS.
  10. Press and release the () power button to exit the GNSS update mode and restart the device.