I just published my first try to get rid of NTRIP casters. (Mostly not open source or problematic copies, if you would like to have an secure communication and NTRIP v2. Or you have to send your data to an third party and … )
I am using an ardusimple board as a base station. The f9p is connected via the serial port to the esp32. The ESP32 (with an UNO formfactor) is transmitting via wifi - my home network/LAN to the, from the internet reachable, open source mosquitto MQTT broker (easily self hostet on a raspberry pi). Seperated MQTT message to individual “topics” for each RTCM message and base station. (e.g /NTRIP/Base/XYZ01/RTCM/1074/ ) are published.
The rover(s) are connected and subscribing via wifi - mobile hotspot/phone - internet (secure over TLS, and password protected broker acces) to the same topics on my mosquitto broker. Again but backwards ESP32 to f9p via serial.
I’m using a non-problematic copy of an open source NTRIP caster. Can you tell more about the advantages I would get from NTRIP v2 or anything else?
If you insist to only use a secure/encrypted connection, like i do, you need NTRIP v2. I don’t want to send my passowrds, my and/or basestation position ,… public/open readable over the internet. TLS should be a must for all comunication, even if you are not making anything illigal or you don’t have anything to hide.
Additional: I try to report all important data from the driving vehicles, some field/soil data, … and much more back to my homeserver as a log (if possible in one standard format - with MQTT i can do all off my needs), so a secure connection is absolute important for me.
MQTT is a very well documented protocol with a lot of support and open source products, and work nearly out of the box (at least for me).
Thanks for that additional information. Unfortunately two of our tractors have OEM auto-steer equipment and neither support NTRIP V2, not to mention MQTT. Luckily they do not send any secret information.
My RTK base location can be found from google earth photos pretty accurately but I understand the other privacy arguments.
I guess you neither fancy the RTK2GO service then, not only makes the correction data available for everyone near by but also reveals the base details for everyone in the world.
I would like to avoid using RTK2GO for two reasons: as you arleady mentioned, my exact base position, and to avoid constantly streaming data to the remote server (even if this are only some bytes/hr). If i swtch of the transmission the neighbours are blind to.
Please do not misunderstand me, i am more than happy that an free of charge caster like RTK2Go exists. Using this service is generaly a good thing and is supporting the community!
The MQTT data can be transformed to an local NTRIP caster as well (a modified version of GitHub - nebkat/esp32-xbee: ESP32 XBee UART Interface could do that). IN a local network (eg. just in the tractor cabine hosted by a mobile hotspot), i am not worried about encryption! Then everyone can use the old equipment without change (just the NTRIP caster addres will be 192.168.x.x).
With my MQTT solution, i can easily provide my correction data to my neighbours to, i just give each a privat username/password or a public one, but internaly i can limit the acces to special topics/data. For example: we can share soil data for all neighbours, rain info for the everyone on the internet, correction data for the some loved neighbours, … Switching the base ON/OFF can be done remotly via simple msg too. I know this is not the needcase for a lot of farmers, and often a lot of time is wasted fideling around witch development intensive features, but i realy like to do such things!
Thinking of the posibilities inspires me to work on a small managing software (python or note-red) to move arround and modify some topics/data on the server side and make someting nice und usefull. There are already some interesting projects running on the net, maybe a integartion is possible?!
@NorthernFarmer are you really using an open source ntrip caster? The only one I can find is made by SNIP and it’s it’s free to use but closed source. The NTRIP server portion is open source, but not the caster that can support the v2 protocol. NTRIP is really just based on http protocol, so one could build his own caster. But honestly it’s not even that necessary to encapsulate everything in http protocol. I have run for months with just a raw tcp/ip stream, which the LeFebure NTRIP client app supports. It’s not encrypted but I don’t really care.
When using NTRIP, I’ve noticed that rtk2go seems to become uncommunicative to my local ntrip server at least once every day, which necessitates a restart of the ntrip server. No idea why.
Most OEM GPS equipment can take corrections directly via RS232, so they can come from anywhere. I feed my Trimble receiver with either a radio link (raw RTCMv3 stream) or via bluetooth using the NTRIP client app on Android.
The MQTT solution looks interesting!
I’m mostly using the BKG NTRIP caster. Not sure if it is officially open source but the code is available and is free for everyone.
You are right as always, my GNSS receivers are Topcon AGI-4 variants and they do have an external port for RTK correction data. I didn’t think about the fact that the actual receiver does not need to understand MQTT if there is an external device at the tractor that decodes the correction data first.
I have only shortly tried RTK2GO, I found it most stable when I used a linux NTRIP server to feed correction data from my base. Don’t know why.
edit: some of the spelling errors fixed
How do you report data from AOG to remote server?
@d1ken At the moment no data is used from AOG. Starting to collect J1939/Canbus/ISOBUS data with an arduino. I made a simple oneway “bridge” (only Traktor CanBus to my CanBus) to avoid bad influence to the OEM system. If i have more time, i plan to make JSON strings out of the important PGNs, pack in into MQTT msg, and sending home. The hardest thing is to decide what info in what format and how frequent is worth to send.
Later on GPS position should be added too (direct or from AOG).
Just posted a little more regarding this project (and renamed the repro, so the old link is not working any more, try to fix it)
Does NTRIP v2 can work via HTTP/2 via TLS or limited to HTTP/1.1?
Anyway I do not understand advantages MQTT to HTTP/1.1 over TLS.
Maybe just instead to write code for NTRIP v2 Caster use standard MQTT client and server.
Maybe someone has NTRIP v2 (RTCM 10410.1) standard?
As far as i can see NTRIP v2 is still on HTTP/1.1 but TLS possible. You are right, no realy important advantages with MQTT vs. HTTP/1.1 over TLS in general.
But i was frustrated searching for a opensource and/or free avaliable caster, supporting TLS, and selfhostable on a raspberry pi. After trying to modify some existing casters (v1 or v2 announced, but not fully supported, many incompabilites), … still not finding the correct v2 documentation … RTCM 10410.1 Standard for Networked Transport of RTCM via Internet Pro – Radio Technical Commission for Maritime Services … (long story), i started to use just the MQTT broker as an relay of my RTCM messages. Simple and it worked (prove of concept)! Enought for most of us with a single base and some rovers. Just as a nice possibility outside of the range of xbee, lora and so on. And in the limit of my programming skills.
Starting to think of sharing with neighbour, implementinglimited user permission to my server/broker was getting in focus. So i thought to design somthing very similar to the existing NTRIP caster, to become future-proof and nobody can complain about the limits of this MQTT concept.
Mqtt is an awesome protocol. I’m using it extensively on the farm.
I just get an offer from DavidKelleySCSC:
“Here is a challenge if you are willing. If you can find two other parties who also think adding MQTT support is a good idea for NTRIP, I can arrange to have such a feature added to the SNIP NTRIP Caster (the software found on RTK2go.com) in a couple of weeks of effort (at least doing v3.1.1). I am attracted to adding other secure transport methods to NTRIP in general, and this one seems fairly trivial to support. I also feel that one of the public papers claiming that MQTT is more efficient than NTRIP is nonsense (they are more or less the same IMO, just TCP/IP transport), but apart from that point, this looks like a classic simple publish/subscribe system that is easily mapped to existing NTRIP concepts. Any interest?”
this can be found under : MQTT Protocol · Issue #7 · nebkat/esp32-xbee · GitHub
Just wonder, as there is indeed the BKG NTRIP Caster available - and yes it is opensource as the lines in the sources indicates… well, but why is there no docker image yet available? Would it make sense?
Funny you should say that…
I’ve just spent my weekend making one!
It’s based on another implementation by goblimey but I tweaked it for a better ‘out the box’ experience and also included new code from another version of ntripcaster which supports NTRIP v2 and Nearest Base functionality.
In the future I plan to update it so that authentication works properly with nearest base (basically decouple authentication from mountpoints) and easier live-updating of users and mountpoints.
But for now, it works. to get a test running, just copy the .conf.dist files to .conf as in the readme, input your hostname in ntripcaster.conf, leave everything else as-is. Then build and run it. Using strsvr you can take a stream from rtk2go and point it to the caster with mountpoint ‘test’ and password ‘password’. Then connect with an ntrip client to mountpoint ‘test’, user ‘usera’. password ‘abc’
Also, you can try to break my caster at ntrip.cseq.co.uk. If any UK users would like to push streams to it, I’d love to hear from you. DM me. Think of it as an AOG-only version of rtk2go
Funny, indeed, looks good, will test it soon…
I have been working on a caster project. I have a setup that sent to rtk2go and that worked but was trying to host a caster at farm. I have been spending alot of time trying to port forward and open firewalls to get it so my rovers can access farm. I have a Telus Smart hub and also tried with a sim card in a data modem and I cannot get them to allow a rover to connect. I have setup a NoIp account and it finds my Ip as I don’t have a static on any of my internet sources. I have set up port forwards, have checked firewall rules etc just nothing. I used port checker to see if ports were open and it times out so something is not correct. I did read that I need to get a business account or a static ip from provider to make it work. Is that correct? If so how do things like No-Ip work for others? I was trying port 2101, is that the issue?
My plan is to get Starlink at farm for internet but have read you can’t get a static IP for them so maybe that won’t work either.
Any ideas as I have spent hours and am frustrated to the point where I may just go back to rtk2go
You should only need a public IP-address and port forwarding set up. No-IP makes things more convenient, I use it but it is no must.
Sounds like you know how it should work, perhaps some firewall issue or still something not correct with port forwarding. I remember fighting with this when I changed my modem. They all have a bit different menus. I had configured port number fine, it was just one “hidden” tick that needed to be set to actually activate port forwarding.
Try it first with a browser, at home, then from internet.
By the way, which caster are you using?
I built the esprtk setup and it has the built in caster