What is GPS RTK?

Contributors: Nate
Favorited Favorite 6

Real Time Kinematics

RTK is short for real time kinematics. A GPS receiver capable of RTK takes in the normal signals from the Global Navigation Satellite Systems along with a correction stream to achieve 1cm positional accuracy. GNSS includes satellites from GPS (USA), GLONASS (Russia), Beidou (China), and Galileo (Europe). On top of these signals an RTK receiver takes in an RTCM correction stream and then calculates your location with 1cm accuracy in real time. The rate varies between receivers but most will output a solution at least once per second; some receivers can output this higher precision solution up to 20 times a second. RTK capable GPS receivers used to be thousands of dollars and were limited to professional surveyors and government groups. Thanks to science, math, and economics, RTK receivers are now less than $300.

SparkFun GPS-RTK-SMA Breakout - ZED-F9P (Qwiic)

SparkFun GPS-RTK-SMA Breakout - ZED-F9P (Qwiic)

SparkFun GPS-RTK2 Board - ZED-F9P (Qwiic)

SparkFun GPS-RTK2 Board - ZED-F9P (Qwiic)

SparkFun GPS-RTK Board - NEO-M8P-2 (Qwiic)

SparkFun GPS-RTK Board - NEO-M8P-2 (Qwiic)


On the left we have a extremely high quality GPS receiver (the ZED-F9P seen above) with no correction data. The position wanders greatly over 1.5 meters and beyond. On the right the same receiver, with the same antenna, with RTCM correction data brings the position under 25cm with tight groupings under 10cm.

GPS with and without RTCM Data correction

Did You Say 1 cm? Zomg How Do I Get 1 cm Accuracy!?

You'll need a GPS receiver capable of receiving and incorporating the RTCM correction data into its location solution. You’ll also need a source of RTCM correction data. This usually comes from an internet connection or a long distance radio capable of approximately 500 bytes per second. LoRa and LTE-CAT M1 are superb choices for this backhaul.

Once it's all setup and working, the rover GPS module will output normal NMEA sentences but with really accurate lat and long. To be clear, it’s not 1cm precision; it's 1cm accuracy. The precision is 0.1mm!

1 cm accuracy is possible with lower cost receivers (such as the NEO-M8T) by capturing raw streams from the GPS satellites and then post processing the logs with an open source program called RTKLIB. This is handy for applications like aerial photography and agricultural inspection were alignment is important after the fact. It's also possible to tether a lower cost receiver (such as the NEO-M8T) to a laptop and run RTKLIB in unison and achieve real time solutions but this is a rather large, power hungry setup that is not ideal for embedded mobile applications. In these tutorials we will be focusing on real time (RTK) capable receivers.

What is RTCM?

RTCM is an acronym for Radio Technical Commission for Maritime. This governmental body came up with a way to communicate positions for boats and other vessels many decades ago. Technically, RTCM is just a protocol. We, however, will be using the term RTCM to mean the bytes of correction data related to GPS timing anomalies.

TRCM Protocol Message Structure

The contents of RTCM frames can be decoded but you, the user, rarely need to. Instead you simply pass the bytes to the GPS receiver and it will parse the correction data.

There are a few different types of messages but the ones we care about are numbers 1005, 1077, 1087, and 1230. Each message type has a different length but as a rule of thumb it's a couple hundred bytes every second. Each RTCM message contains details about the GPS/GNSS network, and perturbations in the ionosphere and troposphere.

Remember, the GPS satellites are very far away; about 20,000km or 12,000 miles away. A lot can happen to the signal from the GPS satellites to you across that distance. Geomagnetic storms cause slight timing delays increasing the location error. Earth's gravitational field is not uniform so relativistic effects can add inaccuracies. If we know the second to second issues within our local vicinity, a RTCM capable receiver can correct the location solution with great precision.

Where Do I Get RTCM Corrections?

If you're lucky there's a station within 10km (6 miles) of you that is broadcasting RTCM 3.x data over the internet. We located one a little more than 10 km from SparkFun HQ that works really well.

TRCM Base Station

Here’s a list of stations we’ve found. If there are more that you know of, please let us know:

Many of the stations that broadcast real time RTCM correction data require registration. It’s a wild hodge-podge of scientific and non-profit civil organizations across the globe. It feels very internet-circa-1995. If anyone has a more straightforward way of discovering and connecting to RTCM providers, please let us know in the comments section.

We recommend using RTKLIB to subscribe to the feed and output the stream over a serial port to a GPS RTK capable module. For the best accuracy, your GPS receiver will need to be within 10km (6 miles) of the broadcast station. If you are greater than 10km, the ZED-F9P can still create a location fixed but the accuracy is degraded and the receiver will output the following:

WARNING: DGNSS baseline big: 10km

Another option for RTCM data is to create your own station! You’ll need a GPS module capable of generating RTCM correction data, a sensitive antenna, and computer or Single Board Computer (like a Raspberry Pi) to take the RTCM data and serve it over the internet. You'll need a clear view of the sky and probably a very long SMA extension cable to get from your desk to the antenna. There are some very expensive receivers capable of base station RTCM. Luckily, the ZED-F9P and NEO-M8P-2 modules are lower cost and just as capable. We will be focusing on how to use the ZED-F9P in the following tutorials.

How Do I Get the RTCM Messages to the GPS Receiver?

It depends on your end application. If you need maximum portability, then the best solution is a radio link between base station you've created and mobile GPS RTK receiver. SparkFun offers a variety of LoRa radios and antennas to enable this backhaul like some of the products listed below.

Nebra Outdoor HNT Hotspot Miner (915MHz)

LoRa Fiberglass Antenna Type N - 5.8dBi (860-930MHz)

LoRa Fiberglass Antenna Type N - 5.8dBi (860-930MHz)

SparkFun MicroMod LoRa Function Board

SparkFun MicroMod LoRa Function Board

SparkFun LoRa Gateway - 1-Channel (ESP32)

SparkFun LoRa Gateway - 1-Channel (ESP32)


If your end application already requires an Internet connection such as GSM or LTE-CAT, then a serial connection to the GPS-RTK receiver may be the easiest way to go.

If your application has a cell phone nearby then a third option is to create a serial bridge from a cell phone to a serial Bluetooth device like the Bluetooth Mate Silver that then connects to the serial port on the GPS-RTK. There are a few Ntrip compatible mobile apps. We’ve been pleased with Lefebure for Android.

Resources and Going Further

We hope this tutorial helps you understand a bit more about GPS RTK. This is just the beginning! For more information, check out the resources below:

Looking for more information related to GPS RTK? Check out the tutorials below:

Bluetooth Basics

An overview of the Bluetooth wireless technology.

LoRaWAN with ProRF and The Things Network

Learn how to make a LoRaWAN node for your next long range IoT project and connect it to the internet with The Things Network!

GPS-RTK Hookup Guide

Find out where you are! Use this easy hook-up guide to get up and running with the SparkFun high precision GPS-RTK NEO-M8P-2 breakout board.

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!

Or check out this blog post for inspiration.