init: Apollo Unified S-Band decoder for GNU Radio 3.10+
Project scaffold for decoding Apollo USB signals: - 2287.5 MHz downlink with PM/FM modulation - 1.024 MHz BPSK subcarrier (PCM telemetry) - 1.25 MHz FM subcarrier (voice) - 128-word PCM frames at 50 fps Based on NAA Course A-624 Study Guide (1965) and Virtual AGC.
This commit is contained in:
commit
425a6357cc
82
README.md
Normal file
82
README.md
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
# gr-apollo
|
||||||
|
|
||||||
|
GNU Radio 3.10+ out-of-tree module for decoding **Apollo Unified S-Band (USB)** telecommunications signals.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
The Apollo Unified S-Band system was the primary communication link between the spacecraft and Earth during the Apollo missions (1967-1972). This module implements GNU Radio blocks to decode these signals, enabling:
|
||||||
|
|
||||||
|
- Reception of Apollo-era recordings
|
||||||
|
- Integration with the [Virtual AGC](https://www.ibiblio.org/apollo/) emulator
|
||||||
|
- Educational exploration of 1960s space communications
|
||||||
|
|
||||||
|
## Signal Specifications
|
||||||
|
|
||||||
|
| Parameter | Value |
|
||||||
|
|-----------|-------|
|
||||||
|
| Downlink Frequency | 2287.5 MHz |
|
||||||
|
| Uplink Frequency | 2106.40625 MHz |
|
||||||
|
| Coherent Ratio | 240/221 |
|
||||||
|
| PM Peak Deviation | 0.133 rad (7.6°) |
|
||||||
|
| PCM Subcarrier | 1.024 MHz BPSK |
|
||||||
|
| PCM Bit Rate | 51.2 kbps (high) / 1.6 kbps (low) |
|
||||||
|
| Voice Subcarrier | 1.25 MHz FM |
|
||||||
|
| Frame Length | 128 words × 8 bits @ 50 fps |
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Using uv (recommended)
|
||||||
|
uv pip install -e .
|
||||||
|
|
||||||
|
# Install GRC blocks
|
||||||
|
cp grc/*.yml ~/.local/share/gnuradio/grc/blocks/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Signal Chain
|
||||||
|
|
||||||
|
```
|
||||||
|
RF 2287.5 MHz
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
┌─────────────┐
|
||||||
|
│ Carrier PLL │ ◄── 240/221 coherent recovery
|
||||||
|
└─────────────┘
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
┌─────────────┐
|
||||||
|
│ PM Demod │ ◄── 0.133 rad peak deviation
|
||||||
|
└─────────────┘
|
||||||
|
│
|
||||||
|
├────────────────────┬──────────────────┐
|
||||||
|
▼ ▼ ▼
|
||||||
|
┌──────────┐ ┌──────────┐ ┌──────────┐
|
||||||
|
│ 1.024MHz │ │ 1.25 MHz │ │ Ranging │
|
||||||
|
│ BPSK │ │ FM │ │ PRN │
|
||||||
|
└──────────┘ └──────────┘ └──────────┘
|
||||||
|
│ │
|
||||||
|
▼ ▼
|
||||||
|
┌──────────┐ ┌──────────┐
|
||||||
|
│ PCM Sync │ │ Voice │
|
||||||
|
│ 51.2kbps │ │ 300-3kHz │
|
||||||
|
└──────────┘ └──────────┘
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
┌──────────┐
|
||||||
|
│ 128-word │
|
||||||
|
│ Demux │
|
||||||
|
└──────────┘
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Telemetry
|
||||||
|
```
|
||||||
|
|
||||||
|
## References
|
||||||
|
|
||||||
|
- [Virtual AGC Project](https://www.ibiblio.org/apollo/)
|
||||||
|
- [NASA Technical Reports](https://ntrs.nasa.gov/)
|
||||||
|
- NAA Course A-624: Telecommunication Systems Study Guide (1965)
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT
|
||||||
33
pyproject.toml
Normal file
33
pyproject.toml
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
[project]
|
||||||
|
name = "gr-apollo"
|
||||||
|
version = "0.1.0"
|
||||||
|
description = "Apollo Unified S-Band (USB) decoder for GNU Radio 3.10+"
|
||||||
|
readme = "README.md"
|
||||||
|
license = "MIT"
|
||||||
|
requires-python = ">=3.10"
|
||||||
|
authors = [
|
||||||
|
{name = "Ryan Malloy", email = "ryan@supported.systems"},
|
||||||
|
]
|
||||||
|
keywords = ["gnuradio", "sdr", "apollo", "usb", "unified-s-band", "nasa", "space"]
|
||||||
|
classifiers = [
|
||||||
|
"Development Status :: 3 - Alpha",
|
||||||
|
"Intended Audience :: Developers",
|
||||||
|
"Programming Language :: Python :: 3",
|
||||||
|
"Topic :: Communications :: Ham Radio",
|
||||||
|
"Topic :: Scientific/Engineering :: Astronomy",
|
||||||
|
]
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
"numpy",
|
||||||
|
]
|
||||||
|
|
||||||
|
[project.urls]
|
||||||
|
"Homepage" = "https://git.supported.systems/rf/gr-apollo"
|
||||||
|
"Virtual AGC" = "https://www.ibiblio.org/apollo/"
|
||||||
|
|
||||||
|
[build-system]
|
||||||
|
requires = ["setuptools>=61.0"]
|
||||||
|
build-backend = "setuptools.build_meta"
|
||||||
|
|
||||||
|
[tool.setuptools.packages.find]
|
||||||
|
where = ["src"]
|
||||||
18
src/apollo/__init__.py
Normal file
18
src/apollo/__init__.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
"""
|
||||||
|
gr-apollo: Apollo Unified S-Band decoder for GNU Radio 3.10+
|
||||||
|
|
||||||
|
Decodes Apollo-era Unified S-Band (USB) telecommunications:
|
||||||
|
- 2287.5 MHz downlink with PM/FM modulation
|
||||||
|
- 1.024 MHz BPSK subcarrier (PCM telemetry @ 51.2 kbps)
|
||||||
|
- 1.25 MHz FM subcarrier (voice)
|
||||||
|
- 128-word PCM frames at 50 fps
|
||||||
|
"""
|
||||||
|
|
||||||
|
__version__ = "0.1.0"
|
||||||
|
|
||||||
|
# Block imports will be added as they are implemented
|
||||||
|
# from .pm_demod import pm_demod
|
||||||
|
# from .bpsk_subcarrier_demod import bpsk_subcarrier_demod
|
||||||
|
# from .pcm_frame_sync import pcm_frame_sync
|
||||||
|
# from .pcm_demux import pcm_demux
|
||||||
|
# from .fm_voice_demod import fm_voice_demod
|
||||||
Loading…
x
Reference in New Issue
Block a user