SparkFun RTK Surveyor Hookup Guide

Contributors: Nate, Ell C
Favorited Favorite 8


The RTK Surveyor from SparkFun is your one stop shop for high precision geolocation and surveying needs. For basic users, it’s incredibly easy to get up and running and for advanced users, the RTK Surveyor is a flexible and powerful tool.

SparkFun RTK Surveyor

SparkFun RTK Surveyor


With just a few minutes of setup, the RTK Surveyor is one of the fastest ways to take centimeter grade measurements.

RTK Fix in SW Maps

An RTK Fix in SW Maps

By connecting your phone to the RTK Surveyor over Bluetooth, your phone can act as the radio link to provide correction data as well as receive the NMEA output from the device. It’s how $10,000 surveying devices have been operating for the past decade - we just made it easier, smaller, and a lot cheaper.

Required Materials

While the RTK Surveyor is nicely enclosed you will need a few cables and antennas to make everything work. We'll go into the specifics of how to hook things together but in general you will need to get a good quality L1/L2 antenna:

GNSS Multi-Band L1/L2 Surveying Antenna (TNC) - TOP106

GNSS Multi-Band L1/L2 Surveying Antenna (TNC) - TOP106

Interface Cable - SMA Male to TNC Male (300mm)

Interface Cable - SMA Male to TNC Male (300mm)

1/4" to 5/8" Antenna Thread Adapter

1/4" to 5/8" Antenna Thread Adapter


Depending on your setup you may want to use your phone for RTCM correction data. If a source is not available online, you will need a 2nd RTK Surveyor setup in base mode and a radio link connecting the Base to the Rover. Again, we'll go into details but we designed RTK Surveyor to work with these 500mW 915MHz telemetry radios out of the box:

Serial Telemetry Radio Kit - 915MHz, 500mW


To charge the RTK Surveyor you will need a USB C cable and a power supply. SparkFun carries a few options:

USB 2.0 Type-C Cable - 1 Meter

USB 2.0 Type-C Cable - 1 Meter

Reversible USB A to C Cable - 0.8m

Reversible USB A to C Cable - 0.8m

USB Wall Charger - 5V, 2A

USB Wall Charger - 5V, 2A

USB-C Wall Adapter - 5.1V, 3A (Black)

USB-C Wall Adapter - 5.1V, 3A (Black)


Suggested Reading

GNSS RTK is an incredible feat of engineering that has been made easy to use by powerful GNSS receivers such as the ZED-F9P by u-blox (the receiver inside RTK Surveyor). The process of setting up an RTK system will be covered in this tutorial but if you want to know more about RTK here are some good tutorials to brush up on:

What is GPS RTK?

Learn about the latest generation of GPS and GNSS receivers to get 14mm positional accuracy!

Getting Started with U-Center for u-blox

Learn the tips and tricks to use the u-blox software tool to configure your GPS receiver.

GPS-RTK2 Hookup Guide

Get precision down to the diameter of a dime with the new ZED-F9P from u-blox.

Setting up a Rover Base RTK System

Getting GNSS RTCM correction data from a base to a rover is easy with a serial telemetry radio! We'll show you how to get your high precision RTK GNSS system setup and running.

How to Build a DIY GNSS Reference Station

Learn how to affix a GNSS antenna, use PPP to get its ECEF coordinates and then broadcast your own RTCM data over the internet and cellular using NTRIP to increase rover reception to 10km!

Hardware Overview

The RTK Surveyor is a fully enclosed, preprogrammed device. There are very few things to worry about or configure but we will cover the basics.


RTK Surveyor Switches


This device can be used in three modes:

  • GNSS Positioning (~30cm accuracy)
  • GNSS Positioning with RTK (1.4cm accuracy)
  • GNSS Base Station

When the SETUP switch is set to Rover the device will enter Position mode. RTK Surveyor will receive L1 and L2 GNSS signals from the four constellations (GPS, GLONASS, Galileo, and BeiDou) and calculate the position based on these signals. Similar to a standard grade GPS receiver, the RTK Surveyor will output industry standard NMEA sentences at 4Hz and broadcast them over any paired Bluetooth device at 115200bps. The end user will need to parse the NMEA sentences using commonly available mobile apps, GIS products, or embedded devices (there are many open source libraries). Unlike standard grade GPS receivers that have 2500m accuracy, the accuracy in this mode is approximately 300mm horizontal positional accuracy with a good grade L1/L2 antenna.

When the SETUP switch is set to Rover and RTCM correction data is sent into the radio port or over Bluetooth, the device will automatically enter Positioning with RTK mode. In this mode RTK Surveyor will receive L1/L2 signals from the antenna and correction data from a base station. The receiver will quickly (within a few seconds) obtain RTK float, then fix. The NMEA sentences will have increased accuracy of 14mm horizontal and 10mm vertical accuracy. The RTCM correction data can be obtained from a cellular link to online correction sources or over a radio link to a 2nd RTK Surveyor setup as a base station.

When the SETUP switch is set to Base the device will enter Base Station mode. This is used when the device is mounted to a fixed position (like a tripod or roof). The RTK Surveyor will initiate a survey. After 60 to 120 seconds the survey will complete and the RTK Surveyor will begin transmitting RTCM correction data out the radio port. A base is often used in conjunction with a second unit set to 'Rover' to obtain the 14mm accuracy. Said differently, if you’ve got a radio attached to the base and the rover, you’ll create an RTK system without any other setup and the Rover will output super accurate readings.


The Power switch is self explanatory. When turned on the LED will turn Green, Yellow, or Red indicating battery level. The RTK Surveyor has a built-in 1000mAh lithium polymer battery that will enable up to 4 hours of field use between charging. If more time is needed a common USB power bank can be attached boosting the field time to 40 hours.


RTK Surveyor LEDs

There are a variety of LEDs:

  • Power - Blue when attached to power and charging / off when fully charged. Green/Yellow/Red when the Power switch is turned on indicating the state of charge of the internal battery.
  • RTK - This white LED will be off when no RTCM correction data is received. Blinking indicates RTK Float is achieved. Solid when RTK Fix is achieved.
  • PPS - Pulse per second. This yellow LED will blink at 1Hz when GNSS fix is achieved. You’ll see this LED begin blinking anytime the receiver detects enough satellites to obtain a rough location.
  • PAIR - Blinks blue when waiting to be paired with over Bluetooth. Solid when a connection is active.
  • Horizontal Accuracy 100cm/10cm/1cm - These green LEDs illuminate as the horizontal positional accuracy increases. 100cm will often be achieved in normal positioning mode with a good L1/L2 antenna. 10cm will often be achieved as the first few seconds of RTCM correction data is received, and 1cm will be achieved when a full RTK fix is calculated.
  • BASE - This LED will blink red when the SETUP switch is set to Base and a survey is being conducted. It will turn solid red once the survey is complete and the unit begins broadcasting RTCM correction data.


RTK Surveyor Connectors and label

The SparkFun RTK Surveyor has a variety of connectors


This SMA connector is used to connect an L1/L2 type GNSS antenna to the RTK Surveyor. Please realize that a standard GPS antenna does not receive the L2 band signals and will greatly impede the performance of the RTK Surveyor (RTK fixes are nearly impossible). Be sure to use a proper L1/L2 antenna.

RTK Surveyor SMA connector

Configure u-blox:

This USB C connector is used for charging the device and/or directly configuring and inspecting the ZED-F9P GNSS receiver using u-center. It’s not necessary in normal operation but is handy for tailoring the receiver to specific applications. As an added perk, the ZED-F9P can be detected automatically by some mobile phones and tablets. If desired, the receiver can be directly connected to a compatible phone or tablet removing the need for a Bluetooth connection.

RTK Surveyor u-blox connector

USB Configure ESP32:

This USB C connector is used for charging the device, configuring the device, and reprogramming the ESP32. Various debug messages are printed to this port at 115200bps and a serial menu can be opened to configure advanced settings.

RTK Surveyor ESP32 connector


This 4-pin JST connector is used to allow RTCM correction data to flow into the device when it is acting as a rover or out of the device when it is acting as a base. You will most likely connect this port to one of our Serial Telemetry Radios if you don’t have access to a correction source on the internet. The pinout is 3.5-5.5V / TX / RX / GND. The connector is a 4-pin locking 1.25mm JST SMD connector (part#: SM04B-GHS-TB, mating connector part#: GHR-04V-S). 3.5V to 5.5V is provided by this connector to power a radio with a voltage that depends on the power source. If USB is connected to the RTK Surveyor then voltage on this port will be 5V (+/-10%). If running off of the internal battery then voltage on this port will vary with the battery voltage (3.5V to 4.2V depending on the state of charge). While the port is capable of sourcing up to 2 amps, we do not recommend more than 500mA. This port should not be connected to a power source.

RTK Surveyor Radio connector


This 4-pin JST connector is used to output NMEA sentences over 115200bps serial. Most applications will send the NMEA position data over Bluetooth. Alternatively, this port can be useful for sending position data to an embedded microcontroller or single board computer. The pinout is 3.3V / TX / RX / GND. The connector is a 4-pin locking 1.25mm JST SMD connector (part#: SM04B-GHS-TB, mating connector part#: GHR-04V-S). 3.3V is provided by this connector to power a remote device if needed. While the port is capable of sourcing up to 600mA, we do not recommend more than 300mA. This port should not be connected to a power source.

RTK Surveyor Data connector


This slot accepts standard microSD cards up to 32GB formatted for FAT16 or FAT32. Logging NMEA and RAWX data at up to 4Hz is supported for all constellations.

RTK Surveyor microSD connector


This 4-pin Qwiic connector exposes the I2C bus of the ESP32 WROOM module. Currently, there is no firmware support for adding I2C devices to the RTK Surveyor but support may be added in the future.

RTK Surveyor Qwiic connector


The RTK Surveyor has a built in 1000mAh battery and consumes approximately 240mA worst case with Bluetooth connection active, GNSS fully tracking, and a 500mW radio broadcasting. This will allow for 4 hours of use in the field. If more time is needed in the field a standard USB power bank can be attached. If a 10,000mAh bank is attached one can estimate 30 hours of run time assuming 25% is lost to efficiencies of the power bank and charge circuit within RTK Surveyor.

The RTK Surveyor can be charged from any USB port or adapter. The charge circuit is rated for 1000mA so USB 2.0 ports will charge at 500mA and USB 3.0+ ports will charge at 1A.

To quickly view the state of charge, turn on the unit. A green LED indicates > 50% charge remaining. A yellow LED indicates > 10% charge remaining. A red LED indicates less than 10% charge remaining.

Hardware Overview - Advanced Features

The RTK Surveyor is a hacker’s delight. Under the hood of the RTK Surveyor is an ESP32 WROOM connected to a ZED-F9P as well as some peripheral hardware (LiPo fuel gauge, microSD, etc). It is programmed in Arduino and can be tailored by the end user to fit their needs.

RTK Survayor Schematic

Click on the image to get a closer look at the Schematic!

ZED-F9P GNSS Receiver

The ZED-F9P GNSS receiver is configured over I2C and uses two UARTs to output NMEA (UART1) and input/output RTCM (UART2).

ZED-F9P GNSS Receiver

Two internal slide switches control the flow of NMEA and RTCM traffic between the external connectors and the internal BT UART used on the ESP32. Ostensibly the Bluetooth Broadcast switch can be set to pipe RTCM data to the ESP32’s UART (instead of NMEA) so that correction data can be transmitted over Bluetooth. Point to point Bluetooth radio support is not supported because the useful range of Bluetooth is too short for most RTK applications but may be helpful in some advanced applications.

Communication switches


The ESP32 uses a standard USB to serial conversion IC (CH340) to program the device. You can use the ESP32 core for Arduino or Espressif’s IoT Development Framework (IDF).

The CH340 automatically resets and puts the ESP32 into bootload mode as needed. However, the reset pin of the ESP32 is brought out to an external 2-pin 0.1” footprint if an external reset button is needed.

ESP32 on SparkFun RTK Surveyor

Measurement Jumpers

To facilitate the measurement of run, charge, and quiescent currents, two measurement jumpers are included. These are normally closed jumpers combined with a 2-pin 0.1” footprint. To take a measurement, cut the jumper and install a 2-pin header and use banana to IC hook cables to a DMM.

Measurement Jumpers on SparkFun RTK Surveyor

LiPo and Charging

The RTK Surveyor houses a standard 1000mAh 3.7V LiPo. The charge circuit is set to 1A so with an appropriate power source, charging an empty battery should take roughly one hour. USB C on the RTK Surveyor is configured for 2A draw so if the user attaches to a USB 3.0 port, the charge circuit should operate near the 1A max. If a user attaches to a USB 2.0 port, the charge circuit will operate at 500mA.

LiPo and Charging on SparkFun RTK Surveyor

MAX17048 Fuel Gauge

The MAX17048 is a simple to use fuel gauge IC that gives the user a statement of charge (SOC) that is basically a 0 to 100% report. The MAX17048 has a sophisticated algorithm to figure out what the SOC is based on cell voltage that is beyond the scope of this tutorial but for our purposes, allows us to control the color of the power LED.

MAX17048 Fuel Gauge on SparkFun RTK Surveyor


A Qwiic connector is exposed on the end of the unit. This allows connection to the I2C bus on the ESP32. Currently the stock RTK Surveyor does not support any additional Qwiic sensors or display but users may add support for their own application.

Qwiic Connector on SparkFun RTK Surveyor


A microSD socket is situated on the ESP32 SPI bus. Any microSD up to 32GB is supported. RTK Surveyor supports RAWX and NMEA logging to the SD card. Max logging time can also be set (default is 10 hours) to avoid multi-gigabyte text files. For more information about RAWX and doing PPP please see this tutorial.

microSD socket on SparkFun RTK Surveyor

Hardware Assembly

The RTK Surveyor was designed to work with low-cost, off the shelf equipment. Here we’ll describe how to assemble a Rover and Base.


Shown here is the most common RTK Rover setup. A monopole designed for cameras is used. A cell phone holder is clamped to the monopod and the RTK Surveyor is mounted. The ¼” camera thread of the monopole is adapted to ⅝” 11-TPI and a L1/L2 antenna is attached. A Male TNC to Male SMA cable connects the antenna to the RTK Surveyor. No radio is needed because RTCM correction data is provided by a phone over Bluetooth.

Basic RTK Surveyor setup

Basic RTK Surveyor Rover setup with RTCM over Bluetooth

We have done lots of testing with the u-blox L1/L2 antenna and it's very good for the price and size. Mounted to a ground plate you will get good results. It's just a bit ungainly when mounted to the top of a monopole. We recommend the 'ufo' style L1/L2 antennas because they have a larger antenna element and a slightly larger ground plane than the u-blox antenna.

u-blox L1/L2 antenna with ground plate

u-blox L1/L2 antenna with ground plate

If you’re shopping for a monopole (aka monopod), get one that is 65” in length or greater to ensure that the antenna will be above your head. We’ve had good luck with the Amazon Basics brand.

Monopole with antenna above head height

We strongly recommend against using a rigid helical antenna configuration as shown below. The RTK Surveyor is not designed for such configurations and can lead to permanent damage to the antenna connector. The helical antenna becomes a large lever arm. If the unit is dropped this lever is capable of damaging both the SMA connector and where the connector is soldered to the PCB.

RTK Surveyor with dangerous helical antenna configuration

Dangerous Antenna Configuration

If you’re shopping for a cell phone clamp be sure to get one that is compatible with the diameter of your monopole and has a knob to increase clamp pressure. Our monopole is 27mm in diameter and we’ve had a good experience with this clamp and this clamp. Your mileage may vary.

RTK Surveyor mounted in clamp

If you are receiving RTCM correction data over a radio link it’s recommended that you attach a radio to the back of the RTK Surveyor.

RTK Surveyor Rover setup with radio

2nd most common setup with a 915MHz Radio providing RTCM

Picture hanging strips from 3M make a nice semi-permanent mount. Plug the 4-pin to 6-pin JST cable included with the RTK Surveyor from the Radio port to either of the Serial Telemetry Radios (shipped in pairs). We really love these radios because they are paired out of the box, either can send or receive (so it doesn't matter which radio is attached to base or rover) and they have remarkable range. We achieved over a mile range (nearly 1.5 miles or 2.4km) with the 500mW radios and a big 915MHz antenna on the base (see this tutorial for more info).

Serial Telemetry Radio mounted to the back of RTK Surveyor

Temporary Base

A temporary or mobile base setup is needed when you are in the field too far away from a correction source and/or cellular reception. A 2nd RTK Surveyor is mounted to a tripod and it is configured to complete a survey-in (aka, locate itself), then begin broadcasting RTCM correction data. This data (~1000 bytes a second) is sent to the user's connected radio of choice. For our purposes, the 915MHz 500mW telemetry radios are used because they provide what is basically a serial cable between our base and rover.

RTK Surveyor Base setup

Temporary RTK Surveyor Base setup

Any tripod with a ¼” camera thread will work. The Amazon Basics tripod works well enough but is a bit light weight and rickety. A cell phone holder is clamped to the tripod and the RTK Surveyor is held in the clamp. The ¼” camera thread is adapted to ⅝” 11-TPI and a L1/L2 antenna is attached. A Male TNC to Male SMA adapter connects the antenna to the RTK Surveyor.

Once the base has been setup with a clear view of the sky, move the Setup switch to "Base" and turn the unit on. The red LED will blink for 60-120 seconds. Once the survey is complete the red LED will be constantly illuminated and RTCM data will begin to be broadcast. You can verify this by viewing the LEDs on the telemetry radio (a small red LED will blink when serial data is received from the RTK Surveyor). The RTK Surveyor is designed to follow the u-blox recommended survey-in of 60s and a mean 3D standard deviation of 5m of all fixes. If a survey fails to achieve these requirements it will auto-restart after 10 minutes.

More expensive surveyor bases have a ⅝” 11-TPI thread but the top of the surveyor base will often interfere with the antenna’s TNC connector. If you chose to use a surveyor’s ‘stick’ be sure to obtain a ⅝” extender plate to raise the antenna at least an inch.

If you’re shopping for a cell phone clamp be sure to get one that is compatible with the diameter of your tripod and has a knob to increase clamp pressure. Our tripod is 18mm in diameter and we’ve had a good experience with this clamp. Your mileage may vary.

Cell phone clamp on the side of a tripod with RTK Surveyor

Note: A mobile base station works well for quick trips to the field. However, the survey-in method is not recommended for the highest accuracy measurements because the positional accuracy of the base will directly translate to the accuracy of the rover. Said differently, if your base's calulcated position is off by 100cm, so will every reading your rover makes. If you’re looking for maximum accuracy consider installing a static base with fixed antenna. We were able to pinpoint the antenna on the top of SparkFun with an incredible accuracy +/-2mm of accuracy using PPP!

Bluetooth and NTRIP

The RTK Surveyor transmits full NMEA sentences over Bluetooth serial port profile (SPP) at 4Hz and 115200bps. This means that nearly any GIS application that can receive NMEA data over serial port (almost all do) can be used with the RTK Surveyor. As long as your device can open a serial port over Bluetooth (also known as SPP) your device can retrieve industry standard NMEA positional data. The following steps show how to use SW Maps but the same steps can be followed to connect any serial port based GIS application.

The best mobile app that we’ve found is the powerful, free, and easy to use SW Maps by Softwel. You’ll need an Android phone or tablet with Bluetooth. What makes SW Maps truly powerful is its built-in NTRIP client. This is a fancy way of saying that we’ll be showing you how to get RTCM correction data over the cellular network. If you’re using a serial radio for your correction data, you can skip this part.

SW Maps with RTK Fix

SW Maps with RTK Fix

When powered on, the RTK Surveyor will broadcast itself as either 'Surveyor Rover-BC41' or 'Surveyor Base-BC41' depending on the position of the SETUP switch. Discover and pair with this device from your phone or tablet. Once paired, open SW Maps.

Pairing with the RTK Surveyor over Bluetooth

Pairing with the RTK Surveyor over Bluetooth

From SW Map's main menu, select Bluetooth GNSS. This will display a list of available Bluetooth devices. Select the Rover or Base you just paired with. Select 'u-blox RTK' (rather than just 'u-blox') from the Instrument Model dropdown. This is important and will enable the use of NTRIP. If your are taking height measurements (altitude) in addition to position (lat/long) be sure to enter the height of your antenna off the ground including any ARP offsets of your antenna (should be printed on the side).

Click on 'CONNECT' to open a Bluetooth connection. Assuming this process takes a few seconds, you should immediately have a location fix.

List of BT Devices in SW Maps

List of available Bluetooth devices

Next we need to send RTCM correction data from the phone back to the RTK Surveyor so that it can improve its fix accuracy. This is the amazing power of RTK Surveyor and SW Maps. Your phone can be the radio link! From the main SW Maps menu select NTRIP Client. Not there? Be sure to select 'u-blox RTK' instrument when connecting. Disconnect and change the instrument choice to enable the NTRIP Connection option.

SW Maps NTRIP Connection menu

NTRIP Connection - Not there? Be sure to select 'u-blox RTK' instrument

Enter your NTRIP caster credentials and click connect. You will see bytes begin to transfer from your phone to the RTK Surveyor. Within a few seconds the RTK Surveyor will go from ~300mm accuracy to 14mm. Pretty nifty, no?

SW Maps NTRIP client

Connecting to an NTRIP caster

What's an NTRIP caster? In a nut shell it's a server that is sending out correction data every second. There are thousands of sites around the globe that calculate the perturbations in the ionosphere and troposphere that decrease the accuracy of GNSS accuracy. Once the inaccuracies are known, correction values are encoded into data packets in the RTCM format. You, the user, don't need to know how to decode or deal with RTCM, you simply need to get RTCM from a source within 10km of your location into the RTK Surveyor. The NTRIP client logs into the server (also known as the NTRIP caster) and grabs that data, every second, and sends it over Bluetooth to the RTK Surveyor.

Don't have access to an NTRIP caster? We have a tutorial for that! Checkout How to Build a DIY GNSS Reference Station. Remember, you can always use a 2nd RTK Surveyor in Base mode to provide RTCM correction data but it will less accurate than a fixed position caster.

Once you have a full RTK fix you'll notice the location bubble in SW Maps turns to green. Just for fun, rock your rover monopole back and forth on a fixed point. You'll see your location accurately reflected in SW Maps. Millimeter location precision is a truly staggering thing.

Output to an Embedded System

Many applications using the RTK Surveyor will use a 3rd party GIS application or mobile app like SW Maps and receive the data over Bluetooth. Alternatively, for embedded applications a user can obtain the NMEA data over serial directly.

For this example we will connect the output from the DATA port to a USB to Serial adapter so that we can view the serial data.

Connect the included 4-pin JST to breadboard cable to the DATA port. The cable has the following pinout:

  • Red - 3.3V
  • Green - TX (output from RTK Surveyor)
  • Orange - RX (input to RTK Surveyor)
  • Black - GND

Wires connected to a SparkFun USB C to Serial adapter

Click on the image for a closer view!

Open a terminal at 115200bps and you should see NMEA sentences:

NMEA output from the RTK Surveyor

The Data connector on the RTK Surveyor is a 4-pin locking 1.25mm JST SMD connector (part#: SM04B-GHS-TB, mating connector part#: GHR-04V-S). 3.3V is provided by this connector to power a remote device if needed. While the port is capable of sourcing up to 600mA, we do not recommend more than 300mA. This port should not be connected to a power source, so if your embedded device has its own power do not connect the red wire.

The parsing of NMEA sentences is straightforward and left to the reader. There are ample NMEA parsing libraries available in C++, Arduino, python, and many more languages.

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.

Firmware Updates and Customization

The RTK Surveyor is open source hardware meaning you have total access to the firmware and hardware. Be sure to checkout each repo for the latest firmware and hardware information. But for those who want to jump right in and tweak the firmware, we will discuss various methods.

Updating Firmware From the SD Card

From time to time SparkFun will release new firmware for the RTK Surveyor to add and improve functionality. For most users, firmware can be upgraded by loading the appropriate firmware file from the binaries repo folder onto the SD card and bringing up the firmware menu as shown below:

Firmware update menu

Firmware update taking place

The firmware upgrade menu will only display files that have the "RTK_Surveyor_*.bin" file name format so don't change the file names once loaded onto the SD card. Select the firmware you'd like to load and the system will proceed to load the new firmware, then reboot.

Note: You can check your firmware by opening the text menu by pressing a key at any time.

Note: The ability to update firmware via SD card was implemented in the v1.1 release. Previous v1.0 users will need to use the CLI upgrade path described below.

Updating Firmware From CLI

The command line interface is also available for more advanced users or users who want to avoid the hassle of swapping out SD cards. You’ll need to download esptool.exe and RTK_Surveyor_Firmware_vXXX_Combined.bin from the repo.

Connect a USB A to C cable from your computer to the ESP32 port on the RTK Surveyor. Now identify the com port the RTK Enumerated at. The easiest way to do this is to open the device manager:

CH340 is on COM6 as shown in Device Manager

CH340 is on COM6 as shown in Device Manager

If the COM port is not showing be sure the unit is turned On. If an unknown device is appearing, you’ll need to install drivers for the CH340. Once you know the COM port, open a command prompt (Windows button + r then type ‘cmd’).

Navigate to the directory that contains the firmware file and esptool.exe. Run the following command:

esptool.exe --chip esp32 --port COM6 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0 RTK_Surveyor_Firmware_v13_combined.bin

Note: You will need to modify COM6 to match the serial port that RTK Surveyor enumerates at.

Programming via the esptool CLI

Programming via the esptool CLI

Upon completion, your RTK Surveyor will have the latest and greatest features!

Creating Custom Firmware

The RTK Surveyor is an ESP32 and high-precision GNSS hackers’s delight. Writing custom firmware can be done using Arduino.

Selecting ESP32 Dev Module

Selecting ESP32 Dev Module

Please see the ESP32 Thing Plus Hookup Guide for information about getting Arduino setup. The only difference is that you will need to select ESP32 Dev Module as your board.

Arduino Library Links

Arduino Library Links

Pull the entire RTK Firmware repo and open /Firmware/RTK_Surveyor/RTK_Surveyor.ino and Arduino will open all the sub-files in new tabs. We’ve broken the functional pieces into smaller tabs to help users navigate it. There are a handful of libraries that will need to be installed. To make this easier, we’ve placed a link next to each library that will automatically open the Arduino Library Manager with that library ready for download.

After connecting a USB C cable to the ESP32 Config connector and selecting the correct COM port you should be able to upload new firmware through the Arduino IDE. Note: The RTK Surveyor must be turned on for it to enumerate as a COM port.


Resources and Going Further

We hope you enjoy using the RTK Surveyor as much as we have!

Here are the pertinent technical documents for the RTK Surveyor:

Check out these additional tutorials for your perusal:

GPS Basics

The Global Positioning System (GPS) is an engineering marvel that we all have access to for a relatively low cost and no subscription fee. With the correct hardware and minimal effort, you can determine your position and time almost anywhere on the globe.

GPS Logger Shield Hookup Guide

How to assemble and hookup the SparkFun GPS Logger Shield. Never lose track of your Arduino again!

Setting up a Rover Base RTK System

Getting GNSS RTCM correction data from a base to a rover is easy with a serial telemetry radio! We'll show you how to get your high precision RTK GNSS system setup and running.

MicroMod Update Tool Hookup Guide

Follow this guide to learn how to use the MicroMod Update Tool to interact directly with the UART on the MicroMod Asset Tracker's SARA-R5. Using this board you can talk directly to the module using u-blox's m-center software as well as update the firmware using EasyFlash.

ESP32 Thing Plus Hookup Guide

Hookup guide for the ESP32 Thing Plus using the ESP32 WROOM's WiFi/Bluetooth system-on-chip in Arduino.

How to Install CH340 Drivers

How to install CH340 drivers (if you need them) on Windows, Mac OS X, and Linux.

Setting up a Rover Base RTK System

Getting GNSS RTCM correction data from a base to a rover is easy with a serial telemetry radio! We'll show you how to get your high precision RTK GNSS system setup and running.

How to Build a DIY GNSS Reference Station

Learn how to affix a GNSS antenna, use PPP to get its ECEF coordinates and then broadcast your own RTCM data over the internet and cellular using NTRIP to increase rover reception to 10km!