Skip to content

Conversation

@PaulZC
Copy link
Contributor

@PaulZC PaulZC commented Nov 25, 2025

Note: this PR needs the latest version of SEMP (1.0.6) and the UM980 library (1.0.10)

This PR:

  • Attempts to minimise the "no increase in file size" and the disconnect "due to lack of RTCM" glitches during NTRIP Server

  • See [Release Candidate] NTRIP Server breaking connection due to (unreal) lack of RTCM #702 for details. The real issue is network latency when using rtk2go. But there are improvements that can be made:

  • RTCM data from the GNSS is stored in a new ring buffer in PSRAM

    • See Base.ino for details
  • Data is written to consumers by sendRTCMToConsumers() - from inside the gnssReadTask instead of processUart1Message

  • On WiFi / Ethernet / Cellular: each complete RTCM message is written in one single write

    • Previously RTCM was written a byte at a time - which slowed things down dramatically!
  • Moves NTRIP_SERVER_DATA from settings.h into NtripServer.ino

  • Adds more semaphore-protected methods in NTRIP_SERVER_DATA to prevent connected() checks during a write()

  • Adds pin_debug for logic analyzer debugging - on EVK we can use the baseStatusLED for this

  • Adds settings.networkClientWriteTimeout_ms to avoid excessive write times from the default 3000ms timeout

  • Reverts the recent increase in uartReceiveBufferSize and btReadTaskStackSize

  • Adds new Tools Dinger.py and NTRIP_Sink.py

    • Dinger.py examines COM data, looks for a string and generates a "Ding" when the string is found. The date, time and following data are printed too. Very handy for trapping and recording rare events
    • NTRIP_Sink.py is a very simple local NTRIP Server: when a device connects, it sends "ICY 200 OK" and then sinks all incoming data with a byte count. Very handy for testing NTRIP Server without the latency of an external Caster
  • Allows individual NTRIP Servers to be Enabled / Disabled - as requested in Postal RTK: In Base mode, turn casters on or off individually. #758

  • Includes a temporary workaround to prevent bluetoothStop() from crashing

  • Adds BaseAssist - as requested in [Feature Request] Add "Base Assisted" Mode #751

    • It is now possible to go from Rover (with RTK Fix) into Fixed Base mode - using the position of the RTK Fix
    • It is also possible to go from Base (Survey-In) into Fixed Base mode - using the surveyed-in position
  • This required some tweaks to the RTK_MODE

    • There is a new RTK_MODE RTK_MODE_BASE_UNDECIDED which prevents NTRIP Client from starting and immediately stopping
    • Previously NTRIP Client would start when Base (Survey-In) was selected and then immediately stopped when Fixed Base began. I was seeing the firmware hang in a state where NTRIP Client had stopped, NTRIP Server had started, WiFi remained enabled, but there was no 'kick' to make NTRIP Server actually connect to the Caster. Adding RTK_MODE_BASE_UNDECIDED fixes this.
  • Adds a fix for the Geoidal Separation issue in Inconsistency in GNSS getAltitude #809

    • Previously getAltitude would: for two GNSS report Height above MSL; for the other two report Height above Ellipsoid
    • This fix makes all four GNSS consistent; height above ellipsoid is always reported by getAltitude
    • Requires UM980 Library 1.0.10 - released today

@PaulZC PaulZC requested a review from nseidle November 25, 2025 15:06
@nseidle
Copy link
Member

nseidle commented Dec 1, 2025

Next time, more discrete PRs please. Overall, looks very good.

@nseidle nseidle merged commit b370bf6 into release_candidate Dec 1, 2025
@PaulZC PaulZC deleted the pcUpdates_ntripServer_CasterEnabled branch December 2, 2025 07:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants