Skip to main content

ntrip-rtcm3-to-rtcm2p3

An NTRIP receiver + LAN rebroadcaster that also converts an RTCM 3.x reference stream into RTCM 2.3 DGPS corrections, so that legacy single-band receivers that only understand RTCM 2.3 (e.g. the u-blox 7) can benefit from a modern RTCM3-only correction network.

Built incrementally with a full test suite; every conversion stage is cross-checked against independent implementations (see the Validation docs).

📖 Documentation (Read the Docs)

Why

Modern correction networks (e.g. Geoscience Australia's AUSCORS) broadcast RTCM 3.x only. A u-blox 7 / NEO-7 accepts RTCM 2.3 DGPS corrections but has no RTCM3 decoder. No off-the-shelf tool converts RTCM3 → RTCM 2.3 (RTKLIB's str2str can only emit RTCM3; the BKG NTRIP Client (BNC) only decodes RTCM2). RTCM 2.3 Type 1 messages are derived pseudorange corrections, not a reformat — they must be computed from the base station's observations, its known position, and satellite positions from broadcast ephemeris.

Pipeline

        obs + base position                 broadcast ephemeris
   (RTCM3 MSM7 1077, 1006)                 (RTCM3 1019, separate mount)
             │                                       │
             ▼                                       ▼
      decode pseudoranges  ───────────────►  satellite position + clock
             │                                       │
             └───────────────┬───────────────────────┘
                             ▼
                   per-SV PRC / RRC  (DGPS reference-station math)
                             ▼
                   encode RTCM 2.3 Type 1 / 3 (parity, IOD, scaling)
                             ▼
              serve as a local NTRIP mount alongside the raw RTCM3

Install

The packages are published as a signed apt repository per Debian suite: trixie, forky and sid. They are Architecture: all, so the one build serves every architecture. Put your suite's name in place of trixie below.

sudo install -d -m0755 /etc/apt/keyrings
curl -fsSL https://mith.ro/ntrip-rtcm3-to-rtcm2p3/ntrip-rtcm3-to-rtcm2p3.gpg | sudo tee /etc/apt/keyrings/ntrip-rtcm3-to-rtcm2p3.gpg > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/ntrip-rtcm3-to-rtcm2p3.gpg] https://mith.ro/ntrip-rtcm3-to-rtcm2p3/trixie/ ./" \
  | sudo tee /etc/apt/sources.list.d/ntrip-rtcm3-to-rtcm2p3.list
sudo apt update
sudo apt install ntrip-rtcm3-to-rtcm2p3

The repository is signed with the key 36E5 D845 2935 9CFE 8874 F1F1 44EA 5E20 5EE9 F42E (gpg --show-keys /etc/apt/keyrings/ntrip-rtcm3-to-rtcm2p3.gpg shows it). It also carries python3-pyrtcm and python3-pynmeagps, which Debian doesn't have, so apt finds every dependency.

ntrip-rtcm3-to-rtcm2p3 is the systemd service; python3-ntrip-rtcm3-to-rtcm2p3 alone is the library and the command. Set the upstream caster, credentials and bind addresses in /etc/ntrip-rtcm3-to-rtcm2p3/env, then sudo systemctl restart ntrip-rtcm3-to-rtcm2p3. See the usage documentation.

Development

uv run --extra dev pytest        # test suite
uv run --extra dev ruff check .  # lint

The Debian packages workflow runs the tests in each suite's container, then builds the packages with mithro/apt-repo-action's shared build-deb action, install-tests them (packaging/install-test.sh) and, from main, publishes them. The version comes from git describe plus the suite's ~deb<R> (0.1.0.post25~deb13; nothing for sid). There is no committed debian/changelog: the build writes one with just its own entry, and git ignores it.

License

Apache-2.0. See LICENSE.

Metadata

Release files for ntrip-rtcm3-to-rtcm2p3 0.1.0.post31

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ntrip-rtcm3-to-rtcm2p3 0.1.0.post31
File Size Uploaded
ntrip_rtcm3_to_rtcm2p3-0.1.0.post31.tar.gz 24.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ntrip-rtcm3-to-rtcm2p3 0.1.0.post31
File Interpreter ABI Platform
ntrip_rtcm3_to_rtcm2p3-0.1.0.post31-py3-none-any.whl Python 3 none any Details

Total release size: 52.9 kB

Release files / ntrip_rtcm3_to_rtcm2p3-0.1.0.post31.tar.gz

Download URL ntrip_rtcm3_to_rtcm2p3-0.1.0.post31.tar.gz
Size 24.4 kB
Tags Source
SHA-256 checksum
How to use checksums
ee99845a7454624d8a347f2cf72e0a95e03ee2b2d810b6711e7fa790de662405
BLAKE2b-256 checksum
How to use checksums
848d7414776ebda358ff4d4aa1c061666827c47ee21e25edcbfb9b947a1e95de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.

Transparency log

Release files / ntrip_rtcm3_to_rtcm2p3-0.1.0.post31-py3-none-any.whl

Download URL ntrip_rtcm3_to_rtcm2p3-0.1.0.post31-py3-none-any.whl
Size 28.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
be1b725e5a828de01ec760e3427bd4ce7dd2207db9b9e0e40049e468968c1d78
BLAKE2b-256 checksum
How to use checksums
2c07468d2a19febc5ce4d1c731d5c27febba8015c8e31fb38ee2265fc06d7363
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page