Protocol Reproduction Specs
Full, reproduction-grade specifications for every native (in-repo, no external binary) codec/protocol in Rafe. Each document is self-contained: the complete algorithm, every constant/polynomial/generator/table, the frame and symbol structure, and step-by-step encode + decode — enough to reimplement the protocol from scratch without reading the source.
The depth/style benchmark is ../rvqvoice.md.
New to these? Three on-ramps, by background: the Beginner's Tour walks every protocol here from zero, easiest first, assuming no radio or maths background at all; The Mathematics of the Digital Modes is the intermediate guide — every operating principle (matched filters, CRCs, Reed–Solomon, Viterbi, LDPC, …) derived and pinned with one worked numeric example each; and Protocol Commonalities is an engineer's guided tour of the shared building blocks (modulation, sync, CRC, FEC, interleaving, …), built up from the simplest concepts (OOK/FSK) to the full stack, that these per-protocol specs then instantiate in detail.
WSJT-X weak-signal family (app/radio/ftx, wsprx, jtx)
- FT8 / FT4 — 174/91 LDPC, Costas sync, 8-GFSK / 4-GFSK
- WSPR — K=32 convolutional, 4-FSK, 162 symbols
- JT4 — K=32 convolutional, 4-FSK
- JT65 — Reed–Solomon(63,12) over GF(64), 65-FSK
- FST4 / FST4W — 240/101 & 240/74 LDPC, 4-GFSK
- Q65 — QRA65 non-binary code over GF(64), 65-FSK
- WSJT-X 77-bit message packing — the shared payload codec
fldigi keyboard/image family
- RTTY — Baudot 45.45-baud FSK
- PSK31 / PSK63 / PSK125 — DBPSK + varicode
- MFSK16 / MFSK32 — convolutional + IZ8BLY varicode + interleaver
- DominoEX — IFK+ 18-tone, nibble varicode
- Thor — MFSK + FEC + IFK+ + secondary channel
- Olivia / Contestia — Walsh/Hadamard block code
- MT63 — 64-carrier Walsh-spread DBPSK OFDM + interleave
- THROB — dual-tone pulse keying
- Feld Hell — on/off raster facsimile
LoRa / SDR family (app/radio/lorasdr, loracss)
- LoRa PHY — Semtech CSS symbol↔︎byte codec
- LoRa chirp modem + CFO/STO sync — IQ modem + synchroniser
- Meshtastic — mesh header + AES-CTR + protobuf
- Audio-band CSS (loracss) — SSB-band chirp mode
HF keyboard & data
- JS8 — FT8-derived 8-FSK, LDPC(174,87), CRC-12, JSC text (keyboard-to-keyboard)
- CW / Morse — soft-decision Goertzel front end + duration-HMM Viterbi decoder
- ARDOP — HF ARQ modem: 4FSK/PSK/QAM + RS/CRC, ISS/IRS state machine, TNC
- Mercury OFDM — clean-room OFDM+LDPC HF data modem (17 configs) + ARQ
Digital voice & trunked PMR
- RVQ-Voice — native RVQ digital voice (the template document)
- M17 — 4-FSK RRC, conv+Golay coding, LSF, Codec2 voice
- P25 Phase 1 — C4FM, Golay/trellis FEC, NID/TSBK, IMBE voice
- IMBE parameter codec — the 88-bit P25 frame ↔︎ MBE parameters (fully-native P25 voice)
- AMBE parameter codec — the DV-family voice frame ↔︎ MBE parameters: half-rate AMBE+2 (DMR/NXDN/YSF) + full-rate AMBE (D-STAR)
- MBE vocoder — Multi-Band Excitation analysis/synthesis: the IMBE/AMBE model layer (replaces mbelib)
- DMR — ETSI TS 102 361 Tier I/II: C4FM, BPTC(196,96), Golay(20,8) + RS-masked LC, CSBK, AMBE+2 voice superframe
- D-STAR — JARL DV: GMSK 4800, (7,5) K=3 header FEC + X.25 CRC, full-rate AMBE + slow-data message
- YSF — Yaesu System Fusion DN: C4FM, FICH (Golay+conv) + whitened DCH callsign, AMBE+2 voice
- NXDN — Icom IDAS / Kenwood NEXEDGE: 6.25/12.5 kHz 4FSK, LICH + punctured-conv SACCH/FACCH1, AMBE+2 voice
- TETRA — π/4-DQPSK downlink, RCPC + RM(30,14), colour-code scrambling, MAC
- FreeDV — libcodec2 wrapper today + native OFDM/LDPC blueprint (700D)
Broadcast
- DAB / DAB+ — Eureka-147 Mode I OFDM/DQPSK, FIC/MSC, RS superframe
- RDS — 57 kHz subcarrier biphase/DBPSK, group decode (PS/RadioText + CT/AF)
Image & video
- HamDRM (DSSTV) — DRM-narrowband COFDM + MLC FEC, DAB-MOT/EasyPal images
- WEFAX — HF radiofax: FM subcarrier 1500/2300 Hz, 120 LPM / IOC 576
- DATV — DVB-S (RS+Viterbi/QPSK) & DVB-S2 (BCH+LDPC), MPEG-TS
Satellites
- NOAA APT — 2400 Hz AM line-scan fax → image
- Meteor-M LRPT — OQPSK → CCSDS (Viterbi + RS(255,223) + CADU) → MSU-MR image
- Inmarsat-C STD-C / EGC — BPSK 1200, K=7 Viterbi + descramble/de-interleave, UW frame sync, SafetyNET/EGC layer
- HRPT & AHRPT — NOAA Manchester minor frames; MetOp/FengYun AVHRR over the CCSDS core
- xRIT — LRIT/HRIT file layer (GOES/Meteosat/GK-2A): header chain + Space-Packet fragmentation
Packet, paging, surveillance & marine
- APRS — AFSK1200 (Bell 202) + AX.25 HDLC
- Marine DSC — ITU-R M.493 10-bit symbols, DX/RX time diversity, VHF ch70 AFSK modem
- POCSAG — 2-FSK pager, BCH(31,21) codewords
- ADS-B / Mode S — 1090 MHz PPM, CRC-24, CPR position
- ACARS — ARINC-618 message layer + Inmarsat AERO framing
- VDL Mode 2 — aviation VHF datalink: D8PSK 31.5 kbit/s, RS(255,249), AVLC/HDLC + ACARS-over-AVLC
- AIS — 9600-baud GMSK, HDLC, AIVDM 6-bit armour
- NAVTEX — SITOR-B / CCIR 476 constant-ratio FEC
- ISM (rtl_433-style) — config-driven OOK/FSK device catalogue
Related: the RS-BA1 network protocol spec documents the Icom UDP remote-control + waterfall transport used by the client/server.
Native but not yet given a full spec here: FreeDV native (blueprint above, not yet implemented).