Skip to content

CardSat v0.9.16

Choose a tag to compare

@prstoetzer prstoetzer released this 15 Jun 19:26
· 17 commits to main since this release

A focused bug-fix release for Manual mode (the no-radio frequency calculator),
correcting the uplink/downlink math when working a linear transponder full
duplex
and holding one leg fixed.

Hardware status. The fix is host-verified: the new frequency math is checked
against an independent round-trip Doppler model across the full range-rate span,
for both inverting and non-inverting transponders, holding the operator on their
own signal to within a few Hz. It has not yet been confirmed on the air. A quick
on-air check (park one leg, work yourself across a pass) would close the loop —
see the note below.


Manual mode: round-trip Doppler when holding one leg fixed (bug fix)

On the Manual screen you fix one leg — the frequency you park on your own radio —
and CardSat shows the frequency to tune the other leg to. For a linear
transponder worked full duplex, the goal is to keep hearing yourself on a
stationary frequency while the satellite moves. The previous math handled each leg
independently (the same satellite-frame convention CardSat uses when it drives a
real radio, where you let the downlink drift and chase it). That is the wrong
convention for the Manual calculator's "park one leg, hear yourself" use: it does
not account for the round trip.

The physics: on a linear bird, where your own signal lands on the downlink depends
on where the satellite heard your uplink. So holding one leg stationary requires
the other leg to cancel both Doppler shifts, not just its own. With the old
per-leg math, the operator's own signal drifted off the fixed leg by:

  • up to ~3 kHz at ±7 km/s when holding the downlink (tuning the uplink), and
  • up to ~10 kHz at ±7 km/s when holding the uplink (tuning the downlink) —
    larger because, on an inverting transponder, the fixed-uplink Doppler and the
    downlink Doppler add rather than partly cancel.

Either was enough to walk you out of an SSB passband mid-pass.

Both directions are now corrected. Two new predictor helpers,
uplinkForFixedDownlink() and downlinkForFixedUplink(), compute the derived leg
from the round trip and hold the operator on their own signal to within a few Hz
across the pass, for both inverting and non-inverting transponders, with
per-satellite calibration applied. Toggle which leg is fixed with u as
before.

Unaffected on purpose:

  • FM birds — the uplink and downlink are independent channels (no shared
    passband), so the plain per-leg Doppler is correct; no round-trip term is
    applied.
  • The Track screen (driving a real radio) — it intentionally fixes a point in
    the satellite passband and Doppler-corrects both legs around it, letting the
    downlink drift on the ground while the operator's knob (or CardSat) follows it.
    That convention is correct for live radio control and is unchanged.

Notes

  • This release changes only Manual-mode display math and the firmware version
    string; nothing else from 0.9.15 is altered.
  • Still worth an on-air confirmation: park one leg on a linear bird (e.g. an
    inverting SSB transponder) and check that you keep hearing yourself on the fixed
    frequency as the pass develops. The math is verified against a round-trip model
    but has not been flown.