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.8.0 Stable

35.2 MB Β· x64
SHA-256: 36a48a5f3f325d112937751bddcdebc581039d0484a40c95c1b00fd4bcc170ea

v1.8.0 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.8.0 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.8.0, 35.2 MB, x64. Start Menu + optional desktop shortcut.

SHA-256 36a48a5f3f325d112937751bddcdebc581039d0484a40c95c1b00fd4bcc170ea

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
439
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
  • 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

Join the Conversation

Scan the QR code with WeChat to join the MRRC-HAM group.

WeChat QR code for MRRC-HAM group

QR code valid until Aug 29, 2026. Will be updated when refreshed.