Skip to content

Architecture

KP edited this page May 18, 2025 · 1 revision

This page documents the high-level design and data flow of the toc-lp-kit container stack.

⚙️ Component Responsibilities

  • sdr-pipeline

    • Runs rtl_fm tuned to 7.078 MHz USB
    • Pipes raw IQ → audio via sox into PulseAudio null-sink
  • PulseAudio (host)

    • Null-sink js8loop exposes the audio stream for JS8Call
    • Socket shared at /tmp/pulse/native
  • js8call

    • Captures audio from “Monitor of js8loop”
    • Provides GUI and writes JSON decodes to ~/.js8call/decode.log
  • chrony

    • Keeps the system clock accurate via public NTP
    • Ensures JS8Call time-slots align across all nodes

🌐 Networking & IPC

  • All services run in Docker host network mode → share the host’s IP
  • PulseAudio protocol socket mounted into SDR & JS8Call containers
  • Persistent logs: js8-log Docker volume → /home/js8/.js8call

📈 Data Flow Summary

  1. RF → received by RTL-SDR v4
  2. rtl_fm demodulates USB → sox converts to 12 kHz WAV
  3. WAV → piped into PulseAudio null-sink “js8loop”
  4. JS8Call container decodes audio from “js8loop”
  5. JSON messages stored in js8-log volume
  6. Chrony keeps time within ±1 s of true NTP

Return to Home

Clone this wiki locally