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
65 lines
1.4 KiB
Markdown
65 lines
1.4 KiB
Markdown
# gr-sarsat-modern
|
||
|
||
GNU Radio 3.10+ compatible Cospas-Sarsat 406 MHz beacon decoder.
|
||
|
||
Ported from [zleffke/gr-sarsat](https://github.com/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
|
||
|
||
```bash
|
||
# 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
|