v1.7.8 Β· Stable

One USB Cable
Any Device

Software SCU-LAN10 replacement for the Yaesu FT-710 HF/50MHz transceiver. Real-time FFT spectrum plot + waterfall via FT4222 SPI, bidirectional Opus 48kHz audio, full CAT control over 4 WebSocket channels β€” no $200 dongle required.

FT-710 Web Control Screenshot

FT-710 Web Control β€” FFT spectrum plot + waterfall on iPhone

Watch the Intro

A two-minute product tour of FT-710 Web Control (Chinese narration and subtitles).

Complete FT-710 Remote Control

Real FT4222 SPI spectrum, bidirectional Opus audio, full CAT control and multi-layer PTT safety β€” everything built specifically for the FT-710, no middleware anywhere.

Real FT4222 SPI Spectrum

850-point FFT spectrum at ~21 fps read straight from the FT-710 DSP chip over FT4222 SPI. The scope pipe is TX-aware: it pauses cleanly while you transmit and re-syncs in about a second on release. Automatic S-meter synthetic fallback when FT4222 is unavailable.

  • FT4222 SPI direct read (libft4222 + libftd2xx)
  • 4096-byte scope blocks with 0xFF01EE01 sync
  • TX-aware pause β€” no more post-PTT spectrum churn

FFT Plot + Waterfall

EMA-smoothed spectrum polyline above a 120-row history waterfall. Shared Floor/Ceil controls, six colormaps, and click-to-QSY anywhere on the spectrum.

  • ~30 fps S-meter fallback keeps the waterfall alive
  • Click-to-QSY with drag-guard for scroll gestures
  • Clear "TX β€” spectrum paused" indicator while transmitting

Bidirectional Opus Audio

One 48 kHz codec domain end to end: RX capture β†’ Opus 64kbps β†’ browser AudioWorklet; browser mic β†’ Opus CBR β†’ server β†’ radio. Every platform, including Windows, bridges the 48 kHz codec domain to the FT-710's fixed 44.1 kHz USB-audio device boundary (960β†’882 samples per 20 ms frame).

  • 64kbps Opus β€” 12Γ— smaller than raw PCM
  • Zero-audio watchdog flags wedged USB audio
  • Graceful PTT release β€” word endings preserved

Full CAT Control

Direct serial CAT over the Enhanced COM Port at 38400 baud. 40+ commands: frequency, 15 modes, 23 filter widths, VFO A/B, split, preamp, attenuator, NR/NB/AN, compressor, tuner, AF/RF/Mic gains.

  • No Hamlib / wfview / middleware β€” direct serial
  • Dirty-field tracking minimises WebSocket traffic
  • Read-back verification on filter width sets

Adaptive 7-Task Polling

100ms→5s smart intervals at 38400 baud, 0.25s per-query timeout ceiling, and priority preemption so PTT never waits for a poll cycle. Stale in-flight reads are discarded after user commands.

  • ~296 bytes/sec total serial utilisation
  • Auto-zero TX meters on RX transition
  • Scope re-init after every serial reconnect

Meters & Memory Channels

Canvas S-meter (S1–S9+60dB) with dBm readout plus full TX telemetry: PWR / ALC / SWR / Id / Vd / COMP. Memory channels with one-tap recall; every UI preference persists in cookies.

  • Seeded starter channels, per-user storage
  • AF volume, scope options, mic gain β€” all remembered

ATR1000 Tuner Linkage

Optional networked ATR1000 antenna tuner: learned LC relay values follow every frequency change, and a server-side tune assist runs the full carrier-measure-keep-or-rollback sequence for you.

  • Off by default β€” zero impact without the hardware
  • Learning gated on SWR 1.0–1.8, Β±5kHz nearest match

Multi-Layer PTT Safety

Touch-and-hold TX with instant release on touch-end. Fire-and-forget TX0 with 500ms TX-status poll + browser watchdog. Server-side forced RX when the last client β€” or the TX-audio owner β€” disconnects.

  • 7 independent release layers β€” no single point of failure
  • TX uplink ownership follows the keying client
  • Graceful TX audio drain before RF drop

Mobile-First UI

Optimised for iPhone Safari: safe-area adaptation, PWA manifest with Service Worker offline caching, Wake Lock, fullscreen toggle, and a native SwiftUI companion app.

  • PWA manifest + Service Worker offline cache
  • Wake Lock API (screen stays on)
  • Native iOS 17+ app shares the same protocol

Windows Desktop Installer

Windows 11/12 x64 β€” embedded Python 3.12 runtime, no manual Python install. Start Menu launcher with per-user config in %LOCALAPPDATA%.

MRRC-FT710-Setup.exe β€” v1.7.8 Stable

35.1 MB Β· x64
SHA-256: c1e474b58f9948206990efbc9f8bdb5b183d03e4f462828b56d2d3f8c0b493bb

v1.7.8 Stable keeps browser/Opus audio at 48 kHz and always converts each 960-sample TX frame to 882 samples at the FT-710's fixed 44.1 kHz device boundary, including after PortAudio reinitialization. TX-session logs now expose queue drops, and same-session reconnects safely replace stale audio ownership. Windows build, 439 tests, install/start/uninstall, and bundled-file checks passed; physical RF monitoring remains an operator-side acceptance check.

Download for Windows Versioned v1.7.8 GitHub Releases

Without the FTDI DLLs the app falls back to the S-meter synthetic spectrum β€” CAT control and audio are unaffected. macOS / Linux / Raspberry Pi: run from source (see Quick Start below).

Up and Running in 5 Minutes

Windows users take the installer track; macOS / Linux / Raspberry Pi run from source. Both end at the same browser UI.

Track A β€” Windows Installer

1 Β· Install Drivers

Silicon Labs CP210x VCP driver for the FT-710 Enhanced COM Port. FTDI D2XX only if you want FT4222 true spectrum.

Device Manager β†’ Ports (COM & LPT) β†’ Enhanced COM Port

2 Β· Run the Installer

MRRC-FT710-Setup.exe β€” v1.7.8, 35.1 MB, x64. Start Menu + optional desktop shortcut.

SHA-256 c1e474b58f9948206990efbc9f8bdb5b183d03e4f462828b56d2d3f8c0b493bb

3 Β· Edit Configuration

Start Menu β†’ Edit Configuration β€” set the Enhanced COM Port and a strong web password.

%LOCALAPPDATA%\MRRC-FT710\ft710.env

4 Β· Launch

Start Menu β†’ MRRC FT-710 β€” the launcher starts the server and opens the browser automatically.

http://127.0.0.1:8888 β†’ login β†’ full control

Track B β€” From Source (macOS / Linux / RPi)

1 Β· Clone the Repository

Get the latest code from GitHub

git clone https://github.com/cheenle/mrrc_ft710.git

2 Β· Install Dependencies

Python 3.12+ with FastAPI, Uvicorn, PySerial, PyAudio, NumPy

cd mrrc_ft710 && pip install -r requirements.txt

3 Β· Start the Server

Set the serial port and launch β€” auto-detects FT-710 USB devices

FT710_SERIAL_PORT=/dev/cu.usbserial-XXXX python server.py

4 Β· Open Your Browser

Any device on your network β€” phone, tablet, desktop. Default password: ft710

https://server-ip:8888 β†’ login β†’ full control

What You Need

Yaesu FT-710 USB Cable (A→B or C→B) Windows Installer (bundled Python) or Python 3.12+ from source Windows / macOS / Linux / RPi Modern Browser FTDI libs (for scope)

For real FT4222 SPI spectrum data, install libft4222 + libftd2xx from the wfview app bundle or FTDI website. CAT control and audio work without any FTDI libraries.

One Process, Three USB Channels

4 WebSocket connections, zero external middleware, built entirely on Python async frameworks.

Browser Phone / Tablet / Desktop AudioWorklet Β· Canvas WASM Opus Β· PWA MRRC FT-710 Server FastAPI + Uvicorn Single Python process Windows / macOS / Linux / RPi Yaesu FT-710 HF/50MHz SDR 38400 baud CAT FT4222 SPI HTTPS / WSS 4 WebSocket links USB /WSradio JSON Β· fullState + partial /WSaudioRX 1B tag + Opus / PCM /WSaudioTX Mic uplink Β· Opus 64kbps CBR /WSspectrum 850 uint8 Β· ~21 fps
Serial CAT
CP210x UART Β· 38400 bps
Yaesu ASCII CMD;
Frequency, mode, VFO, filters, gains, PTT, meters
FT4222 SPI Scope
scope_pipe subprocess
ctypes β†’ libft4222 + libftd2xx
4096-byte blocks, 850-point FFT waterfall
USB Audio
C-Media USB Audio Class
PyAudio capture / playback
RX 48kHz Int16 Β· TX 44.1kHz mono
WebSocket API
4 endpoints Β· Token auth
JSON control + Binary audio/spectrum
REST: /api/status, /api/auth, /api/mem_channels

Spectrum, Audio, Serial β€” by the Numbers

850-pt
FFT Spectrum
Per frame from FT4222 SPI
~21 fps
Real Spectrum Rate
4096B blocks, 0xFF01EE01 sync
120
Waterfall Lines
History depth
48kHz
Codec Domain
Opus 64kbps CBR, 12Γ— vs PCM
0.25s
Poll Timeout Ceiling
PTT never waits on a query
409
Hardware-Free Tests
Green on every build

Technology Stack

FastAPI + Uvicorn asyncio PySerial PyAudio / PortAudio libopus ctypes FT4222 SPI AudioWorklet WASM Opus Web Audio API Service Worker PWA

Native iPhone Client

SwiftUI companion app (iOS 17+) β€” same 4-channel WebSocket protocol as the browser, tuned for one-handed mobile operation.

Full Radio Control

Frequency (direct entry / step / band jump), VFO A/B, mode, filter width, Preamp/ATT, AGC, NB/NR/ANotch, RF power, mic gain, squelch β€” all from the iPhone.

  • 4 encrypted WebSocket channels (wss)
  • Token auth, password in Keychain

Waterfall + Meters

850-bin real-time waterfall with FFT curve, colormap matched to the web UI. S-meter plus TX meters (PWR / SWR / ALC / COMP) and memory channel list.

  • Same binary spectrum frames as the browser
  • Dark amber theme, portrait + landscape

Opus Voice RX/TX

RX: Opus 48kHz decode and playback through the device speaker. TX: mic capture at 48kHz in 20 ms PCM frames β€” hold PTT to talk.

  • libopus device build (arm64)
  • Settings: reconnect, gain, volume

Early access β€” build from source

Requires a physical iPhone (simulator unsupported β€” bundled libopus is arm64-device-only), iOS 17+, Xcode 15 + XcodeGen, and a TLS-enabled server. The P0 PTT-safety issues from the 2026-07-20 audit are resolved β€” TX uplink ownership follows the keying client.

FT710Mobile on GitHub

Software Design Description

IBM TeamSD methodology · 15 chapters · V2.9 · Architecture decisions, component model, PTT safety, and full version history.

Browse SDD All Chapters
AD-001–015 65 NFRs 8 Use Cases 7-Layer PTT Safety Feasibility Assessment