-
gengnss v1.2.0
Stablereleased this
2026-10-01 20:20:33 +02:00 | 26 commits to main since this releasegengnss v1.2.0 — GNSS open-service baseband signal generator.
Highlights since v1.1.0
Almanac-driven satellite selection (steps 022a–022c):
- Core (022a): Yuma and SEM almanac parsers (SEM semicircle angles incl. the 0.30 offset; Yuma radians), content sniffing, JSON interchange format, 24 h disk cache, offline mode,
nominal_almanacregistry fallback; visibility math (subpoint, look angles, visible-satellite filter) — PR #38 - CLI (022b):
gengnss almanac [FILE|URL](table /--json/--save/--sem), plus--visibleonrun/showto drive the selection from what an observer actually sees (--lat/--lon/--min-elev/--when) — PR #39 - GUI (022c): Load almanac… dialog — background fetch of CelesTrak Yuma/SEM, local file import (Yuma/SEM/JSON sniffed), optional visibility filter, and one-click apply that pre-checks the healthy/visible satellites in the per-signal palettes (explicit GLONASS frequency channels preserved) — PR #40
GUI polish (steps 020a–021):
- per-signal satellite palettes with real ICD IDs (8-column checkbox grids), GLONASS slot + frequency-channel views with nominal k labels, "One per channel" helper — PR #36
- Save/Load scenario and Generate-scenario buttons, per-satellite power panel, 2×2 constellation panel layout — PRs #32/#33/#35
As always: stdlib-only (no new dependencies), file/baseband output only, no network access at startup, and tests never touch the live network.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
0 downloads
- Core (022a): Yuma and SEM almanac parsers (SEM semicircle angles incl. the 0.30 offset; Yuma radians), content sniffing, JSON interchange format, 24 h disk cache, offline mode,
-
gengnss v1.1.0
Stablereleased this
2026-09-25 08:18:29 +02:00 | 60 commits to main since this releasegengnss v1.1.0 — GNSS open-service baseband signal generator.
Highlights since v0.1.0
Six new Tier-1 generators (backlog steps 016a–018b, all ICD-validated):
- GPS L2C + L5 (Galois CM/CL TDM; XA/XBI I/Q pair + NH codes) — PR #19
- GPS L1C (Weil codes over prime 10223 + TMBOC(6,1,4/33), IS-GPS-800J,
126/126 Table 3.2-2 rows validated) — PR #25 - BeiDou B1C (Weil/Legendre machinery + QMBOC(6,1,4/33)) — PRs #20/#21
- BeiDou B2a (13-stage Gold codes + 00010/100-chip truncated-Weil
secondaries, 126/126 + 63/63 rows validated) — PR #26 - Galileo E5a/E5b (LFSR codes, 200/200 Table 16–19 rows validated +
CS4/CS20/CS100 secondary codes) — PRs #22/#23 - Galileo E1 OS (E1-B/E1-C memory codes + CBOC(6,1,1/11)) — PR #24
- SigV3.1 output format (gensig byte-compatible
sigfiles) — PR #18
Status
12 Tier-1 signals across GPS (4), GLONASS (2), BeiDou (4), Galileo (3).
The only remaining registry Tier-2 signals are the GLONASS CDMA trio
(L1OC/L2OC/L3OC) — their ICD appendices are not publicly available;
documented indocs/done/018b-bds-b2a.md.Artifacts
E2E smoke artifacts from
scripts/e2e_smoke.sh(1 s per band-separated
scenario, seed 2026, all validated by the spec-7.1 self-correlation
harness): scenario sidecar JSONs + SHA256SUMS. The IQ files themselves
(16–32 MB each) are reproducible bit-for-bit from the sidecars.Verification
pytest 191 passed + 1 GUI skip, ruff clean, CI green on Python 3.12 + 3.14.
Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
0 downloads
-
gengnss v0.1.0
Stablereleased this
2026-09-22 21:01:50 +02:00 | 102 commits to main since this releaseFirst public release - GNSS open-service baseband signal generator.
Tier-1 generators (ICD-verified)
- GPS L1 C/A (PRN 1-37): first-10-chips octal verified against IS-GPS-200N Table 3-Ia;
family correlation bound 65 (published C/A Gold bound) - GLONASS L1OF/L2OF FDMA (shared 511-chip ST code, per-slot channels)
- BeiDou B1I/B3I (SV 1-63): ICD tables fetched and cross-validated; register
convention (reciprocal polys) proven by 63/63 phase-pair reproduction and
bit-equality with gnss-sdr replicas
Core features
- Feasibility module: Doppler-aware band-edge verdicts (INCLUDED/CAUTION/EXCLUDED)
- Seeded, reproducible channel draws (Doppler/delay/phase/power) + sidecar scenario
- Streaming generation (memory independent of duration), int8/int16 IQ output
- Spec-7.1 validation harness: receiver-style acquisition gate (negative control)
- CLI: run/scenario/show with presets; Forgejo CI on py3.12 + 3.14
Known limitations
- Modernized signals (L1C/L2C/L5, Galileo, B1C/B2a/B3I, GLONASS CDMA) registered but
generators land in v1.1 (Tier 2) - GUI ships as a skeleton; wiring steps 013/014 pending
- Navigation messages are placeholders (zeros/random bits)
- CI e2e job currently red due to a CI backend issue (local e2e smoke passes:
14/14 signals recovered, SHA256SUMS attached)
E2E reference artifacts (seed 2026, reproducible bit-for-bit)
- gps_l1.i16 (8x C/A), glonass_l1.i16 (4x L1OF), beidou_b1i.i16 (2x B1I)
- sidecar scenario JSONs with drawn channels + SHA256SUMS
Legal: file/baseband output only. Radiating GNSS-like signals requires a
license; do not use to spoof receivers.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- GPS L1 C/A (PRN 1-37): first-10-chips octal verified against IS-GPS-200N Table 3-Ia;