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
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
Description
Cospas-Sarsat 406 MHz beacon decoder for GNU Radio 3.10+ (ported from zleffke/gr-sarsat)
Languages
Python
100%