返回「衍生硬件」分组
FMO 伴侣及 FMO 网关

FMO 伴侣及 FMO 网关

随着使用 FMO 的台友越来越多,很多台友也开发了相关的仪表盘、Web 端、App 端来扩展 FMO 的使用周边。FMO 伴侣与 FMO 网关,就是其中一套基于常见 ESP32 开发板的伴侣终端数据中转方案:伴侣负责把仪表盘功能带到独立的廉价硬件上,网关负责在 FMO 与多个客户端之间建立统一、稳定的连接通道。

FMO 伴侣硬件组装教程截图

FMO 伴侣

FMO 伴侣并不替代 FMO 主机本身,而是作为 FMO 主机的辅助终端存在。它通过 WiFi 连接到 FMO 服务端,并通过 WebSocket 获取音频、事件、站点和 QSO 信息,实现:

  • 当前通联呼号显示;
  • 通联状态提示;
  • 当前站点显示;
  • 上次通联记录显示;
  • QSO 数量显示与同步;
  • 收藏站点切换;
  • WiFi 与 FMO Host 设置;
  • 电池电量显示与低电量省电;
  • 待机时钟;
  • 触摸屏交互;
  • 本机音频播放控制。

[!NOTE] 伴侣的初衷,是让 FMO 仪表盘功能在另一个硬件平台实现的可能性,选用的也是性能较弱的 ESP32 开发板,目的在于使用低廉的硬件实现仪表盘功能。FMO 伴侣提供的一切数据均来源于 FMO 主机接口。

固件与资料

  • 固件基于 ESP32,已集成 WireGuard,支持远程组网后跨网络使用;
  • 固件为合并单 BIN,烧录时写入 0x0 即可;
  • 配套提供硬件组装教程、固件烧录教程视频与硬件购买推荐清单(详见离线资料包)。

固件烧录教程截图

FMO 网关

FMO 网关是一套面向 FMO 的 WebSocket 数据转发解决方案,主要用于在 FMO 与伴侣设备、仪表盘 Web、App 之间建立统一、稳定的连接通道。

网关只需与 FMO 建立一组上游连接,即可将数据分发给多个下游客户端,避免多个伴侣设备直接连接 FMO 所造成的资源占用、运行卡顿或不稳定问题。

网关支持转发 FMO 的三类核心 WebSocket 通道:

通道 用途
audio 音频通道 转发 FMO 音频二进制数据
events 事件通道 转发系统事件文本或二进制数据
ws 命令通道 实现客户端与 FMO 命令通道之间的双向通信

ESP32 硬件网关

ESP32 版本是一款体积小、功耗低、配置方便的独立网关设备(使用硬件与伴侣一致),接通电源并连接 Wi-Fi 后即可使用:

  • 内置网页管理功能,可配置 Wi-Fi、FMO 服务地址、本机显示呼号及管理账号;
  • 屏幕实时显示北京时间、UTC 时间、网络状态、FMO 连接状态、局域网 IP 地址以及当前连接的 WebSocket 客户端数量;
  • 支持 5 个伴侣设备或仪表盘同时使用;
  • 首次使用/恢复默认时开启 AP 配网热点(ESP32-FMO-GATEWAY / 12345678,配网页 http://192.168.4.1,默认账号 admin/admin888);
  • 本地提供 /audio/events/ws 三个下游 WebSocket 接口及 /api/state 状态查询接口。

Linux 网关 V2(软件版)

Linux 版本是一款轻量级、高并发的软件网关,可部署在 Linux 主机、NAS、服务器或 Docker 环境中:

  • 支持 Docker / Docker Compose 部署,镜像支持 amd64arm64arm/v7 多架构;
  • 提供 Web 配置页面(默认 8089 端口,admin/admin888)、健康检查接口(/healthz)与状态接口(/api/state/api/reload);
  • 每通道可承载 1024 个下游客户端,可根据服务器性能承载更多客户端,更适合有更高性能需求的台友部署;
  • 配置文件 config.json 只需填写 FMO 服务地址,程序会自动生成 ws://host/audiows://host/eventsws://host/ws 三个上游地址;
  • 提供断线自动重连、慢客户端踢除(drop_slow_client)等稳定性机制。

网关的使用方式

在实际使用中,FMO 伴侣、控制软件或其他客户端不再直接连接 FMO 服务端,而是连接网关提供的本地地址。网关负责维护与上游 FMO 的连接,并将数据实时转发给各个客户端;当上游网络短暂中断时,网关会按照设定自动重连。

总体而言,FMO 网关相当于 FMO 系统与多个伴侣客户端之间的**“统一中转站”**,既能减少 FMO 服务端的连接压力,也便于集中管理服务地址、运行状态和客户端接入。

选型建议:终端数量较少、注重便携和低功耗的场景,选择 ESP32 FMO Gateway;客户端数量较多、需要长期稳定运行或已有 NAS、Linux 服务器的场景,则更适合部署 FMO Gateway Linux V2。

WireGuard 远程组网

伴侣与网关固件均集成了 WireGuard,配合服务端(WireGuard + WireGuard-UI)可实现远程组网:

  • 典型组网:服务端 10.88.10.0/24 网段,vpn.example.com:51820 UDP 端口;
  • 采用分流模式:客户端访问 VPN 内网地址走 WireGuard,普通上网流量仍走本地网络(PostUp 仅放行 wg0→wg0,不保留 NAT/MASQUERADE);
  • ESP32 客户端注意:VPN 掩码必须填写 255.255.255.0(不能填 /32),否则客户端之间互访会异常;
  • 伴侣端内置 “WGweb 配置” 功能,开启后 5 分钟自动关闭以节省硬件资源。

资料包内容

  • 伴侣:硬件组装教程、固件烧录教程(视频)、硬件购买推荐清单、伴侣固件 esp32-fmo-companion-WireGuard-merged_firmware1.3.1
  • 网关:ESP32 硬件网关固件及用户使用指南、WireGuard 服务端部署及客户端设置手册、Linux 版网关 Docker 镜像(zhaozhengde/fmo-gateway-linux-v2);
  • 伴侣固件源码:github.com/zhaozhengde/esp32-fmo-companion
  • Linux 网关镜像:hub.docker.com/r/zhaozhengde/fmo-gateway-linux-v2

需要了解伴侣制作及代制作,可关注抖音号 “蚂蚁艺术-Bi8SPD”。VY73!

资料下载

原文文档(来自 FMO 伴侣及伴侣网关资料包):