# How Can You Use PyGPSClient to cast to RTK2go?

**URL:** <https://community.sparkfun.com/t/how-can-you-use-pygpsclient-to-cast-to-rtk2go/69060>\
**Category:** GPS/GNSS\
**Created:** [June 16, 2026, 9:37am UTC](https://community.sparkfun.com/t/how-can-you-use-pygpsclient-to-cast-to-rtk2go/69060 "2026-06-16T09:37:17Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![JohnEH](https://avatars.discourse-cdn.com/v4/letter/j/8e8cbc/32.png) [@JohnEH](https://community.sparkfun.com/u/JohnEH)\
**Post date:** [June 16, 2026, 9:37am UTC](https://community.sparkfun.com/t/how-can-you-use-pygpsclient-to-cast-to-rtk2go/69060/1 "2026-06-16T09:37:17Z")

</div>

I am trying use a Pi 5 with the Sparkfun RTK Postcard with the LG290P on PyGPSClient to cast to RTK2go. I have credentials from RTK2go to be a base station but I simply cannot find a decent guide on the internet to get it working. ChatGPT and Google AI are just running me around in circles.

Does anyone have a guide or simple directions?

---

<div class="post-metadata">

**Author:** ![semuadmin](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/semuadmin/32/7096_2.png) [@semuadmin](https://community.sparkfun.com/u/semuadmin)\
**Post date:** [June 16, 2026, 10:29am UTC](https://community.sparkfun.com/t/how-can-you-use-pygpsclient-to-cast-to-rtk2go/69060/2 "2026-06-16T10:29:10Z")

</div>

Hi @JohnEH,

**FIRST AND FOREMOST, IF YOU’RE INTENDING TO PUBLISH TO RTK2GO, READ THIS CAREFULLY FIRST:**

> **[How to get your IP banned – RTK2GO](http://rtk2go.com/how-to-get-your-ip-banned/)**

In answer to your question - technically, yes. PyGPSClient’s NTRIP server facility can be used as an reference station published via RTK2GO, **but I wouldn’t recommend using PyGPSClient in this way**.

PyGPSClient is principally intended to serve as a GUI configuration, testing and diagnostic tool - it’s not intended to be used as the basis of a ‘lights out’, continuously operating NTRIP reference station (‘CORS’).

The [CLI gnssserver tool](https://github.com/semuconsulting/pygnssutils#gnssserver) (_which is what PyGPSClient uses under the covers_) [running as a systemd service](https://github.com/semuconsulting/pygnssutils#installing-gnssstreamer-as-a-systemd-service-on-linux) might be a better option, but neither would offer the performance and stability of something like [SNIP Caster](https://www.use-snip.com/) (_the proprietary solution_ _which is pretty much the industry standard software in this space_).

But if you **fully**  **understand the risks and limitations** and you want to give it a go anyway, the steps are essentially:

1. Ensure you have a suitable NTRIP-capable GNSS receiver, such as the u-blox ZED-X20P, Septentrio Mosaic X5, Unicore UM981S or Quectel LG580 (_this list is not exhaustive_).
2. Ensure you’re using a suitable [multi-band antenna](https://www.sparkfun.com/gnss-multi-band-l1-l2-l5-surveying-antenna-tnc-spk6618h.html) with good sky visibility.
3. Ensure you have **public** internet connectivity - this may involve configuring your internet router to allow ‘[port forwarding](https://www.wikihow.com/Set-Up-Port-Forwarding-on-a-Router)’ of the relevant NTRIP port e.g. 2101 - see your router’s manual for details. **NB: be mindful that this carries risks for your local area network.**
4. Hook your GNSS receiver up to PyGPSClient on the RPi via its USB or UART port.
5. Use PyGPSClient’s [server configuration facility](https://github.com/semuconsulting/PyGPSClient#socketserver) to configure the receiver to operate in Base Station mode. It should be outputting the relevant RTCM3 correction messages e.g. 1006, 1077, 1087, etc.
6. Enable the NTRIP server facility. PyGPSClient will now be transmitting an RTCM3 NTRIP stream on your public IP address and port e.g. http://your\_public\_ip\_address:2101. Note that this would be an _ **unencrypted** _ connection by default - you may want to consider _ **encrypting** _ the service using an appropriate TLS Certificate (_which PyGPSClient supports - see the README for details_).
7. Check that you can connect to this NTRIP stream from another NTRIP Client device **external to** your local area network (_e.g. I would typically use a second laptop tethered to my mobile phone’s 5G connection for this purpose_).
8. Once you’ve established that your NTRIP stream is publicly accessible, follow the instructions for ‘**Connecting as a Data Provider… (Base Stations)**’ here to publish your stream via RTK2GO: [How to Connect – RTK2GO](http://rtk2go.com/how-to-connect/)

Hope this helps. If you have any further queries on PyGPSClient or any of the other GNSS utilities from the same stable, please go to the PyGPSClient [Discussion Forum](https://github.com/semuconsulting/PyGPSClient/discussions).

---

<div class="post-metadata">

**Author:** ![JohnEH](https://avatars.discourse-cdn.com/v4/letter/j/8e8cbc/32.png) [@JohnEH](https://community.sparkfun.com/u/JohnEH)\
**Post date:** [June 16, 2026, 10:56am UTC](https://community.sparkfun.com/t/how-can-you-use-pygpsclient-to-cast-to-rtk2go/69060/3 "2026-06-16T10:56:20Z")

</div>

Thank You! I’ll check out the SNIP Caster.

---

<div class="post-metadata">

**Author:** ![semuadmin](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/semuadmin/32/7096_2.png) [@semuadmin](https://community.sparkfun.com/u/semuadmin)\
**Post date:** [June 16, 2026, 12:53pm UTC](https://community.sparkfun.com/t/how-can-you-use-pygpsclient-to-cast-to-rtk2go/69060/4 "2026-06-16T12:53:11Z")

</div>

Sadly SNIP Caster only works on Windows and some editions may involve ongoing subscription charges (though there is a free LITE edition with limited functionality).

If this is your first experience with running a 24/7/365 NTRIP CORS, it may still be worth spinning up a local instance using PyGPSClient (or gnssstreamer CLI) on a Raspberry Pi first as this will give you an excellent grounding in receiver, antenna and RTK configuration and optimisation.

Maybe try running one on your local LAN for a few weeks and, if all goes well, then consider taking the next step to publishing. Again, if you need any assistance, don’t hesitate to ask on the PyGPSClient discussion forum.

FYI I’ve personally had an NTRIP Caster (based on [gnssstreamer as a systemd service](https://github.com/semuconsulting/pygnssutils#installing-gnssstreamer-as-a-systemd-service-on-linux)) running more or less continuously on an old Raspberry Pi 4 for several years now without major incident, but I only use it for local testing with different receiver and antenna models.

---

<div class="post-metadata">

**Author:** ![JohnEH](https://avatars.discourse-cdn.com/v4/letter/j/8e8cbc/32.png) [@JohnEH](https://community.sparkfun.com/u/JohnEH)\
**Post date:** [June 16, 2026, 1:13pm UTC](https://community.sparkfun.com/t/how-can-you-use-pygpsclient-to-cast-to-rtk2go/69060/5 "2026-06-16T13:13:42Z")

</div>

I’ve had the PyGPSClient interface up for quite some time as a Rover with correction data from a couple different places.

I had thought maybe that it would be as easy as just putting in supplied data from RTK2go to get it all working as a caster.

Having said all this I have almost zero need to do this. It is just a learning experience but I would like to follow through to some sort of successful ending to this. And if I can feed a shared network, all the better.

Every time I would reset the LG290P and set it to do SVIN it would run but the Survey would never advance past 0%. If by some reason it would then I would go to No Fix status.  
Stayed up all night last night fighting it. 😀

---

<div class="post-metadata">

**Author:** ![semuadmin](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/semuadmin/32/7096_2.png) [@semuadmin](https://community.sparkfun.com/u/semuadmin)\
**Post date:** [June 16, 2026, 2:03pm UTC](https://community.sparkfun.com/t/how-can-you-use-pygpsclient-to-cast-to-rtk2go/69060/6 "2026-06-16T14:03:57Z")

</div>

> [@JohnEH](#):
>
> Every time I would reset the LG290P and set it to do SVIN it would run but the Survey would never advance past 0%

ikr. Unfortunately the LG290P requires a reset for Base Station operation and it can on occasion take _ **several minutes** _ for the receiver to stabilise before it starts registering SVIN observations (PQTMSVINSTATUS.obs \> 0), especially from a cold start.

In my experience it does generally get there eventually e.g. here’s a screen shot from an LG290P03 SVIN initialisation I’ve just tried (_the target accuracy is rubbish - this was just a quick illustration_); in this case it took nearly **2 minutes** before the first observation was recorded, and a further **60 seconds** for the SVIN to complete. If you get no joy after, say, 3 minutes, try sending the configuration commands again. _In a professional context, CORS receivers would typically be configured using BASE FIXED ECEF coordinates derived from a calibrated Ground Control Point (GCP), but this is unlikely to be practical for most lay users_.

 ![Screenshot 2026-06-16 at 14.53.07](https://canada1.discourse-cdn.com/sparkfun/original/2X/6/6f4fdce1aef73b87cafb743914cb8acff37583b2.jpeg)

---

<div class="post-metadata">

**Author:** ![JohnEH](https://avatars.discourse-cdn.com/v4/letter/j/8e8cbc/32.png) [@JohnEH](https://community.sparkfun.com/u/JohnEH)\
**Post date:** [June 16, 2026, 2:39pm UTC](https://community.sparkfun.com/t/how-can-you-use-pygpsclient-to-cast-to-rtk2go/69060/7 "2026-06-16T14:39:06Z")

</div>

I appreciate all the info but I’m still failing sort of miserably. I can either only get a 0 or 2 in valid and obs=usually 0 or 1 and never moves. I’ve worn ChatGPT down to its last CPU cycle.

Let me ask the simple question. Can I do this on PyGPSClient with a u-Blox RTK chip?

---

<div class="post-metadata">

**Author:** ![semuadmin](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/semuadmin/32/7096_2.png) [@semuadmin](https://community.sparkfun.com/u/semuadmin)\
**Post date:** [June 16, 2026, 3:06pm UTC](https://community.sparkfun.com/t/how-can-you-use-pygpsclient-to-cast-to-rtk2go/69060/8 "2026-06-16T15:06:36Z")

</div>

> [@JohnEH](#):
>
> I’ve worn ChatGPT down to its last CPU cycle

Far be it from me to challenge the integrity of billionaires or trillionaires, but I would humbly suggest AI chatbots may **NOT** be the most reliable authority here (_or indeed anywhere_).

Try asking the human beings who actually wrote the software 😉

> Let me ask the simple question. Can I do this on PyGPSClient with a u-Blox RTK chip

If by ‘u-blox RTK chip’ you mean something like the ZED-F9P or ZED-X20P, the answer is yes. But, as I say, PyGPSClient will also work quite happily with u-blox, Quectel, Septentrio and Unicore RTK-capable receivers (_i.e._ _essentially most receivers whose GNSS output protocols are in the public domain_) but they each have their own configuration nuances.
