Deframer Blocks
Deframer components take the soft symbols produced by a demodulator and turn them into frames. They detect frame boundaries (syncwords or HDLC flags), then perform whatever the protocol needs: descrambling, deinterleaving, Viterbi decoding, Reed-Solomon decoding, CRC checking. The output is a message port out with one PDU per valid frame. This page covers the deframer blocks found under Satellites > Deframers in GNU Radio Companion, with details for the most widely used ones.
Common Behavior
- Input: a
floatstream of soft symbols (positive = 1), as produced by the demodulator blocks. - Output: PDUs on the
outmessage port. Invalid frames (failed FEC or CRC) are dropped. - Syncword threshold: most deframers have a Syncword threshold parameter, the number of bit errors allowed in the syncword.
- Command line options: every block accepts a string of
gr_satellites-style options, used for options that are not block parameters (for example"--verbose_rs").
Warning: In GRC, almost all deframer blocks default the Syncword threshold parameter to 0 (OpenLST defaults to 2, QUBIK to 4). The command line tool uses larger defaults (for example 4 for CCSDS and AX100, 8 for AO-40 FEC, 13 for USP; see Syncword thresholds by framing). A threshold of 0 needs a perfect syncword, so a GRC flowgraph may decode fewer frames than
gr_satellitesuntil you raise it. Because the block always passes this parameter,--syncword_thresholdin Command line options has no effect.
AX.25 Deframer
Implements AX.25: NRZ-I decoding, optional G3RUH descrambling, HDLC flag detection, bit de-stuffing and CRC-16 checking. Frames up to 10000 bytes are accepted.
| Parameter | Meaning |
|---|---|
| G3RUH scrambling | Enable G3RUH descrambling (typical for 9k6 FSK, not used at 1k2 AFSK). |
satellites.components.deframers.ax25_deframer(g3ruh_scrambler=True, options="")
Example: examples/components/ax25_deframer.grc decodes 9k6 FSK packets from US01.
GOMspace AX100 Deframer
Implements the two modes of the GOMspace NanoCom AX100 transceiver:
| Mode | Structure |
|---|---|
| ASM+Golay | 32-bit ASM syncword, packet length protected by a Golay(24,12) code, payload with RS(255,223) (CCSDS) and the CCSDS synchronous scrambler. |
| Reed Solomon | G3RUH scrambler, a first byte with the payload length sent unprotected, payload with RS(255,223). |
| Parameter | Default | Meaning |
|---|---|---|
| Mode | Reed Solomon | RS or ASM. |
| Scrambler | CCSDS | ASM mode only: CCSDS or none. |
| Syncword threshold | 0 | Bit errors in the 32-bit syncword. |
--verbose_fec prints decoder messages. Example: examples/components/ax100_deframer.grc decodes 1KUNS-PF (ASM+Golay) and TW-1B (Reed Solomon).
GOMspace U482C Deframer
The older NanoCom U482C uses a format similar to AX100 ASM+Golay; header flags indicate whether the payload uses the CCSDS r=1/2 k=7 convolutional code, the CCSDS scrambler and RS(255,223). The modem transmits 4800 baud GMSK as AFSK audio. Single parameter: Syncword threshold. Example: examples/components/u482c_deframer.grc (a GOMX-1 packet).
AO-40 FEC Deframer
Phil Karn's (KA9Q) FEC for the AO-40 beacon, used by the FUNcube satellites and others: a distributed syncword, interleaving, the CCSDS convolutional code, the CCSDS scrambler and two interleaved RS(160,128) codewords.
| Parameter | Meaning |
|---|---|
| Syncword threshold | Bit errors allowed in the distributed syncword. |
| Use short frames (SMOG-P) | The short-frame variant with a single RS codeword (SMOG-P, ATL-1). |
| Use CRC-16 ARC | Check a CRC-16 ARC after decoding (SMOG-1). Frames failing it are dropped. |
Example: examples/components/ao40_fec_deframer.grc decodes an AO-73 packet after BPSK demodulation.
CCSDS Deframers
Three blocks implement parts of the CCSDS TM Synchronization and Channel Coding Blue Book:
| Block | Coding |
|---|---|
| CCSDS Uncoded Deframer | Uncoded TM frames after the 32-bit ASM 0x1ACFFC1D. |
| CCSDS Reed-Solomon Deframer | RS(255,223) codewords, possibly shortened and interleaved. |
| CCSDS Concatenated Deframer | The above plus the r=1/2 k=7 convolutional inner code. |
| Parameter | Default | Meaning |
|---|---|---|
| Frame size (bytes) | 223 | Frame size after RS decoding (without parity). |
| Precoding | None | differential adds a differential decoder before deframing, to resolve the BPSK 180° ambiguity. |
| Reed-Solomon basis | Dual | conventional or dual (not in the Uncoded block). CCSDS specifies dual, but conventional is common. |
| Reed-Solomon interleave depth | 1 | Number of interleaved RS codewords (not in the Uncoded block). |
| Scrambler | CCSDS | Enable or disable the CCSDS synchronous scrambler. |
| Convolutional code | CCSDS | Concatenated only: CCSDS, NASA-DSN, CCSDS uninverted, NASA-DSN uninverted (polynomial order and branch inversion). |
| Syncword threshold | 0 | Bit errors in the ASM. |
How it works: the RS deframer slices the symbols, optionally applies the differential decoder, searches for the ASM, extracts frame_size + 32 × interleaving bytes (only frame_size when RS is disabled), descrambles and RS-decodes. The concatenated deframer runs two Viterbi decoders and two RS deframers in parallel, one on the stream delayed by one symbol, so that it locks regardless of the symbol pair alignment of the convolutional code.
Example: examples/components/ccsds_deframer.grc decodes BY70-1: concatenated coding, 114-byte frames and differential precoding.
Other Deframer Blocks
The remaining blocks implement satellite-specific framings. Their names match the SatYAML framings described in Modulations and Framings. A few have extra parameters:
| Block | Extra parameters |
|---|---|
| Mobitex Deframer | Use Mobitex-NX. No threshold parameter; use --syncword_threshold and --callsign_threshold in the options. |
| SMOG-P RA Deframer | Frame size (126, 128 or 256), Protocol (SMOG-P, SMOG-1, MRC-100). |
| SMOG-P Signalling Deframer | Protocol (old/new). |
| NGHam Deframer | Reed-Solomon decoding on/off. |
| HADES Deframer | Satellite (HADES-D or HADES-R). |
| GEOSCAN Deframer | Frame size. |
| Light-1 Deframer | None (Reaktor Hello World with the Light-1 syncword). |
Blocks without a threshold parameter (AX.25, AX5043, BINAR-1, BINAR-2, DIY-1, HSU-SAT1, IDEASSat, Mobitex, UA01, YUSAT) use their constructor defaults or the command line options.
Building a Chain
A complete receive chain in GRC is: source → (optional channel filter) → demodulator → deframer → data sink. For example, 9k6 G3RUH AX.25 from an FM audio WAV file:
Wav File Source ─► FSK Demodulator ─► AX.25 Deframer ─► Message Debug (print)
baud 9600 G3RUH: True
IQ: False
The Satellite decoder block builds the same demodulator and deframer automatically from a SatYAML file.