Why MOSAIC
Most digital modes assume one transmitter at a time, or a scheduler that coordinates the rest. MOSAIC is built for the opposite case: uncoordinated stations sharing one bandpass, the way a real pile-up or a busy calling frequency actually behaves.
- Shared channelNo time slots. No master station. Access signatures separate users.
- CRC-gated cancellationA receiver only subtracts a station after a CRC-valid decode. Mistakes do not poison the residual.
- Two band familiesMOSAIC-UHF for wide SDR channels; MOSAIC-HF for ordinary 2.8 kHz SSB audio paths.
Alpha status at a glance
| Capability | Status | Evidence |
|---|---|---|
| UHF multi-user on air (two independent transmitters) | Proven | 12/12 logical stations recovered on radiated capture |
| UHF keyboard / procedural QSO | Proven | Bidirectional lab QSO (bladeRF/HackRF ↔ B210) at 431.200 MHz |
| UHF continuous live demod keep-up | Proven | Operator path keeps up with continuous stream (offline keep-up check <1× wall) |
| Operator web panel (TX inhibit, health) | Shipped | mosaic_modem.py --ui-port |
| HF audio path (DAC → analogue → ADC) | Proven | Byte-exact single-user loopback through real converters |
| HF continuous realtime decode | Proven | ~0.10× realtime, zero backlog on audio profile |
| HF ITU-R F.1487 single-user | Proven | Simulated channels to measured Eb/N0 cliff |
| HF multi-user under fading | Limited | Saturates ~1–2 stations; SIC channel tracking in progress |
| On-air HF contact | Not yet | No HF rig path closed on this programme |
Simulation and UHF lab results do not establish ionospheric HF performance. Licensed operators remain responsible for emissions. Packet airtime (not UI latency) sets the QSO floor: ~2.6 s on UHF, ~40 s on HF.
Measured snapshots
Documentation
Everything linked below is inside this site tree — safe to host as a static URL.