• v1.2.0 fbe4d01822

    gengnss v1.2.0
    All checks were successful
    ci / test (3.12) (push) Successful in 2m43s
    ci / test (3.14) (push) Successful in 2m29s
    ci / test (3.9) (push) Successful in 2m19s
    Stable

    ykp released this 2026-10-01 20:20:33 +02:00 | 26 commits to main since this release

    gengnss 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_almanac registry fallback; visibility math (subpoint, look angles, visible-satellite filter) — PR #38
    • CLI (022b): gengnss almanac [FILE|URL] (table / --json / --save / --sem), plus --visible on run/show to 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
  • v1.1.0 c69fa7f452

    gengnss v1.1.0
    Some checks failed
    ci / test (3.12) (push) Failing after 21s
    ci / test (3.14) (push) Successful in 1m8s
    Stable

    ykp released this 2026-09-25 08:18:29 +02:00 | 60 commits to main since this release

    gengnss 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 sig files) — 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 in docs/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
  • v0.1.0 3bcc0ba08b

    gengnss v0.1.0
    Some checks failed
    ci / test (3.14) (push) Successful in 1m6s
    ci / test (3.12) (push) Successful in 1m19s
    ci / e2e (push) Failing after 7m39s
    Stable

    ykp released this 2026-09-22 21:01:50 +02:00 | 102 commits to main since this release

    First 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