Ryan Malloy cb77b18a9c Add full downlink demo: PCM telemetry + crew voice on one carrier
Assembles the complete Apollo USB downlink signal from individual blocks:
PCM frames on 1.024 MHz BPSK + crew voice on 1.25 MHz FM, both PM-modulated
onto a single complex carrier. Receives and splits into decoded PCM frames
and recovered voice audio.

Clean: 399/402 frames, 8s voice. At 25 dB SNR: 395/402 frames.
2026-02-22 18:06:22 -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%