Real Time Kinetics

Posted by grin on 3 November 2021 in English.

Real Time Kinetics (RTK)

For half a year now I’m walking, biking and generally moving accompanied by an uBlock F9P unit, which is a precision multichannel GPS receiver board with an external antenna and bluetooth connection to my mobile phone. The phone receives correction stream (NTRIP) by mobile net and uploads it to the unit, which in turn uses the correctional data to fix up atmospheric noise in the GPS signal.

The result is a GPS position way more precise than a phone.

There are 3 usual states:

  • RTK - or “Real Time Kinetics”, when there is both satellite and internet data is available, and the base station of the stream is near. It means precision between 50 centimeters up to 5 centimeters! Imagine it like not only it’s visible when I go to the other side of the path but the track even show when I turn around, since my backpack makes a 30 cm circle around. :-)
  • FloatRTK - is when the precision “floats” from a known-good position, which in practice mean 1.5 meters up to about 90 cm (on average 1 m). When I am within 100-300 km of a base station and I’m moving in a forest this is the most usual state.
  • DGPS - when there is no RTK fix (usually due to no mobile network or blocked satellite receiving) the “normal” differential receiving mode is active, which means 3m - 1m precision, closer to 1.5 m on average, thanks to the external antenna and multichannel receiver.

When I am on FloatRTK or RTK it’s amazing: it can get back to the same position everytime, later on the day, or on a different day, which basically mean that the position is exact. I can draw a track with 50 cm precision and try not to draw that much detail on OSM (not to make anyone mad seeing fixes of centimeters along :-)).

Unfortunately there are no miracles: on the bottom of a gorge (say, recent beautiful Slovensky Raj) or with no mobile network the float become DGPS fast, and precision starts to wander. HDOP is not a reliable measure: while the “guesstimate” is usually a few meters there are places where my track diverges from satellite imagery too much to be trusted. (So, for a specific example, I wasn’t able to precision-fix up Slovak gorges since there was no network coverage in the middle of nowhere.)

When you see accuracy=* on my tracks it usually mean I had FRTK or RTK there and the position is pretty accurate, way more than a mobile phone can reproduce. Still, if you have an industrial receiver you may be better than me, and feel free to fix up points and tag accuracy=* accordingly. :-)

Hardware and software:

  • uBlox F9P + 10Ah powerbank
  • Bluetooth GNSS (Android) [logging NMEA, sending position to android and uploading NTRIP to F9P]
  • Free NTRIP casters from or
  • OsmAnd
  • and an android phone with mobile net and a largish battery (+powerbank backup).


Massive thanks to the Hungarian OSM Community, and especially Kolesár to research the receivers and usage, finding software and streams, to make it all possible.


Comment from Flaviu Andrei Csernik on 3 November 2021 at 16:19

Great! I’m planning to do the same thing next year in order to precisely map some hiking trails. What sort of board did you use for the uBlox F9P? What I was looking at is this spark-fun rtk kit plus another stand-alone surveyor and radio to use as a base-station when there is not cellular coverage.

Have you considered having another uBlox F9P acting as a base station and sending corrections over radio? for example on the top of the gorge in your case. Although this still won’t cover all cases, it helps you cover a lot more.

Was that power bank enough, was autonomy a problem? What about the cost of the setup?

Thank you for sharing this!

Comment from grin on 3 November 2021 at 17:41

This is a C099-F9P-1-03 board directly from Switzerland, u-blox AG. It came with a fine external antenna (ANN-MB-00 [SMA]), a (little impractical) metal reflector and some USB cable; I had to get a box and the power to get it working. I am pretty sure any source would do as it’s the chip that matters.

Base station seems like a great idea, especially if you’re skilled enough to get it working! :-) Unlike me. This is one reason that I use it the simplest way possible. Technically I could [and maybe should] record the raw signal then fix it up later from the historical base station data, but honestly, it would need way more involvement than I can spare. (RTKlib isn’t particularly user friendly, and I don’t readily see a way to easily save raw data, apart from writing the app by myself.)

The powerbank is extremely enough: the board can run probably 24+ hours on it, a normal 5-6 hours hike uses up less than 25%. The phone needs more [due to network traffic]. There were bsically no problems, apart from areas where there isn’t a public base station nearby or there is no network coverage.

The cost is not prohibitive but definitely not cheap, was about $300, give or take. I simply use it on the top of my backpack, so I have no holding pole, horizontal level, etc. If one needs precision measures these may cost a bit more.

Comment from StephaneP on 14 November 2021 at 15:54


If you want to build your own base station, I wrote some code that could help you : In France we now have an open gnss network with about 200 base stations.

Comment from grin on 14 November 2021 at 19:54

@StephaneP excellent, thank you! I will see what can I do about it. :-)

Is there any pointer to the open gnss network streams?

Comment from StephaneP on 16 November 2021 at 06:20

@grin Sure, and the caster is, port number : 2101

Login to leave a comment