Comments: How to Build a DIY GNSS Reference Station


Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • Member #1745327 / about 2 years ago / 2

    What are the exact lines of code that need to be omitted for it to connect on its own?

    • Member #1742480 / about 2 years ago / 1

      I'd also like to know how to automate the start without needing to press a key. Is this possible?

  • Member #1881507 / about 2 months ago / 1


  • Member #1881507 / about 2 months ago * / 1

    Looking for a broadcasting 915 MHz antenna that we can attach to either the Sik Telemetry or RFD 900 telemetry modules. Looking for a range of 1-10 km.

    Would appreciate any advice on both what antenna and what radio modem to choose.


  • Member #1682068 / about 5 months ago / 1

    Thank you for this tutorial, makes setting up an RTK GPS base station much easier. A brief question, in the text it is mentioned: "Hit the record button. This will record all the data (NMEA, UBX, and RAWX) from the receiver to a *.ubx file. Allow this to run for 24 hours. Don’t worry if you go long but do realize that a 24 hour file will be ~300MB so don’t let it run for a month."

    I have installed the Ublox U-center software in my laptop, connected it to the Sparkfun RTK surveyor with a USB cable, and proceeded following your tutorial. When I hit the "record button", where is the raw positioning data recorded, in my laptop or in the SD card of the RTK surveyor? If in the latter, can I disconnect my laptop from the RTK surveyor or do I need to keep it connected until the end of the data recording (about 24 hours) ? Thanks

    • When you hit the record button, u-center should prompt you for the location to save the file.

      • Member #1682068 / about 5 months ago / 1

        Yes, I did realise that, but maybe I was not very clear with my question above, what I wanted to know is, if I set the file location to be in the SD card of the RTK GPS base station, can I then disconnect the laptop from the base station, and then connect again at the end of the measurements, or do I need to keep it connected all the way till the end of the measurements? Thanks.

        • Sorry, I just re-read your setup description. Be sure you've enabled the 7 logging messages on your RTK Surveyor and you should be able to log to an SD card without problem. You can disconnect your laptop anytime once configuration is completed. Before you let the Surveyor sit for 24 hours, I recommend you run for 5 minutes, power down the unit, and pull the SD card to verify the logs. Once complete, re-run for the full 24 hours.

          Feel free to visit our GPS forums - we're able to answer many more questions there.

          • Member #1682068 / about 5 months ago / 1

            Great, many thanks for confirming that and the suggestion on how to make sure the base station would have logged that big PPP file after 24 hours. Yes, I should have posted this in the forums, this way it might have been helpful for other people as well.

  • Member #339879 / about 2 years ago / 1

    Hey Nate, awesome ecosystem (RTK Surveyor with all the extras really makes for a great system!). I note that bldr_downtown is no longer (7/31/2022) on the NTRIP list of available base stations - did it go offline? There is another one in Berthoud, CO, but that is a 69km baseline from my project (St. Mary's Glacier), vs. a 50km for the Sparkfun HQ. I know, I know, it's not going to introduce much more error, but OCD... :-)

    Thanks for your great tutorials, they really are very well written!


    • Thanks so much!

      Sorry, the station should be back up now. We changed a few things that have made the Windows based station a bit unreliable. Should be fixed now. We hope to add a pure RTK Surveyor based base station soon.

      • Member #339879 / about 2 years ago / 1

        Nate, thanks for the quick response, I got back online very quickly. Something to note for future users, though, that I want to leave here in case anyone else has this problem. I was having an incredibly hard time getting connected to a caster via my phone. Turns out AT&T is blocking port 2101. It seems like it's AT&T that's blocking it, it's definitely not anything on my side. My workaround is to use my VPN at home (I have a Firewalla device -, I recommend everyone gets a firewall device, as I work in IoT for a mining company and I have seen the effects of an intrusion!), and it works. To investigate this on my Android phone, I installed the 'IP Tools' app, turned off Wi-Fi, and used the Port Scanner function, and via the straight AT&T network port 2101 on wasn't open, but as soon as I fired up Wireguard and connected to the internet via VPN, everything was resolved, I could connect to a caster via Lefebure's NTRIP application and get a solution, which then worked with SW Maps. As an aside, Lance Lefebure and the SW Maps team in Nepal were both VERY responsive when I approached them about this and other issues, so a big shout-out to them (and you)!

  • Member #1745327 / about 2 years ago / 1

    I will be using this base station for an autosteer system. What navigation rate would you recommend? Also, what do you mean by "remove the keypress waits" ?


    • RTK does not benefit from passing RTCM correction data faster than 1Hz. However, if you're asking about the nav rate for your autosteer system, that's up to the system's engineer.

      "remove the keypress waits"

      These are the lines of code within the Arduino example sketch that wait for the user to press a key. I'd remove these so that the system auto-connects without the need for a human to intervene.

  • Member #1745327 / about 2 years ago / 1

    Thankyou very much for this tutorial. What should I do about this error? ICY 401 Unauthorized

  • Member #1731275 / about 2 years ago / 1

    Hey Nate! First of all, great tutorial. I've been working on RTK GPS for a few years now at my company and this is very helpful. One question/concern though, I surveyed in my base station and had it post processed with CSRS, and they responded with my location with an accuracy of 2mm. Then, I cross checked the location they sent me with the local ORGN RTCM3 network and found that their returned result was 1.5 meters from the true position. I'm attempting to use OPUS now, but as you mentioned, it is really hard to get the format right :p

  • Member #1636456 / about 2 years ago / 1

    Hi Nate, I bought an GPS-RTK ZED F9P Sparkfun module and I'm experiencing some troubles setting it up to work as a base for my old Hemisphere S320 rover. Using Snip or strsvr(RTKLIB) to translate RTCM new MSM Messages to legacy RTCM 3.0 messages everything works well but ramdomly the rover lost fix solution and turns into autonomous mode. Sometimes it works well about 15-20 mins and suddenly lost fix returning to work well without doing anything. I suspect that something is failing on the conversion to old legacy messages or maybe some kind of imcompatibility between Hemisphere S320 rover an Zed F9P base. Using Snip or strsvr with my old Hemisphere Base I got fix solution inmediately and works perfect, so I discard any problem on wifi/internet conexion. Have you any idea of what cain I check? Thanks a lot in advance

    • For debugging a rover with bad RTCM I've often used u-center and the MON-COMMS message to view if RTCM messages are coming into the receiver correctly. Often, when I think my RF link or system settings are all good, viewing this monitor will quickly show me something is corrupting the feed. I don't know much about the Hemisphere S320 or if it has a similar ability to inspect the RTCM feed quality. Sorry I can't be more help!

  • Member #114538 / about 2 years ago / 1

    The CSRS does not appear to return ECEF/cartesian data in their responses. The linked PDF "Fancy PDF Report"

    does not include an ECEF fix, so the steps to enter the ECEF data into u-center are not applicable to this tutorial and should be updated/replaced.

    • Sorry for the confusion. The PDF report from the CSRS includes only UTM and geodetic coordinates. However, the email that you receive will contain a 'summary' link. This output is what is shown in the tutorial. I've updated the tutorial as well.

      Email from CSRS Summary

  • slpitz / about 3 years ago / 1

    Thanks for this article! I needed it! I bought a NEO-M8P-2 a while ago and never got around to using it. There are no public ground stations in my area to hook into, which is why I like this tutorial so much. But I had a couple of lingering questions.

    I am thinking about using the SparkFun GPS-RTK Dead Reckoning pHAT (GPS-16475) with my NEO-M8P-2 (GPS-15005). The navigation rates are pretty different (up to 30 Hz for the pHAT versus 5 Hz for the NEO).

    If I am using the NEO-M8P-2 as the reference station, would the slowness of the RTCM correction data be a problem for the pHAT that would be working as the rover?

    For this project the pHAT will be mounted in a moving car, and the vertical accuracy will probably be more important than the horizontal.

    Is there an estimate of the vertical accuracy for the SparkFun GPS-RTK Dead Reckoning pHAT (GPS-16475)? I noticed the horizontal accuracy with RTK was 20cm which is a bit higher than the NEO-M8P-2 (GPS-15005) and the ZED-F9P (GPS-16481). I could choose something other than the dead reckoning board but like the idea of the IMU data.

    • RTCM corrections at 1Hz is totally enough. The ionosphere doesn't change that much over seconds. The NEO-M8P-2 with a PPP fixed location should work great.

      Vertical accuracy: if you're looking at datasheets, that's the same place I'd look.

  • JoeB7774 / about 3 years ago / 1

    Thanks for the great article. When connecting my F9P and starting your tutorial, my fix mode is '3D/GNSS'. Is this sufficient to establish an accurate measurement (after I complete post processing at the end) or should this value be reading something different while I'm obtaining my 24 hours of data?

    • Yep. The 3D/GNSS fix is the normal level of fix with any regular GNSS receiver. It's a fine fix state to obtain the 24 hours of data.

  • Member #1660930 / about 3 years ago / 1

    Hello. I wanted to ask I'm using GPS-RTK ZED F9P Sparkfun module and I'm connecting the module with ESP32 and micro SD card reader. I connect the GPS module and ESP32 using UART. How can I set the Arduino programming enable RTCM and disable UBX and NMEA message. Can someone help me with this problem. Thank you.

  • Member #1658018 / about 3 years ago / 1

    Hi there! Amazing article. I have actually got two super simple questions. Are you able to run SW Maps on background while doing something else on you Android device and still get RTK correction (I haven't gotten an Android device, and this information is quite crucial for my project, as it will be running another app simultaneously)? Also, can an Arduino get coordinates while the module is connected via USB port to the Android device?

    Thank you everyone for the help!

    Kindly, Guilherme.

    • Hi - Yes, SW Maps can run in the background.

      "can an Arduino get coordinates while the module is connected via USB port to the Android device?"

      I'm not entirely sure I understand your question but I'll try: Android device to USB to ZED-F9P to a few wires to Arduino

      Yes, this would work. An Arduino can obtain position information from the ZED-F9P receiver over I2C (Qwiic) or over UART (TX/RX).

  • Member #1564670 / about 3 years ago / 1

    RTKLIB 2.4.3 b34 STRSVR started to support NTRIP caster mode. STRSVR: Protocol HTTP/1.1 accepted by NTRIP caster mode.

  • Member #1631102 / about 3 years ago / 1

    Awesome article! Thanks for the detail! One question I have - what are you using for your "upgraded" L1/L2 antenna mounted to the cinder block?

  • Member #1797830 / about a year ago / 0

    Hi Nate, thanks for the great tutorial. I'm completely new to all this but bought a Spark Fun receiver and ZED F9P to create my own base and connect with RTK2GO. I've been working on it for a few days now and following your tutorial step by step, learning as I go. I've got U Centre working fine, got my exact coordinates, set up my rtk2go account etc and now when I think I am just nearly there I've hit a brick wall. When I try point STRSVR input to com5 where my board is connected and output to NTrip RTK2GO and I press start I'm getting (0) COM 5 Open Error (5). I have the 5 different RTCM's showing in the packet viewer 00:22:24 R -> RTCM3 1074, Size 173, 'GPS MSM4' 00:22:24 R -> RTCM3 1084, Size 144, 'GLONASS MSM4' 00:22:24 R -> RTCM3 1094, Size 129, 'Galileo MSM4' 00:22:24 R -> RTCM3 1124, Size 129, 'BeiDou MSM4' 00:22:24 R -> RTCM3 1230, Size 10, 'GLONASS code-p

    And I have Time Mode 3 set up with my coordinates. What am I doing wrong? Its like I cant get a connection to the com5 port. I've been on a steep learning curve the past few days but I'm stumped this time. Please help!

If you've found an issue with this tutorial content, please send us your feedback!