v1.6 · 正式发布

一根 USB 线
任意设备

八重洲 FT-710 HF/50MHz 收发信机的软件 SCU-LAN10 替代方案。 FFT 频谱折线图 + 瀑布图双显示,双向 Opus 48kHz 音频, 4 条 WebSocket 通道实现完整 CAT 控制 — 无需 $200 外置硬件。

FT-710 Web Control 截图

FT-710 Web Control — FFT 频谱图 + 瀑布图 iPhone 实机截图

完整的 FT-710 远程控制

从 FT4222 SPI 真实频谱瀑布图到双向 Opus 音频、CAT 控制、移动端优化 PTT —— 每个功能都专为 FT-710 打造。

真实 FT4222 SPI 频谱

通过 FT4222 SPI 从 FT-710 DSP 芯片获取 850 点 FFT 频谱,~21fps。120 行历史瀑布图,黑色→蓝色→绿色→黄色→红色色图。双模式:FT4222 不可用时 S-meter 合成回退。

  • FT4222 SPI 直读 (libft4222 + libftd2xx)
  • 4096 字节数据块,0xFF01EE01 同步标记
  • ~21fps 真实频谱,~30fps S-meter 回退

FFT 频谱折线图

瀑布图上方实时频谱幅度-频率折线图。青色 (#06b6d4) 折线,EMA 平滑 (α=0.30),2× 幅度增益突出信号峰,水平 + 垂直网格线与频率刻度对齐。

  • 33px 折线 + 微辉光 + 网格参考线
  • EMA 平滑 (每帧 30% 新数据) — 稳定可读的峰值
  • 与瀑布图共用 Floor/Ceil 控件

双向 Opus 音频

RX: FT-710 USB 音频 → PyAudio 采集 (44.1kHz Int16) → 帧对齐重采样 48kHz → Opus 64kbps 编码 → 浏览器 AudioWorklet。TX: 浏览器麦克风 (48kHz) → Opus 64kbps CBR → 服务端 48→44.1kHz 重采样 → PyAudio → 电台。

  • RX 48kHz 高保真 AudioWorklet 播放
  • TX 64kbps CBR,60ms 抖动缓冲
  • 优雅 PTT 释放 — 话尾不被切断
  • 零音频看门狗:电台 USB 音频卡死时状态栏即时告警

完整 CAT 控制

通过增强型 COM 端口以 38400 baud 直驱串口 CAT。40+ 指令:频率、15 种模式、23 种滤波器宽度、VFO A/B、分频、前置放大、衰减器、NR/NB/AN、压缩器、天调、AF/RF/Mic 增益、S-meter、多表头。

  • 无需 Hamlib / wfview / 中间件 — 直驱串口
  • 7 任务轮询 (~296 字节/秒)
  • 脏字段变更追踪最小化 WebSocket 流量

移动优先 UI

专为 iPhone Safari 优化:safe-area 适配、PWA manifest + Service Worker 离线缓存、Wake Lock 屏幕常亮、全屏切换。触控握持 PTT,松手即断。

  • PWA manifest + Service Worker 离线缓存
  • Wake Lock API (屏幕常亮)
  • Canvas S-meter S1–S9+60dB + 多表头 (PWR/ALC/SWR/Id/Vd)

7 任务后台轮询

38400 baud 下 100ms→5s 智能分频,0.25s 超时上限,主动让步 PTT。轮询层级:100ms(频率/模式/S-meter)、500ms(TX 表头零化)、2s(滤波器/增益/NR/NB)、5s(电压/电流/压缩器)。

  • ~296 字节/秒总串口占用
  • TX 切 RX 自动零化 TX 表头
  • 每条命令 0.25s 超时 — 绝不阻塞 PTT

多层 PTT 安全防护

触控握持发射 → 松手即断。TX0 即发即弃 + 500ms TX 状态轮询 + 浏览器看门狗兜底。最后一个客户端或 TX 音频属主断开时服务端强制 RX。浏览器卸载信标在标签页关闭时发送 TX0;。

  • 7 层独立释放路径——无单点失效
  • 客户端或 TX 属主断开时服务端强制 RX
  • RF 断开前优雅 TX 音频排空

原生 iPhone 遥控 App

SwiftUI 客户端(iOS 17+)— 与浏览器共用同一套 4 路 WebSocket 协议,专为单手移动操作优化。

完整电台控制

频率(直输 / 步进 / 波段跳转)、VFO A/B、模式、滤波器宽度、Preamp/ATT、AGC、NB/NR/ANotch、射频功率、麦克风增益、静噪 — 全部在 iPhone 上完成。

  • 4 路加密 WebSocket(wss)
  • Token 认证,密码存 Keychain

瀑布图 + 仪表

850 bin 实时瀑布图 + FFT 曲线,配色与 Web 端一致。S 表及发射仪表(PWR / SWR / ALC / COMP),支持存储频道列表。

  • 与浏览器相同的二进制频谱帧
  • 深色琥珀主题,横竖屏自适应

Opus 语音收发

RX:Opus 48kHz 解码播放;TX:麦克风 48kHz / 20ms PCM 帧上行,按住 PTT 即发。

  • libopus 真机库(arm64)
  • 设置页:重连 / 增益 / 音量

早期版本 — 需自行编译

需要 iPhone 真机(模拟器不支持 — 内置 libopus 仅含 arm64 真机 slice)、iOS 17+、Xcode 15 + XcodeGen,以及启用 TLS 的服务端。2026-07-20 审计报告列有 P0 级 PTT 安全已知问题,修复方案已批准、正在实施。发射前请先阅读审计报告。

GitHub 上的 FT710Mobile

一个进程,三路 USB 通道

4 条 WebSocket 连接,零外部中间件依赖,完全基于 Python 异步框架构建。

浏览器 手机 / 平板 / 桌面 AudioWorklet · Canvas WASM Opus · PWA MRRC FT-710 Server FastAPI + Uvicorn 单 Python 进程 macOS / Linux / Raspberry Pi 八重洲 FT-710 HF/50MHz SDR 38400 baud CAT FT4222 SPI HTTPS / WSS 4 路 WebSocket USB /WSradio JSON · fullState + partial /WSaudioRX 1B tag + Opus / PCM /WSaudioTX Mic uplink · Opus 64kbps CBR /WSspectrum 850 uint8 · ~21 fps
串口 CAT
CP210x UART · 38400 bps
八重洲 ASCII CMD;
频率、模式、VFO、滤波器、增益、PTT、表头
FT4222 SPI Scope
scope_pipe 子进程
ctypes → libft4222 + libftd2xx
4096 字节数据块, 850 点 FFT 瀑布图
USB 音频
C-Media USB Audio Class
PyAudio 采集 / 播放
RX 48kHz Int16 · TX 44.1kHz mono
WebSocket API
4 个端点 · Token 鉴权
JSON 控制 + Binary 音频/频谱
REST: /api/status, /api/auth, /api/mem_channels

FFT 折线图 + 双模式瀑布图

来自 FT-710 DSP 芯片的 FT4222 SPI 真实频谱 — FFT 幅度折线图叠加 120 行瀑布图,自动 S-meter 合成回退。

850 点
FFT 频谱
每帧来自 FT4222 SPI
~21 fps
真实频谱速率
FT4222 CLK_DIV_16
~30 fps
S-meter 回退
合成多峰频谱
120
瀑布图行数
历史深度
4096 B
SPI 数据块大小
0xFF01EE01 同步标记
v2
频谱协议
1701B 帧 (1B ver + 2×850B)

Opus 48kHz 音频管线

标签双编解码传输 (Opus 64kbps CBR + Int16 PCM 回退)。相比原始 PCM 节省 12 倍带宽。

48kHz
RX 采样率
Int16 → Opus 64kbps CBR
44.1kHz
TX 播放速率
从 48kHz 160:147 重采样
220ms
RX 抖动缓冲
90ms 恢复阈值
60ms
TX 预缓冲
400ms 硬上限
64kbps
Opus 码率
比 768kbps PCM 小 12×
160:147
重采样比例
线性插值,相位连续

音频技术栈

PyAudio PortAudio libopus ctypes AudioWorklet WASM Opus Decoder ScriptProcessor Web Audio API getUserMedia

Windows 桌面安装包

Windows 11/12 x64 — 内置 Python 3.12 运行时,无需手动安装 Python。开始菜单启动器,用户级配置存放于 %LOCALAPPDATA%。

1 · 安装驱动

Silicon Labs CP210x VCP 驱动(FT-710 Enhanced COM 口)。仅当需要 FT4222 真实频谱时再装 FTDI D2XX。

设备管理器 → 端口 (COM 和 LPT) → Enhanced COM Port

2 · 运行安装包

MRRC-FT710-Setup.exe — v1.6.0,28.3 MB,x64。开始菜单 + 可选桌面快捷方式。

MD5 2be2a654242f284f73104aea2e010c41

3 · 编辑配置

开始菜单 → Edit Configuration — 设置 Enhanced COM 口和强密码。

%LOCALAPPDATA%\MRRC-FT710\ft710.env

4 · 启动

开始菜单 → MRRC FT-710 — 启动器自动拉起服务器并打开浏览器。

http://127.0.0.1:8888 → 登录 → 全功能控制
下载 Windows 版 GitHub Releases

缺少 FTDI DLL 时频谱自动降级为 S 表模拟显示,CAT 控制与音频不受影响。macOS / Linux / 树莓派请按下方步骤从源码运行。

5 分钟搭建运行

克隆仓库、安装依赖、启动服务器、打开浏览器 — 只需四步。

克隆仓库

从 GitHub 获取最新代码

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

安装依赖

Python 3.12+,包含 FastAPI、Uvicorn、PySerial、PyAudio、NumPy

cd mrrc_ft710 && pip install -r requirements.txt

启动服务器

设置串口并启动 — 自动检测 FT-710 USB 设备

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

打开浏览器

同一网络内的任意设备 — 手机、平板、电脑。默认密码:ft710

https://服务器IP:8888 → 登录 → 全功能控制
在 GitHub 上查看

你需要什么

八重洲 FT-710 USB 线 (A→B 或 C→B) Python 3.12+ macOS / Linux / RPi 现代浏览器 FTDI 库 (频谱功能)

使用真实 FT4222 SPI 频谱数据需要安装 libft4222 + libftd2xx(可从 wfview 应用包或 FTDI 官网获取)。CAT 控制和音频功能无需任何 FTDI 库即可正常工作。