Feature Details

当前版本 V6.1.18(文中 V5.x / V6.0.x 为历史版本,保留原样)

Deep dive into every core feature of MRRC, unleash the full potential of amateur radio

Ultra-Low Latency Audio Streaming

<100ms
TX/RX Switch Latency
~65ms
TX Latency
~51ms
RX Latency

Technical Implementation

  • AudioWorklet Player: Uses Web Audio API's AudioWorklet to reduce main thread jitter, achieving low-latency audio playback
  • Interval Buffering: 16/32 frame configuration, balancing latency and stability
  • PTT Debounce: 50ms debounce delay, prevents duplicate commands
  • Buffer Clear Optimization: Immediately clears RX buffer on TX release
  • Int16 Encoding: 50% bandwidth reduction vs Float32

Optimization Comparison

Metric Traditional Solution MRRC Optimized
TX→RX Switch 2-3 seconds <100ms
PTT Reliability 95% 99%+
Audio Bandwidth 256kbps 128kbps

🔧 WDSP Professional Noise Reduction

Integrates Warren Pratt's Digital Signal Processing library, the high-performance DSP library from the OpenHPSDR project, widely used in Thetis, piHPSDR and other professional amateur radio software.

Core Features

🔇

NR2 Spectral NR

Spectral subtraction based noise reduction, 15-20dB depth, extremely high speech fidelity, specifically optimized for SSB voice

NB Noise Blanker

Eliminates impulse interference, effectively suppresses electrical sparks, lightning and other burst noise

🎯

ANF Auto Notch

Automatically eliminates single-tone interference, suitable for CW tones, carrier interference scenarios

📊

AGC Auto Gain

4 selectable modes: LONG/SLOW/MED/FAST, adapts to different signal environments

Comparison with RNNoise

Feature WDSP (NR2) RNNoise
Noise Reduction Depth 15-20 dB 10-15 dB
Speech Fidelity ⭐⭐⭐⭐⭐ ⭐⭐⭐
SSB Optimization ✅ Specifically Optimized ❌ General Voice
Latency < 20ms 30-50ms

📱 Mobile Deep Optimization

Touch Optimization

  • Large PTT Button: Bottom-center design, optimized for thumb operation area
  • Touch Enhancement: 300ms anti-mistouch, long-press/short-press differentiation
  • Haptic Feedback: PTT button vibration feedback (iOS/Android support)
  • Safe Area Adaptation: Automatically adapts to notched screens and bottom indicators

PWA Support

  • Add to Home Screen: Supports running as standalone application
  • Offline Access: Service Worker caches critical resources
  • Fast Launch: Optimized startup flow, instant app opening

Device Compatibility

📱 iPhone 15 Series ✓ Perfect Support
📱 iPhone 12/13/14 ✓ Perfect Support
📱 Android Flagship ✓ Perfect Support
📱 iPad/Tablet ✓ Supported

📊 ATR-1000 Power Meter/Tuner Integration

Real-time Monitoring

  • Power Display: 0-200W real-time forward power display
  • SWR Monitoring: 1.0-9.99 real-time SWR display
  • Relay Status: LC/CL network, inductance/capacitance values display
  • Display Latency: <200ms real-time update

Smart ATU Learning

Learning Conditions

  • TX detected by measured forward power (≥ 3W) — works for front-panel and external-software transmissions too (V5.8.5)
  • SWR between 1.0 ~ 1.8
  • 4 consecutive stable samples (SWR fluctuation ≤ 0.08) after relay/tune settling (1s ignore window)
  • Grade-based dedup: worse SWR skipped, same SWR cooled 5s, improved SWR learned immediately

Quick Tune

  • Automatically applies learned tuner parameters when frequency changes
  • ±10kHz tolerance range lookup
  • Parameters persisted to JSON file

SWR>2 Auto Full-Tune Guard (V5.8.0)

  • During TX, SWR > 2.0 sustained ≥1.5s triggers a full ATR-1000 tune automatically
  • 30s cooldown + 3-attempt per-frequency failure protection
  • After tuning, the improved parameters are learned and persisted

Protocol Details

Communication Protocol: WebSocket + JSON
Data Frame Format: FF CMD LEN DATA...
Response Example: ff050701031b1e000e01
  → SW=CL, IND=30(0.3uH), CAP=27(270pF)

🎙️ AI Voice Assistant

Speech Recognition (ASR)

  • Whisper Local Model: OpenAI Whisper base model, 150MB, runs completely locally
  • Real-time Recognition: Transceiver receive voice real-time to text
  • Multi-language Support: Chinese, English, Japanese, etc.
  • Callsign Recognition: Automatically recognizes callsign format

Speech Synthesis (TTS)

  • Qwen3-TTS Integration: Alibaba 1.7B model, true baritone voice
  • Phonetic Alphabet: Callsigns automatically converted to international phonetic pronunciation
  • Smart Switching: Chinese/English automatically selects best voice
  • PTT Integration: Hold transmit button auto-synthesizes and transmits

Use Cases

Receive Recognition: Other party's voice → Text displayed in dialog
Reply Synthesis: Input text → Synthesize voice → Hold PTT to transmit
Callsign Optimization: "BG1SB" → "BG1SB (Bravo Golf One Sierra Bravo)"

🎚️ RagChew TX Audio Processing Chain

V5.1 introduced a complete Web Audio API-based transmit audio processing chain — studio-grade speech optimization for amateur radio.

Processing Chain (V5.1+)

Stage Parameter Value Purpose
4-Band EQ Low-Cut / Mid-Cut / Presence / High-Cut 150Hz / -2dB@500Hz / +3dB@2.4kHz / 3kHz Shape voice for SSB clarity
Dynamic Compressor Ratio / Attack / Release 3:1 / 5ms / 50ms Consistent modulation level
Noise Gate Threshold -50dB Silence background when not speaking

TX Equalizer Presets

For simple 3-band EQ (legacy mode):

Preset Low (<100Hz) Mid (1500Hz) High (>2700Hz) Use Case
HF Voice -20dB +6dB -20dB Standard SSB communication
Mobile Optimized -15dB +8dB -24dB Phone microphone
Weak Signal -20dB +10dB -25dB DX / contest

📶 Real-time Network Monitoring

V5.3 introduced live network bandwidth and latency monitoring, giving operators full visibility into connection quality.

  • Bandwidth Display: Real-time upstream/downstream throughput (kbps)
  • Latency Monitor: WebSocket ping-pong round-trip time display
  • Visual Enhancements: Glow effect, larger fonts, color-coded thresholds
  • Status Bar: Streamlined UI removing redundant CTL/RX/TX indicators

📉 NanoVNA Vector Network Analyzer

  • Web Interface: Built-in NanoVNA Web control interface
  • Standalone PWA: Can be added to home screen as independent application
  • Real-time Measurement: S11, S21 parameters real-time display
  • Smith Chart: Supports Smith chart display

🛡️ PTT Safety System (V5.6+)

Three-layer TX protection architecture designed to prevent the most dangerous failure mode in remote radio operation: a stuck transmitter. Each layer provides independent protection with redundant fallback paths.

Layer 1: Client-Side Guard (Browser)

👆

Touch-Move Auto-Release

Finger slides off TX button → immediate PTT release via touchmove/touchcancel handlers

🪟

Visibility-Change Forced Stop

Page goes to background or window loses focus while TX is active → forces PTT release. Prevents up to 30s of unintended transmission

⏱️

30s Watchdog Timer

Hardware watchdog: if TX state stays active >30s without confirmation, forces release

🔒

Lock Leak Detection

Processing lock held >3s → auto-released to prevent silent stop-failure leaving TX stuck

Layer 2: Release ACK Protocol

MechanismDescription
ACK RetryAfter sending setPTT:false, waits up to 1s for server confirmation. If unconfirmed, retransmits up to 3 times
Redundant Audio-Path FallbackOn each retry, also sends s: via TX audio WebSocket as a redundant release path — works even if control WebSocket is half-open
Connection Death TriggerAfter 3 failed ACK retries, forces full control-channel reconnect via onControlConnectionDead()

Layer 3: Server-Side Protection

MechanismDescription
120s TOT Hard LimitTime-Out Timer: PTTSafetyMonitor thread enforces absolute 120s maximum TX duration
Persistent RetryPTT release retried every 2s until hardware confirms state change
Broadcast on FailurepttError:release_failed or pttError:tot_timeout broadcast to all connected clients

Ready to Get Started?

Follow the installation guide to set up a complete remote transceiver control system in 5 minutes

⬆️ One-Click Upgrade (Windows Installer)

Shipped from V6.1.0, validated end-to-end on a real Windows machine in V6.1.18. The launcher checks a SHA256-pinned manifest at startup and downloads the new installer in the background (without interrupting your listening), then waits for you:

Then: one UAC prompt → silent install → automatic restart onto the new version. The new version confirms the upgrade itself, so "did it work?" is a recorded fact rather than a guess, and Roll back to the previous version is one click too.

Why this is non-trivial on Windows

Console processes have no message loop (so the installer's RestartManager cannot close them); an elevated process re-launching via runas can hang forever on a non-interactive window station; the console code page is GBK (an emoji in a log line kills the log-forwarding thread); and threading.Lock is per-process — with two launcher instances both download the same temporary file. All ten of these traps were found by real-machine acceptance testing and are fixed; the full case study is RC-002 (docs).

🐞 One-Click Diagnostics Bundle

Menu → 🐞 Something went wrong collects what a maintainer actually needs: launcher/server output, state.json, installer logs, the audio-device report, performance sampling and a redacted config (whitelist only; secrets replaced; certificates and the user database are never packaged), plus an automatic health summary (IOLoop watchdog, TX init timing, audio health, ATR freshness). One click to upload to the maintainer endpoint — or keep it local.

🎛️ Rig Model Catalog Aligned with Hamlib

Device Config no longer hard-codes a model list: rig_models.py enumerates the 312 models of the locally installed hamlib at runtime and writes both keys the stack reads ([HAMLIB] rig_model and [INSTANCE_SETTINGS] instance_rigctl_model), flagging in the UI when they disagree with what rigctld reports.

🛟 Product Support Lifecycle

MRRC is maintained as a product, not a zip file. Five stages form one loop — and you can see the last one for yourself at /answers/. The full table (what happens / how it is judged / what it produces / where the details live) is on Product Support Lifecycle:

StageWhat happens
ReleaseUnit tests + an inline-JS syntax guard + an artifact-level hotfix acceptance run (3/3) gate every build; the site carries latest.json (upgrade) and patch.json (hotfix), and the published bytes are verified by SHA256 on the server.
UpgradeOne click (or U) → download + SHA256 → one UAC → silent install → automatic restart; success is recorded as lastResult = ok by the new version itself; one-click rollback to the previous version.
DiagnoseMenu → 🐞 Something went wrong builds a redacted bundle with an automatic health summary (startup count vs crashes, audio health, IOLoop, TX init, ATR freshness).
AI triageA scheduled job fetches new reports, digests them, and asks the project's AI with a triage skill (evidence-first rules, conservative verdicts) for a structured conclusion.
AnswerThe conclusion is published as a searchable card on the public answers page (find it by report id or keyword) — so most users solve it themselves. If it is a defect: workaround first, then hotfix (restart, no reinstall) or release.

Hotfix channel: fixes in www/**, the loose app modules (upgrade_core.py, support_bundle.py, …) and vendor ship without repackaging — the app applies them on the next start.