gr-sarsat-modern/README.md
Ryan Malloy 5867c54de3 feat: port gr-sarsat to GNU Radio 3.10+
Ported from zleffke/gr-sarsat (2018, GNU Radio 3.7):
- Updated Python 2 → Python 3
- Converted XML block definitions to YAML
- Added pyproject.toml for modern packaging
- Preserved original MIT license

Blocks:
- biphase_l_decode_bb: Manchester decoder (decim_block)
- pds_frame_sync: Frame synchronizer with PDU output
- sarp_msg_extract: SARP message splitter/validator
2026-02-11 02:22:28 -07:00

1.4 KiB
Raw Blame History

gr-sarsat-modern

GNU Radio 3.10+ compatible Cospas-Sarsat 406 MHz beacon decoder.

Ported from zleffke/gr-sarsat (2018, GNU Radio 3.7).

Blocks

Block Description
Biphase-L Decoder Decodes Manchester/Biphase-L encoded bit stream
PDS Frame Sync Synchronizes and extracts 72-byte PDS frames
SARP Message Extractor Splits PDS frames into 24-byte SARP messages

Installation

# Install Python package
cd gr-sarsat-modern
pip install -e .

# Copy GRC blocks to GNU Radio
cp grc/*.yml ~/.local/share/gnuradio/grc/blocks/

Signal Chain

RF Input (406 MHz)
    |
    v
[FM Demod] -> [Clock Recovery] -> [Slicer]
    |
    v
[Correlate Access Code - Tag]  (Frame sync: 0x7FF, tag: "pds_sync")
    |
    v
[Biphase-L Decoder]
    |
    v
[PDS Frame Sync]
    |
    v
[SARP Message Extractor]
    |
    +---> valid (sync word OK)
    +---> invalid (sync word mismatch)

Protocol Background

Cospas-Sarsat is the international satellite-based search and rescue system:

  • Frequency: 406.025 MHz
  • Modulation: Phase-modulated carrier, Biphase-L encoded
  • Bit rate: 400 bps
  • Frame structure:
    • 15-bit frame sync (0x7FF)
    • 576-bit PDS frame (3 × 24-byte SARP messages)
    • Each SARP message starts with 0xD60 sync word

License

MIT License - Original work (c) 2018 zleffke