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.