Ryan Malloy 77ddec149c Add audio download script and real signal demo
fetch_apollo_audio.py downloads Apollo 11 audio highlights from Archive.org
and extracts clips using ffmpeg (48 kHz mono WAV). Supports --list, --clip,
--all with idempotent downloads and progress reporting.

real_signal_demo.py auto-discovers downloaded clips and runs them through the
full USB downlink TX/RX chain (PCM telemetry + FM voice), saving recovered
audio for comparison. Falls back to the bundled demo clip if no downloads exist.

Also adds .gitignore to keep large audio files out of the repo while preserving
the small apollo11_crew.wav demo clip.
2026-02-24 14:15:23 -07:00

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 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

# 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

License

MIT

Description
Apollo Unified S-Band decoder for GNU Radio 3.10+
Readme 881 KiB
Languages
Python 100%