QField
QField copied to clipboard
Enhancement: NTRIP client to connect Sparkfun RTK Surveyor
Usage is Sparkfun RTK Surveyor (F9P) via Bluetooth from cellphone (Android). Tested with SW Maps and this is working but would like to use QField. The direct Bluetooth connection is recommended by QField documentation but there is no method from QField to send RTK correction data back to receiver over Bluetooth or stream from a public sector data source UNAVCO with RTCM protocol.
Possible workarounds:
Fake GPS instance on Android controlled as listed in QField documentation. The documentation recommends instead a direct Bluetooth connection and avoid this method when possible. As listed the recommended software is not Open Source software and anyways this implements a specific feature of Android so it is not a robust method.
Configure Sparkfun RTK Surveyor to connect to WiFi hotspot and integrated RTCM / NTRIP client, then connecting from QField to the Sparkfun RTK Surveyor using Bluetooth as recommended. This works only when there is a full size AP with a good antenna close by the RTK Surveyor unit. This method is not reliable using cellphone built-in hotspot, the signal is weak to the device and besides this the cellular carrier assesses phone hotspot Internet sharing differently than data used from apps within the phone device so there are carrier-level complications.
Running own base station for corrections data and a serial data link over RF. Extra cost, setup, and not convenient where there is a source of NTRIP / RTCM data valid for the area being surveyed.
I searched the discussions and forum finding some references to F9P hardware, and even the Sparkfun Facet, but nothing sure about how to use QField with a direct Bluetooth connection as recommended and also streaming correction data that is sent over that Bluetooth link back to the RTK Surveyor; as SW Maps is doing successfully.
Suggestion is an enhancement: Add an NTRIP client to QField and support bi-directional communication of this RTK correction data with the Bluetooth connected receiver.
To get RTK in qfield I run the "NTRIP client" app on android. Running the ardusimple F9P with a bluetooth hat on it. Plug gps into phone USBC via OTG cable, in ntrip client app receiver connection is set to External via bluetooth and GPS Mock locations is turned on. Have to turn on mock location in android developer settings. In qfield positioning is then set to internal device. Location access from the top android drop down menu must be turned on. I honestly cant remember which way the data and bluetooth is all going but it works.
Although yes would be nice if QGIS and Qfield had a built in NTRIP client.
I also would like NTrip in QField.
Looking at the landscape of "data collectors", I concur that an NTRIP client is a feature expected in this kind of program.
NTRIP client and #2855 could be accomplished at the same time. The NTRIP source CRS is what is emitted from the GNSS when it is in RTK Float or Fix.
While RTCM3 messages 1005 and 1006 support transmitting the datum in protocol, no one does this. The datum field is not used/defined, which often leads to confusion if a local datum is used
I would assert that by setting the CRS per NTRIP client so that when the GNSS was in RTK {Float/Fix} the provided CRS would be used in:
src/core/positioning/positioninginformationmodel.cpp
void PositioningInformationModel::updateCoordinates()
...
const QgsPoint coordinates = GeometryUtils::reprojectPoint( positioningSource()->sourcePosition(), CoordinateReferenceSystemUtils::wgs84Crs(), coordinateDisplayCrs() );```
It's also interesting to note that PointPerfect, U-Blox's correction service (thingstream.io) now prefers to use NTRIP. I currently use PointPerfect via L-band satellite delivery but it has it's limitations. Having dual-mode delivery would allow us to cover all job sites fully.
So support for SPARTN over NTRIP would also be desirable.
So support for SPARTN over NTRIP would also be desirable.
FYI I have a working proof of concept, PR coming soon. It works with PointPerfect SPARTN. I welcome any discussion or offers to test.
Happy to read the code and try to build it and test (Android). At some point, whenever you get to a PR.
@edgecase14 have you been able to build a Debug build? I'm only able to build a Release. CMakeLists.txt doesn't appear to include Debug configuration
I'm not that familiar with cmake, but I did end up with CMAKE_BUILD_TYPE:STRING=Debug in build/CMakeCache.txt.
I did run cmake -S .. -DCMAKE_FIND_DEBUG_MODE=ON or use ccmake.
There is a way to use an F9P with QField via Bluetooth. It requires an additional program called GNSSMaster. This program connects to the F9P via Bluetooth. It connects to the correction service and performs the NTRIP calculations. GNSSMaster can then output the data via a TCP server. QField can receive the data via TCP. I'm using port 9000 and IP address 127.0.0.1.
There is a way to use an F9P with QField via Bluetooth. It requires an additional program called GNSSMaster. This program connects to the F9P via Bluetooth. It connects to the correction service and performs the NTRIP calculations. GNSSMaster can then output the data via a TCP server. QField can receive the data via TCP. I'm using port 9000 and IP address 127.0.0.1.
where is the source code for that program?