sabir
Sabir carries data over a half-duplex HF audio channel. It uses coherent OFDM for data and noncoherent four-tone FSK for robust control and narrow data profiles.
Session negotiation, selective retransmission, turn-taking, disconnect and the host interface are implemented and exercised in simulation. Remote reception has been demonstrated for the narrow-tone beacon. The station has a two-way audio lane and host interface; on-air two-way delivery remains unverified.
Channel occupancy
The nominal audio center is 1500 Hz for OFDM, its synchronization preamble and MFSK control. An even number of contiguous OFDM carriers places that center halfway between the middle two carriers.
The line shows the emitted burst's Welch power spectrum, relative to its peak; ticks mark carrier centers. The spectrum includes the preamble, windowing and clipping filter. A carrier allocation is not an occupied-power bandwidth or a guaranteed radio passband.
The 24-carrier allocation spans 1125 Hz and the 56-carrier allocation spans 2625 Hz. Both share the same center. Their outer carrier centers are half a spacing inside the allocation edges. Wide profiles require receiver passband qualification: an asymmetric low-cut filter can attenuate the lowest carriers, and a common center is not optimal for every radio filter. The transmit filter and its transition region are symmetric about 1500 Hz; spectral skirts and receiver filtering still affect usable bandwidth.
Link entry
CONNECT explicitly names source and destination. The initiator chooses a fresh nonzero 64-bit session identifier and preserves it across retries. Controls from a different session cannot acknowledge current data or terminate the current link.
Each CONNECT or CONNECT_ACK contains a complete 32-bit capability bitmap. Bits 3–7 and 16–21 advertise exact DATA profiles; bits 24–28 advertise fast control, piggyback acknowledgements, loading, compression and beacons. A higher profile does not imply support for a lower one. Unknown bits are ignored. Current profiles need no additional capability exchange. Optional extension blocks support further profile IDs and typed metadata. Unknown optional extensions are ignored; unsupported critical extensions refuse the connection, and every declared extension must arrive before the offer takes effect.
With fast control enabled and no extensions, a wideband caller tries a fast CONNECT first. A compatible listener replies on the same waveform; timeout falls back to floor CONNECT with the same session ID. Narrow profiles and offers with extensions start on the floor. Ten AWGN trials per condition measured 1.921 s setup at +20 dB SNR in 3 kHz, or 21.362 s through fallback at −10 dB, asymmetric +20/−10 dB, or an erased first fast reply. Floor-only setup is 17.940 s with the same 250 ms modeled turnarounds. These are virtual-time results, excluding real audio and host scheduling.
Session identifiers isolate accidental stale traffic. Station identities and records are not authenticated.
Frame structure and synchronization
A DATA transmission consists of a protected control header followed by the described data body. OFDM bodies begin with a paired conjugate chirp preamble; the two correlation peaks separate timing and frequency-offset estimates.
Schematic, not to scale. Header and body each include their waveform's guards.
The standard OFDM grid uses 48 kHz sampling, a 1024-point FFT and 46.875 Hz carrier spacing. A 256-sample cyclic prefix gives 26.667 ms symbols. A 64-sample overlap window reduces discontinuities; its taper reduces the prefix interval available for multipath and timing error.
The standard pilot rule is (r − 2s) mod 6 = 0, where r is the relative carrier index and s the symbol index. Pilots visit the even-indexed carriers every three symbols; the receiver interpolates to the other carriers. The average pilot overhead is one sixth. The Doppler profile uses a denser lattice and a 512-point FFT; sparse profiles trade pilot density for data capacity.
Modulation and coding
OFDM uses Gray-mapped QPSK, 16-QAM, 64-QAM or explicitly negotiated 256-QAM with QC-LDPC coding. Control and narrow data use rate-½, constraint-length-12 tail-biting convolutional coding and CRC-screened list decoding.
Codewords carry a length and CRC, then undergo PN9 whitening and block interleaving. Lower OFDM profiles distribute each codeword across frequency. Higher profiles localize codewords to carrier groups so a frequency-selective failure can trigger a smaller retransmission.
The receiver estimates channel response from pilots and weights soft bit decisions by channel power and noise variance. Retransmissions add soft evidence only when session, generation, profile, codeword geometry and stream offset agree. Per-profile clipping trades peak-to-average power ratio against constellation distortion; filtering follows clipping.
MFSK data tones are 1359.375, 1453.125, 1546.875 and 1640.625 Hz. Seven-tone Costas synchronization blocks bracket runs of at most 56 data symbols. Frequency smoothing and burst amplitude ramps reduce spectral skirts. Repeat profiles increase airtime and combine received tone energies.
ARQ and host interface
DATA identifies an encoding by its transmission generation and identifies its place in the logical stream by a byte offset. ACK reports a cumulative bitmap of decoded codewords for that generation.
A same-encoding retry keeps its generation and offset. A rebuilt frame uses a fresh generation and the same logical offset, allowing a lower profile or smaller frame without delivering bytes twice. A receiver acknowledges complete duplicates and delivers only bytes beyond its committed offset. Each direction maintains independent counters.
Turn requests, handover, acknowledgements and disconnect use the same session identity. Control loss invokes retries and timeout recovery. A receiver-local inactivity deadline defaults to 180 seconds and closes a silent session, with protection for active validated reception and local transmission. Completion within a session does not provide exactly-once application transactions across disconnects.
The host connection carries framed CBOR commands and events, with message delivery progress and link telemetry. Stream records include SHA-256 integrity; compression is used only when negotiated. The digest detects corruption and is checked before decompression and delivery.
Profiles and airtime
The transmitter selects among the peer's accepted profiles using receiver SNR reports, successful frames and stalls. A gear order is a selection policy, not a universal robustness ranking: multipath and Doppler can change which waveform works best.
| Profile | Payload / frame | Body airtime | Floor-control cycle | Fast-control cycle |
|---|
Calculated error-free rates use each profile's default full frame and the actual emitted sample count. A cycle includes the data body's preamble, pilots, FEC, codeword headers, padding and guards; one 44-byte DATA control; one 44-byte ACK; and two modeled 250 ms turnarounds. The numerator counts link payload bytes. These rates exclude connection setup, teardown, retries, host record framing and CPU scheduling. They are airtime bounds, not measured channel throughput.
Narrow profiles use floor control. A narrow receiver does not need to support the wider fast-control waveform. Fast control is negotiated separately.
Connectionless operation
Presence and DATAGRAM headers use 22-byte protected blocks. DATAGRAM explicitly names the data profile and geometry and binds the body with a 64-bit token. Object fragments carry a message identifier, length and SHA-256; optional XOR parity repairs one missing fragment.
The independent narrow-tone beacon has longer symbols for low-rate reporting. It is distinct from MFSK session control and from a bidirectional data exchange.
Simulation and validation
Deterministic tests cover framing, capability parsing, host messages, complete sessions, stale controls, lost acknowledgements, resegmentation and duplicate suppression. Channel simulations exercise AWGN, frequency offset and drift, multipath and Doppler. Each result depends on its payload, channel, SNR reference bandwidth and control policy.
| Profile | Channel | SNR / 3 kHz | Offset / drift | Decoded / sent |
|---|
These are independent four-codeword bursts on the centered waveform, including real-audio conversion. Each frame uses a separately seeded channel realization. Noise is referenced to transmitted active-region mean power before fading over a 3000 Hz bandwidth. The polar workhorse and low-SNR 256-QAM cases are negative controls. Finite success counts do not establish a guaranteed operating threshold.
Reproduce session goodput with python -m hfmodem.sabir.sim.release. The reported virtual duration includes setup, acknowledgements, modeled turnarounds and disconnect. Link payload bytes exclude host record overhead. Spectrum and airtime figures on this page are regenerated from the implementation by python docs/viz/tools/build.py.
Observed results
Narrow-tone beacons transmitted on 40 m were decoded from public receivers 103 and 302 miles away. This demonstrates remote reception of that frame family. DATA profiles, connectionless objects and full sessions do not yet have live-radio exchange evidence.
Masked-carrier re-probing remains incomplete. Two-way station integration has software tests; the named RF result remains beacon reception. See implementation evidence and the protocol specification.