Skip to content

NTRIP Protocol

NTRIP (Networked Transport of RTCM via Internet Protocol) streams RTK correction data from reference stations to rovers over the internet. It is the standard mechanism for delivering RTCM3 corrections to the LC29H(BA) and LC29H(DA).

NTRIP is built on HTTP/1.0 over TCP with three roles:

  • Caster — Receives RTCM3 streams from base stations and redistributes them to clients. Typically listens on port 2101.
  • Server — A base station that pushes RTCM3 data to the caster.
  • Client — A rover that pulls RTCM3 data from a specific mount point and forwards it to the GNSS module over serial.

The client opens a TCP socket, sends an HTTP/1.0 GET request, and reads a continuous binary RTCM3 stream from the response body. No chunked encoding, no keep-alive, no TLS in the original spec (some modern casters support HTTPS).

NTRIP 2.0 adds the Ntrip-Version: Ntrip/2.0 header and uses standard HTTP response codes. NTRIP 1.0 uses ICY 200 OK as the success response.

To discover available mount points:

GET / HTTP/1.0
Host: caster.example.com
User-Agent: NTRIP lc29h
Ntrip-Version: Ntrip/2.0

The caster responds with a source table. Stream entries use the STR prefix:

STR;mountpoint;identifier;format;format_details;carrier;nav_system;network;country;lat;lon;nmea;solution;generator;compression;auth;fee;bitrate;misc

To connect to a specific mount point with Basic authentication:

GET /MOUNT_POINT HTTP/1.0
Host: caster.example.com
User-Agent: NTRIP lc29h
Authorization: Basic base64(username:password)
Ntrip-Version: Ntrip/2.0

On success, the caster responds with ICY 200 OK (NTRIP 1.0) or HTTP/1.1 200 OK (NTRIP 2.0), followed by continuous binary RTCM3 frames.

Virtual Reference Station (VRS) networks require the rover’s approximate position to generate corrections. The client periodically sends GGA sentences to the caster:

$GPGGA,hhmmss.ss,ddmm.mmmmm,N,dddmm.mmmmm,E,q,ss,h.h,a.a,M,g.g,M,t.t,rrrr*hh

RTCM3 messages arriving from the caster use binary framing:

D3 [reserved:6][length:10] [message_data] [CRC24Q:3]
FieldBytesDescription
Preamble10xD3
Reserved + Length26 reserved bits + 10-bit data length (0–1023)
Message DatavariableRTCM3 message payload
CRC3CRC-24Q integrity check
MessageConstellationDescription
1005Base station ARP (ECEF position)
1074GPSMSM4 compact observables
1077GPSMSM7 full observables
1084GLONASSMSM4
1087GLONASSMSM7
1094GalileoMSM4
1097GalileoMSM7
1124BeiDouMSM4
1127BeiDouMSM7
1230GLONASSCode-phase bias
Base Station (BS variant)
│ RTCM3 over serial
NTRIP Server (STRSVR / rtkbase)
│ TCP to port 2101
NTRIP Caster (rtk2go.com)
│ HTTP/1.0 response
NTRIP Client (lc29h ntrip / QGNSS)
│ RTCM3 over serial
RTK Rover (DA/BA variant)
  1. Resolve caster hostname to IP address
  2. Open TCP connection to caster port (default 2101)
  3. Send HTTP GET with mount point path and Basic auth
  4. Read response status (ICY 200 OK or HTTP/1.1 200 OK)
  5. Begin reading continuous RTCM3 binary stream
  6. Forward each complete RTCM3 frame to the GNSS module via serial
  7. Periodically send GGA position to caster (for VRS networks)
  8. Monitor connection health — reconnect on timeout or TCP error
  9. Close TCP socket when done
ParameterValueNotes
Connection timeout10 secondsTCP connect to caster
Response timeout15 secondsWaiting for ICY 200 OK
Data timeout30 secondsNo RTCM3 data received
GGA send interval10–60 secondsRequired for VRS
Reconnect backoff5 seconds initial, exponentialAvoid overwhelming caster
CasterHostPortAuthNotes
rtk2gortk2go.com2101email (free)Largest public caster
UNAVCOcaster.unavco.org2101variesUS academic network
HKGSlandsd-gncaster.realtime.data.gov.hk2101psi_user/psiHong Kong