Modulations and Framings

This page lists every value accepted by the modulation and framing fields of a SatYAML transmitter and by the protocol field of a transport, with the component that implements each one and its parameters. The names are exact and case-sensitive: they are dictionary keys in python/core/gr_satellites_flowgraph.py. The "uses" counts are the number of transmitters in the bundled SatYAML files that use each value, which shows which protocols are most common.

Modulations

modulation Demodulator Settings Uses
FSK fsk_demodulator plain FSK 535
FSK subaudio fsk_demodulator subaudio=True: extra low-pass at 2/3 of the baud rate, for telemetry under FM voice 1
AFSK afsk_demodulator requires af_carrier and deviation 58
BPSK bpsk_demodulator coherent (Costas loop) 78
BPSK Manchester bpsk_demodulator manchester=True 0
DBPSK bpsk_demodulator differential=True: non-coherent, no Costas loop 4
DBPSK Manchester bpsk_demodulator differential=True, manchester=True 4

Their behavior and command line options are described in Demodulation and Deframing Options and Demodulator Blocks.

Framings

The deframer classes live in python/components/deframers/. "Options" lists the command line options the deframer adds; see Deframer options.

Standard and widely used protocols

framing Deframer Description Options Uses
AX.25 ax25_deframer (g3ruh_scrambler=False) AX.25: NRZ-I decoding, HDLC flag detection, bit de-stuffing, CRC-16 check. Typical for 1k2 AFSK. none 68
AX.25 G3RUH ax25_deframer (g3ruh_scrambler=True) AX.25 with the G3RUH scrambler, typical for 9k6 FSK. none 223
AX100 ASM+Golay ax100_deframer (mode='ASM') GOMspace NanoCom AX100: 32-bit ASM, Golay(24,12) length header, CCSDS scrambler, RS(255,223). Accepts scrambler. --syncword_threshold, --verbose_fec 74
AX100 Reed Solomon ax100_deframer (mode='RS') AX100 RS mode: G3RUH scrambler, unprotected length byte, RS(255,223). same 6
U482C u482c_deframer Older GOMspace NanoCom U482C: header flags select optional convolutional code, CCSDS scrambler and RS(255,223). Usually 4k8 AFSK. --syncword_threshold, --verbose_fec 9
CCSDS Uncoded ccsds_rs_deframer (rs_en=False) Uncoded CCSDS TM frames. --syncword_threshold, --verbose_rs 0
CCSDS Reed-Solomon ccsds_rs_deframer CCSDS RS(255,223) TM codewords (or shortened), CCSDS scrambler, optional interleaving. Requires RS basis. same 4
CCSDS Concatenated ccsds_concatenated_deframer CCSDS r=1/2 k=7 convolutional inner code plus the RS outer code. Requires RS basis. same 11
AO-40 FEC ao40_fec_deframer Phil Karn's AO-40 FEC: distributed syncword, interleaving, convolutional code, CCSDS scrambler, two interleaved RS(160,128). Used by FUNcube. --syncword_threshold 14
AO-40 FEC short ao40_fec_deframer (short_frames=True) Short-frame variant with one RS codeword (SMOG-P, ATL-1). same 8
AO-40 FEC CRC-16-ARC ao40_fec_deframer (crc=True) Adds a CRC-16 ARC check (SMOG-1). same 4
AO-40 FEC CRC-16-ARC short ao40_fec_deframer (short_frames=True, crc=True) Short frames with CRC-16 ARC (SMOG-1). same 4
AO-40 uncoded ao40_uncoded_deframer Uncoded AO-40 beacon: 512-byte frames with CRC-16. --syncword_threshold 2
NGHam ngham_deframer (decode_rs=True) NGHam protocol. --syncword_threshold 0
NGHam no Reed Solomon ngham_deframer (decode_rs=False) NGHam without RS (FloripaSat-1). same 2
USP usp_deframer Unified SPUTNIX Protocol: CCSDS concatenated frames with custom sync and a DVB-S2-style PLS. --syncword_threshold (13) 119
OpenLST openlst_deframer OpenLST framing with convolutional FEC and PN9 whitening. --syncword_threshold 1
AX5043 ax5043_deframer AX5043 transceiver FEC: convolutional code, 4×4 interleaver, HDLC framing with CRC16-USB. --verbose_crc 1

Mobitex

framing Deframer Description Uses
Mobitex mobitex_deframer Mobitex, used by D-STAR ONE and other satellites with German Orbital Systems radios. 8
Mobitex-NX mobitex_deframer (nx=True) Mobitex-NX, used by TU Berlin's BEESAT and TECHNOSAT. 8
BEESAT-1 mobitex_deframer (nx=True, variant='BEESAT-1') BEESAT-1 variant (not supported by gr-tnc_nx). 2
BEESAT-9 mobitex_deframer (nx=True, variant='BEESAT-9') BEESAT-9 variant. 1

All accept a callsign field and the options --syncword_threshold, --callsign_threshold and --use_tnc_nx.

SMOG family (BME)

framing Deframer Description Uses
SMOG-P RA smogp_ra_deframer Repeat-Accumulate FEC (SMOG-P, ATL-1). Requires frame size (126, 128 or 256). 16
SMOG-1 RA smogp_ra_deframer (variant='SMOG-1') Longer 48-bit syncword and a CRC-16 ARC. 8
MRC-100 RA smogp_ra_deframer (variant='MRC-100') 32-bit syncword, smaller frames, CRC-16-CCITT-FALSE in bytes 2–3. 8
SMOG-P Signalling smogp_signalling_deframer Signalling frames (SMOG-P, ATL-1). 2
SMOG-1 Signalling smogp_signalling_deframer (new_protocol=True) Adds a PRBS marking transitions to TX mode. 1

RA framings use --ra_syncword_threshold; signalling framings use --signalling_syncword_threshold.

Satellite-specific framings

framing Deframer Description Uses
3CAT-1 sat_3cat_1_deframer CC1101 with PN9 scrambler and RS(255,223) payload. 1
AAUSAT-4 aausat4_deframer Similar to CCSDS concatenated coding. 2
AALTO-1 aalto1_deframer CC1125 with PN9 scrambler and CRC-16 CCITT. 1
AISTECHSAT-2 aistechsat_2_deframer Custom CCSDS-like protocol. 3
Astrocast FX.25 NRZ-I astrocast_fx25_deframer (nrzi=True) Non-compliant FX.25 variant (Astrocast 0.1). 2
Astrocast FX.25 NRZ astrocast_fx25_deframer (nrzi=False) Same with NRZ instead of NRZ-I. 2
BINAR-1 binar1_deframer BINAR-1. 2
BINAR-2 binar2_deframer BINAR-2, 3 and 4. 3
DIY-1 diy1_deframer RFM22-based framing. 1
Endurosat endurosat_deframer Endurosat modem. 2
ESEO eseo_deframer AX.25-like protocol with G3RUH-style scrambling and RS(255,239). 2
FORESAIL-1 ax100_deframer (mode='ASM', CCSDS ASM 0x1ACFFC1D) AX100 ASM mode with the CCSDS syncword. 3
FOSSASAT fossasat_deframer FOSSASAT. 2
GEOSCAN geoscan_deframer GEOSCAN-EDELVEIS and Geoscan satellites. Accepts frame size (default 66). 16
Grizu-263A grizu263a_deframer Semtech SX1268 with PN9 scrambler and CRC-16. 1
HADES-D hades_deframer (satellite='HADES-D') HADES-D. 0
HADES-R hades_deframer (satellite='HADES-R') HADES-R, MARIA-G, UNNE-1, HADES-ICM, HYDRA-T. 3
HSU-SAT1 hsu_sat1_deframer HSU-SAT1. 1
IDEASSat ideassat_deframer NRZ-I, MSB-first 1N8 UART-like encoding, HDLC 0x7e flags. 1
K2SAT k2sat_deframer Image transmission with the CCSDS convolutional code and the IESS-308 (V.35) scrambler. 0
LilacSat-1 lilacsat_1_deframer Low-latency decoder for interleaved telemetry and Codec2 voice; has a codec2 output port. 3
Light-1 reaktor_hello_world_deframer (syncword='light-1') Reaktor Hello World framing with a different syncword (Light-1, BlueWalker 3). 7
Lucky-7 lucky7_deframer SiLabs Si4463 with PN9 scrambler and CRC-16. 1
NuSat nusat_deframer ÑuSat: RS(64,60) and CRC-8. 1
OPS-SAT ops_sat_deframer AX.25 frames carrying CCSDS RS codewords. 1
QUBIK qubik_deframer QUBIK. 1
Reaktor Hello World reaktor_hello_world_deframer TI CC1125 with PN9 scrambler and CRC-16. 1
S-NET snet_deframer BCH FEC with interleaving. 4
SALSAT snet_deframer (buggy_crc=False) Like S-NET but without the CRC implementation bugs. 2
SanoSat sanosat_deframer SanoSat-1. 1
SPINO spino_deframer SPINO payload on INSPIRE-Sat7. 2
Swiatowid swiatowid_deframer Image transmission with RS(58,48) and CRC-16 CCITT. 1
TT-64 tt64_deframer QB50 AT03: RS(64,48) and CRC16-ARC. 1
UA01 ua01_deframer QB50 UA01: AX.25-like with two layers of NRZ-I. 1
YUSAT yusat_deframer AX.25-like without bit stuffing, LSB byte order, NRZ-I. 1

A framing with 0 uses is supported by the code but not referenced by any bundled transmitter (for example, HADES-D and K2SAT, which have dedicated example flowgraphs in examples/satellites/).

Transport Protocols

protocol Transport Behavior
KISS kiss_transport Frames carry a KISS byte stream; packets are extracted across frame boundaries. Each packet starts with a KISS control byte, which must be a data frame (low nibble 0) and is removed.
KISS no control byte kiss_transport (control_byte=False) Same, but packets have no control byte. The usual case when KISS is used only for fragmentation (BY70-1, LilacSat-1).
KISS KS-1Q kiss_transport (control_byte=False, header_remove_bytes=3) Removes a 3-byte header from each frame, then KISS without control byte.
TM KISS tm_kiss_transport CCSDS TM frames whose payload, on the listed virtual_channels, is a KISS stream (no control byte). Frames on other virtual channels are dropped.
TM short KISS tm_kiss_transport (short_tm=True) As TM KISS with the short 5-byte TM primary header used by BY02 and other missions.

The NANOLINK transport (nanolink_transport) exists as a GNU Radio block but is not available as a SatYAML protocol.

See Also