Skip to content

ProjectUltra v0.6.2-pre-alpha

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Nov 20:35

Pre-alpha. Connections set up in about 14 s instead of 24, burst groups are no longer received with a timing error, and two faster modulation rungs are used on strong channels.

Upgrade both stations. This release is not compatible over the air with 0.6.1: the connection request is now a shorter frame, and a 0.6.1 station cannot read it. Run the same build on both stations.

Faster connection setup

Connecting took 24 s in every simulator run, and most of that was the connection request and its acknowledgement, each padded to four codewords at the most robust rate. The destination callsign, which no receiver used (stations are addressed by a short hash), is gone, so each of these frames now fits in two codewords. The receiver also answers a PING as soon as it has heard it instead of waiting for a full frame slot. Setup now takes about 14 s on clean and moderately fading channels and 15–17 s at the lowest SNRs. Data starts flowing at about 16 s instead of 26 s.

Burst timing fix

The receiver finds each burst group by its two identical training symbols. On strong signals it stopped searching on the rising edge of the correlation peak, about 0.7 ms before the true start, and every frame in that group was then cut 0.7 ms early. About a third of the groups on strong channels lost 6–8 dB of signal quality that way. The receiver now places the start with a sharper matched filter. On fading channels this alone is worth 10–13 % in transfer speed.

Two faster rungs

16QAM R3/4 (6375 bps raw) and 32QAM R2/3 (7083 bps raw) join the automatic rate ladder above 16QAM R2/3 (5667 bps). The rate controller judges each rung from the measured signal quality of recent frames. That reading depends on the modulation it was taken on, so it is now converted between modulations, and the controller can tell when a denser one would decode. The new rungs need strong channels. In the simulator the link uses 16QAM R3/4 from about 15 dB and 32QAM R2/3 at 20 dB on a clean channel; on ITU Good fading, mainly at 25 dB and above. On Moderate fading they are rarely used.

A lost first burst no longer kills a link with a dial offset

If the first OFDM burst after connecting could not be verified, the receiver reset its frequency-offset estimate to 0 Hz instead of keeping the value measured during the handshake. With a 7 Hz dial offset the link then never recovered. It now falls back to the handshake measurement.

Simulator results

Software channel simulator, two complete stations, ITU-R F.1487 fading, 7.3 Hz dial offset between the radios, full protocol in real time. Mean of 5 seeds, before and after the timing fix and the new rungs:

Channel 15 dB 20 dB 25 dB 30 dB
AWGN 3.6 → 3.9 kbps 4.3 → 5.1 kbps 4.3 → 5.1 kbps —
ITU Good (0.1 Hz / 0.5 ms) — 2.7 → 3.2 kbps 3.7 → 4.3 kbps 3.8 → 4.3 kbps
ITU Moderate (0.5 Hz / 1 ms) 1.4 → 1.8 kbps 2.2 → 2.4 kbps — —

21 KB files at 15 dB and at 20 dB on the fading channels, 50 KB otherwise. Every transfer was byte-exact. The Moderate gains are within run-to-run spread at 5 seeds. Connection setup is not included in these figures.

Validation status

  • Validated on the software channel simulator and in CI (Linux, macOS, Windows, sanitizers, coverage).
  • Not yet measured on hardware. 32QAM is the rung most sensitive to transmitter distortion (ALC, PA compression).
  • Known issues: on ITU Good at 30 dB, 32QAM loses 10–15 % of frames in the simulator and roughly ties 16QAM R3/4. The recovery-acknowledgement timing issue from 0.6.1 (BUG-BACKSTOP-RACES-RTO) is still open.

If something misbehaves

Set these on both stations:

  • ULTRA_FAST=0 restores the pre-0.6 data path, which also removes the two new rungs.
  • ULTRA_ASYNC_ACK_NOVELTY=0, ULTRA_PAPR_SNR_CORRECTION=0 and ULTRA_CONTROL_WHITEN=0 work as in 0.6.1.

The shorter connection frame and the timing fix have no switch.

Please report problems with the STATS output and, if you can, a diagnostics bundle (GUI Report... button, or ultra_report --create).

Downloads

  • projectultra-<platform>.zip (Linux, macOS, Windows): the operator bundle (ultra_tnc, ultra_gui, ultra, configuration example, docs).
  • Simulator and measurement tools (dev-tools-<platform>.zip) are built by CI for every commit; download them from the workflow run's artifacts.

On macOS, clear the download quarantine once per binary: xattr -d com.apple.quarantine ./ultra_gui.