Release Notes — v0.6.3¶
NTRIP v2 Protocol Support¶
Release date: 2026-03-31 Type: Feature — NTRIP v2 (HTTP/1.1) protocol support with auto-negotiation Branch: feat/ntrip-v2
Overview¶
MRTKLIB now supports the NTRIP v2 protocol (RTCM 10410.1) alongside the existing v1 implementation. NTRIP v2 uses standard HTTP/1.1 with chunked transfer encoding, replacing the non-standard ICY/HTTP/1.0 protocol of v1.
By default, new connections use auto-detection: the client sends a v2 request first and transparently falls back to v1 if the caster does not support it. Per-stream version override is available via the ?ver=N query parameter.
What's New¶
NTRIP v2 Client¶
- HTTP/1.1 GET requests with
Host:andNtrip-Version: Ntrip/2.0headers - Automatic parsing of
HTTP/1.1 200 OKresponses (v2) alongsideICY 200 OK(v1) - Chunked transfer decoding for incoming data streams
- Version auto-detection with seamless v1 fallback
NTRIP v2 Server¶
- HTTP/1.1 POST requests replace the legacy
SOURCEcommand - Chunked transfer encoding for outbound data streams
NTRIP v2 Caster¶
- Extended existing v2 response generation to include chunked data delivery
- Per-client version tracking (v1 clients receive raw data, v2 clients receive chunked)
Chunked Transfer Encoding¶
- Header-only codec (
ntrip_chunk.h) with incremental, non-blocking state machine decoder - Stateless encoder for outbound chunk framing
- HTTP header helpers for status code extraction and header lookup
URL Percent-Encoding¶
decodetcppath()now decodes%XXsequences in user and password fields- Enables passwords containing
@(%40),:(%3A), and other special characters
Version Selection¶
- Auto (default): Try v2, fall back to v1 on failure or ICY response
?ver=1: Force NTRIP v1 (original behavior)?ver=2: Force NTRIP v2 (HTTP/1.1)strsetntripver()API for setting the global default version
Documentation¶
- New NTRIP Streams guide (
docs/guide/ntrip.md) covering path format, version selection, TLS tunnel setup with stunnel/socat, and troubleshooting
Files Added¶
| File | Description |
|---|---|
src/stream/ntrip_chunk.h | Header-only chunked transfer codec and HTTP helpers |
tests/utest/t_ntrip.c | 17 unit tests for chunked codec and HTTP helpers |
docs/guide/ntrip.md | NTRIP streams user guide |
Files Changed¶
| File | Change |
|---|---|
src/stream/mrtk_stream.c | v2 protocol support: struct extensions, request/response handlers, chunked data path, URL decoding, version negotiation |
include/mrtklib/mrtk_stream.h | strsetntripver() declaration |
CMakeLists.txt | Version 0.6.2 -> 0.6.3; t_ntrip test target |
CHANGELOG.md | v0.6.3 entry |
README.md | v0.6.3 in roadmap |
mkdocs.yml | NTRIP Streams guide in navigation |
Test Results¶
63/63 tests pass (62 existing + 1 new utest_t_ntrip; no regressions).