SparkFun RTK Surveyor Hookup Guide

Contributors: Nate, Ell C
Favorited Favorite 8

System Configuration

The RTK Surveyor can be used with little or no configuration. The following information is for advanced setups including advanced survey-in scenarios and post processing RAWX data.

SparkFun RTK Surveyor Settings File

SparkFun RTK Surveyor Settings File

Note: All system configuration can also be done by editing the SFE_Surveyor_Settings.txt file (shown above) that is created when a microSD card is installed. The settings are clear text but it is safer and more straightforward to use the serial terminal interface.

Main Menu

To configure the RTK Surveyor attach a USB C cable to the Configure ESP32 connector. Open a terminal window at 115200bps; you should see various status messages every second. Press any key to open the configuration menu. Not sure how to use a terminal? Checkout our Serial Terminal Basics tutorial.

Terminal showing menu

Terminal showing menu

Pressing any button will display the Main menu. The Main menu will display the Bluetooth broadcast name. This can be helpful when multiple RTK Surveyors are in the vicinity and it’s not clear which device to connect to. Note: When powered on, the RTK Surveyor will broadcast itself as either Surveyor Rover-XXXX or Surveyor Base-XXXX depending on the position of the SETUP switch.

The menus will timeout after 15 seconds of inactivity, so if you do not press a key the RTK Surveyor will return to reporting status messages after 15 seconds.

Configure GNSS Receiver

Pressing 1 will bring up the GNSS Receiver configuration menu. The ZED-F9P is immensely configurable. The RTK Surveyor will, by default, put the ZED-F9P into the most common configuration for rover/base RTK for use with SW Maps. The GNSS Receiver menu allows a user to enable/disable various sentences and options for the ZED-F9P:

Turning off NMEA sentences

Controlling various NMEA sentences and options

Measurement Frequency

By default, the RTK Surveyor outputs a solution or location 'fix' 4 times a second. This can be increased but anything above 4Hz is not guaranteed to be stable. The Bluetooth buffer can quickly become overwhelmed and/or if datalogging is enabled the system can become bogged down with SD write delays. Decreasing to 1Hz is completely acceptable and will reduce the log sizes significantly.

Note: When in base mode, measurement frequency is set to 1Hz. This is because RTK transmission does not benefit from faster updates, nor does logging of RAWX for PPP.


From this menu you can control the output of various NMEA sentences. Disabling these sentences will reduce the size of the log but will also reduce the data being sent to any Bluetooth attached device.


RAWX sentences are needed for post processing and PPP or Precise Point Positioning. This is disabled by default. When enabling RAWX you will also probably want to enable logging to an SD card.


Satellite-based Augmentation System or SBAS is disabled by default. This is because there is a bug in u-blox's v1.13 firmware for the ZED-F9P that causes the RTK status LED to stop functioning when SBAS is enabled. We have found no major difference in lock times or accuracy with SBAS turned off but SBAS can be enabled if desired. Enabling SBAS will cause the RTK LED to no longer illuminate, regardless of the RTK fix.

Configure Data Logging Menu

RTK Surveyor Data Logging Configuration Menu

RTK Surveyor Data Logging Configuration Menu

Pressing 2 will enter the Data Logging Menu. This menu will report the status of the microSD card. While you can enable logging, you cannot begin logging until a microSD card is inserted. Any FAT16 or FAT32 formatted microSD card up to 32GB will work. We regularly use the SparkX brand 1GB cards but note that these log files can get very large (>500MB) so plan accordingly.

  • Option 1 will enable/disable logging. If logging is enabled, NMEA data from the ZED-F9P will be recorded to microSD. A log file is created at power on with the format SFE_RTK_Surveyor_YYMMDD_HHMMSS.txt based on current GPS data/time.
  • Option 2 controls how often the ‘Last Modified’ and ‘Last Accessed’ timestamps of the log file get updated. Because this causes a full SD file sync with every output from the ZED-F9P, we recommend leaving this disabled to prevent serial data from possibly being not sent to the BT SPP send buffer.
  • Option 3 allows a user to set the max logging time. This is convenient to determine the location of a fixed antenna or a receiver on a repeatable landmark. Set the RTK Surveyor to log RAWX data for 10 hours, convert to RINEX, run through an observation processing station and you’ll get the corrected position with <10mm accuracy. Please see the How to Build a DIY GNSS Reference Station tutorial for more information.

Note: If you are wanting to log RAWX sentences to create RINEX files useful for post processing the position of the receiver please see the GNSS Configuration Menu. For more information on how to use a RAWX GNSS log to get higher accuracy base location please see the How to Build a DIY GNSS Reference Station tutorial.

Configure Base Menu

Select the type of base setup

Select the type of base setup

By default, the RTK Surveyor will enter 'Survey-In' mode when a user sets the SETUP switch to Base. The unit will monitor all constellations until both the observation time and required mean 3D standard deviation is met. u-blox recommends 60s and 5m but these are configurable. Please know that setting very long observation times (people have tried 24 hours) and very small means (1m or less) really doesn't get you much. Survey-in is limited in it's precision. It's quick (1 minute!) but it's much less precise than a PPP setup.

Setting base mode to static position

Base mode set to static position

Pressing 1 will change the base mode to Fixed/Static Position. A user is then able to enter the known position of the antenna in either ECEF or Geographic coordinates. Whenever a user switches the SETUP switch to Base the GNSS receiver will immediately go into base mode with these coordinates and nearly immediately begin outputting RTCM correction data.

NTRIP Server

Settings for the NTRIP Server

Setting for the NTRIP Server

This is a new and powerful feature of the RTK Surveyor. The RTK Surveyor can be configured to transmit its RTCM directly over WiFi to the user's mountpoint. This eliminates the need for a radio link or a cell phone link.

Once the NTRIP server is enabled you will need a handful of credentials:

  • Local WiFi SSID and password
  • A casting service such as RTK2Go or Emlid (the port is almost always 2101)
  • A mount point and password
  • The ECEF or Geographic coordinates for your fixed or semi-fixed antenna

NTRIP Server Connected

NTRIP Server Connected!

With these credentials set, RTK Surveyor will attempt to connect to WiFi, your caster of choice, and begin transmitting the RTCM data over WiFi. We tried to make it as easy as possible.

Transmitting to mount point

Every second a few hundred bytes, up to ~2k, will be transmitted to your mount point.

Configure Ports Menu

Baud rate configuration of Radio and Data ports

Baud rate configuration of Radio and Data ports

By default the Radio port is set to 57600bps to match the Serial Telemetry Radios that are recommended to be used with the RTK Surveyor (it is a plug and play solution). This can be set from 4800bps to 921600bps.

By default the Data port is set to 115200bps and can be configured from 4800bps to 921600bps. Note: The Data port does not output NMEA by default. The unit must be opened and the Serial NMEA Connection switch must be moved to 'Ext Connector'. See Hardware Overview - Advanced Features for the location of the switch.

Configuring ZED-F9P with u-center

Note: Because the ESP32 does considerable configuration of the ZED-F9P at power on it is not recommended to modify the settings of the ZED-F9P. Nothing will break but your changes may be overwritten.

The ZED-F9P module can be configured independently using the u-center software from u-blox by connecting a USB cable to the *Config u-blox’ USB C connector. Settings can be saved to the module between power cycles. For more information please see SparkFun’s Getting Started with u-center by u-blox.