MRRC V5.6.5 Architecture

SDD-MRR-2026-001 · IBM TeamSD v2.3.2 · Mobile Remote Radio Control · BG1SB/ON80

Power/SWR TCP :4532 PyAudio WS :60001 CAT/PTT LAYER 1: CLIENT — Browser / Mobile / External Applications LAYER 2: SERVICE — Tornado WebSocket Server (MRRC Main :8877) LAYER 3: CONTROL — Radio · Audio · DSP · Voice AI (Support Layer) LAYER 4: DEVICE — Radio Hardware · Antenna Tuner · Audio Interface 📱 Mobile V5.0 mobile_modern.html CSS Grid · Flexbox PWA · Touch · Dark/Light 🖥️ Desktop UI www/index.html controls.js · Web Audio API Canvas S-Meter · Waterfall ⚡ CW Decoder ONNX Runtime (Browser) <50ms · 2MB model QSO State Machine 🌐 FT8web ft8_ultron.html Web-based FT8 UI JTDX/WSJT-X Bridge ⚡ MRRC Main Server Python 3.12+ · Tornado Async I/O · MRRC.conf HTTPS/WSS :8877 · TLS (Let's Encrypt) · Static Assets www/ 🔐 AuthManager (SQLite MRRC_users.db) · FILE Auth ⚡ /WSCTRX Radio Control · TX/RX Audio Frequency · Mode · PTT · S-Meter 📡 /WSATR1000 ATR-1000 Power/SWR Display Smart Learning · Dynamic Polling 📻 /WSCW CW Backend Decode PyTorch+CUDA Fallback 📡 Radio Control hamlib_wrapper.py HamlibClient · ControlHandler Freq · Mode · PTT · VFO 🎙️ Audio Pipeline audio_interface.py · PyAudio Capture · Opus Encode · 256s Buf Opus 16kHz 28kbps · Int16 PCM 🎛️ WDSP wdsp_wrapper.py NR2/NB/ANF/AGC 48kHz · libwdsp 📡 ATR Proxy atr1000_proxy.py Unix Socket Bridge 3-tier Dynamic Polling 🎤 Voice AI voice_assistant_service Whisper ASR · Qwen3-TTS In-Process (no HTTP) 🔄 FT8 / ULTRON ft8/ultron.py UDP BE · DXCC Tracking CQ · Reply · RR73 Auto 🔧 rigctld (Hamlib) Hamlib Daemon · TCP :4532 IC-M710 Model · CAT Protocol 📻 ATR-1000 Proxy atr1000_proxy.py Unix Socket /tmp/atr1000_*.sock 🔌 ATR REST API atr1000_api_server.py HTTP :8080 · JSON Responses 🐳 Multi-Instance mrrc_multi.sh · Docker Compose Config+Unix Socket Isolation · AD-004 📻 IC-M710 HF Transceiver · CAT/PTT /dev/tty.usbserial-120 · 240bd 🎤 Audio CODEC USB Audio Interface Stereo In/Out · PortAudio 📡 ATR-1000 Tuner 0-200W · 1.8-54MHz 192.168.1.63:60001 · WS 📶 JTDX/WSJT-X UDP Big-Endian FT8 Digital Mode Engine DATA FLOWS TX Audio (Mic → Radio) RX Audio (Radio → Spkr) Control (UI ↔ Radio) Meter (Power/SWR) Control (UI ↔ Radio) Frontend Backend/Service Audio/DSP/Voice Hardware/Device PERFORMANCE METRICS TX/RX Switching < 100ms PTT Reliability 99%+ WDSP NR2 Depth 15–20dB End-to-End Delay < 100ms

AD-001: Tornado Web Framework

  • • Native WebSocket support, async I/O
  • • Compatible with PyAudio event loop
  • • Single-threaded async model
  • • Mature, stable, active community

AD-002: Int16/Opus Codec

  • • Opus: 16kHz, 28kbps, 20ms frames
  • • WebRTC standard, native browser support
  • • Int16 PCM for compatibility fallback
  • • Low latency, high compression ratio

AD-003: WDSP NR2 DSP

  • • OpenHPSDR professional DSP library
  • • NR2 spectral noise reduction for SSB
  • • NB, ANF, AGC modules included
  • • ~20ms processing latency at 48kHz

AD-004: Multi-Instance

  • • Independent config files per instance
  • • Unix Socket isolation (no port conflicts)
  • • mrrc_multi.sh + Docker Compose
  • • Minimal code changes, reuses architecture

AD-005: PTT Reliability

  • • Warm-up frames fill switching gap
  • • Retry 3x at 50ms intervals
  • • ~50ms additional latency (acceptable)
  • • 99%+ press-to-transmit success rate

AD-006: Audio Buffer

  • • 256-sample buffer at 48kHz = 5.3ms
  • • Adaptive sizing for network conditions
  • • AudioWorklet client-side buffering
  • • Balance latency vs. reliability

AD-007: CW ONNX Decode

  • • 2MB ONNX model in browser
  • • <50ms inference latency
  • • Zero server-side dependencies
  • • PyTorch+CUDA backend fallback

AD-008: ATR Proxy

  • • Independent proxy process (exclusive device)
  • • Unix Socket bridge (low overhead)
  • • REST API :8080 for 3rd-party
  • • Dynamic polling: idle 15s / active 5s / TX 0.5s