本文档介绍 HN_TRS 系统中基于 Brew(Homebrew Repeater)协议 的 RoIP(Radio over IP)接入方式。通过 Brew 协议,用户可以使用软件客户端或自建网关设备,经由 IP 网络接入 HN_TRS 数字集群系统,无需依赖传统射频覆盖。
Brew(Homebrew Repeater Protocol) 是业余无线电领域广泛使用的开放协议,允许中继器、热点设备和软件客户端通过 IP 网络与数字集群系统互联。HN_TRS 支持以下两种 Brew 协议变体:
| 协议 | 适用模式 | 说明 |
|---|---|---|
| DMR Homebrew Repeater Protocol | DMR | 由 DL5DI/G4KLX 制定,BrandMeister 等大型 DMR 网络广泛采用 |
| TETRA Brew Protocol | TETRA | 基于 WebSocket 的 TETRA Homebrew 协议,支持语音和数据业务 |
参考资料:
- DMR Homebrew 协议:BrandMeister Wiki
- TETRA Brew 协议:TetraPack Wiki
RoIP(Radio over IP)即将传统无线电通信通过 IP 网络进行传输。在 HN_TRS 中,RoIP 接入允许用户:
DMR Homebrew Repeater Protocol 是业余 DMR 网络中最主流的互联协议之一,由 DL5DI 最初规范,后经 G4KLX 在 MMDVMHost 中实现并扩展。BrandMeister、DMR+ 等大型网络均支持此协议。
| 项目 | 说明 |
|---|---|
| 传输层 | UDP |
| 默认端口 | 62030 |
| 认证方式 | SHA-256 哈希 + Salt 摘要认证 |
| 消息格式 | 除 DMRD(语音帧)为二进制外,其余均为文本 |
| Repeater ID | 8 位十六进制字符串表示 |
| PING 间隔 | 5-15 秒(推荐 5 秒) |
BrandMeister 在基础协议上扩展了以下功能:
| 扩展 | 格式 | 说明 |
|---|---|---|
| Site Beacon | RPTSBKN01234567 |
站点信标,用于被动自动漫游 |
| RSSI 上报 | RPTRSSI01234567:1-120.0 |
信号强度上报(:0 DMO,:1/:2 时隙1/2) |
| 呼叫中断 | RPTINTR01234567:1 |
请求中断当前来电 |
| 软件 | 平台 | 说明 |
|---|---|---|
| MMDVMHost | Linux/Windows | 最主流的 Homebrew 客户端,支持热spots 和中继 |
| MMDVM_HS | Linux/RPi | 适用于树莓派等嵌入式平台 |
| QRadioLink | Linux/Android | 支持 SDR 直连和 IP 模式 |
| DVSwitch Mobile | Android/iOS | 移动端热点客户端 |
获取接入参数
安装 MMDVMHost
# Debian/Ubuntu
sudo apt install mmdvmhost
# 或从源码编译
git clone https://github.com/g4klx/MMDVMHost.git
cd MMDVMHost && make
配置 MMDVMHost
编辑 MMDVM.ini,设置 Homebrew 连接参数:
[DMR Network]
Enable=1
Protocol=Homebrew
Address=hntrs.zehao.asia # 服务器地址(示例)
Port=62030
Password=your_password # 管理员分配的密码
Slot1=1
Slot2=1
配置 Talkgroup
在 DMRIds.dat 中配置你的 Radio ID 和 Talkgroup:
your_radio_id,your_callsign,Your Name
启动并验证
sudo systemctl start mmdvmhost
# 查看日志确认连接状态
journalctl -u mmdvmhost -f
⚠️ 注意:BrandMeister 明确要求 Homebrew 协议仅用于带有射频模块的中继器和热点设备。纯软件客户端(无射频模块)应使用更合适的协议。HN_TRS 对此的要求请咨询管理员。
TETRA Brew Protocol 是 TetraPack 项目定义的 TETRA 数字集群 Homebrew 协议,基于 WebSocket(RFC 6455) 传输,支持 TETRA 系统的完整业务能力,包括语音通话、短数据(SDS)、分组数据(PDP)等。
| 项目 | 说明 |
|---|---|
| 传输层 | WebSocket(RFC 6455) |
| 认证方式 | HTTP Digest Access Authentication(RFC 2831) |
| 消息格式 | 二进制帧(Little-Endian) |
| 帧结构 | 2 字节前缀(消息类 + 消息类型)+ 变长数据 |
| 音频格式 | ACELP 60ms 帧(基于 ETSI TS 100 392-3-6) |
| 消息类 (Class) | 说明 |
|---|---|
| 0xF0 | 用户控制(注册/注销/Affiliation) |
| 0xF1 | 呼叫控制(组呼/电路呼叫/数据呼叫) |
| 0xF2 | 语音和数据帧(TCH/SDS/DTMF/PDP) |
| 0xF3 | 错误消息 |
| 0xF4 | 服务消息(JSON 格式,用户查询等) |
/brew/ 端点User-Agent 字段支持的呼叫类型:
| 呼叫状态 | 类型 | 说明 |
|---|---|---|
GROUP_TX / GROUP_IDLE |
组呼 | 简化组呼流程 |
SETUP_REQUEST → CONNECT_CONFIRM |
电路呼叫 | 双工电路交换呼叫 |
SIMPLEX_GRANTED / SIMPLEX_IDLE |
简单呼叫 | 基于电路呼叫的半双工模式 |
PDP_REQUEST → PDP_ACCEPT |
数据呼叫 | 分组数据传输(IPv4/IPv6) |
SHORT_TRANSFER |
短数据 | SDS Type 4 短数据传输 |
| 软件/硬件 | 平台 | 说明 |
|---|---|---|
| TetraPoC | 安卓 | HN_TRS编写的TETRA Brew 客户端 |
| flowstation | Linux + SDR | SDR 接收 TETRA 信号 |
| Motorola / SEPURA | 硬件终端 | TETRA 专业终端(需 Brew 网关) |
获取接入参数
配置客户端连接
# 伪代码示例 - Brew WebSocket 连接
import websocket
# 1. HTTP Digest 认证获取 WebSocket 端点
endpoint = authenticate_digest(
"https://hntrs.example.com/brew/",
username="your_issi",
password="your_password"
)
# 2. 建立 WebSocket 连接
ws = websocket.create_connection(endpoint)
# 3. 发送注册消息 (Class 0xF0, Type 0x01)
register_msg = build_subscriber_register(issi=your_issi)
ws.send_binary(register_msg)
# 4. Affiliation 到目标组
affiliate_msg = build_affiliate(issi=your_issi, groups=[gssi_list])
ws.send_binary(affiliate_msg)
验证接入
| 特性 | DMR Homebrew | TETRA Brew |
|---|---|---|
| 传输协议 | UDP | WebSocket (TCP) |
| 认证方式 | SHA-256 + Salt | HTTP Digest (RFC 2831) |
| 消息格式 | 文本 + 二进制混合 | 纯二进制 |
| 语音编码 | AMBE+2 | ACELP (ETSI) |
| 数据业务 | 有限(SMS) | 完整(SDS/PDP/DTMF) |
| 呼叫类型 | 组呼/私呼 | 组呼/电路/简单/数据 |
| 延迟 | 极低(UDP) | 较低(WebSocket + TCP_NODELAY) |
| 成熟度 | 高(广泛部署) | 较新(TetraPack 项目) |
| 适用场景 | DMR 热点/中继互联 | TETRA 网关/终端接入 |
Q:RoIP 接入和传统射频接入有什么区别?
A:RoIP 通过互联网传输,无需在射频覆盖范围内即可接入系统。但需要稳定的网络连接,且可能存在额外延迟。
Q:我可以同时通过射频和 RoIP 接入吗?
A:不建议同时使用两种方式接入同一 Talkgroup,以避免回声和冲突。
Q:DMR Homebrew 协议的纯软件客户端被允许吗?
A:根据 BrandMeister 的政策,Homebrew 协议保留给带有射频模块的设备使用。纯软件接入请咨询管理员获取合适的协议方案。
Q:TETRA Brew 的语音质量如何?
A:TETRA 使用 ACELP 声码器,60ms 帧长,语音质量在数字集群标准中表现良好。通过 IP 传输时,建议使用 TCP_NODELAY 和 TCP_QUICKACK 选项降低延迟。
Q:Brew 协议接入需要公网 IP 吗?
A:客户端侧通常不需要公网 IP(NAT 穿透即可)。但如果你要自建服务器端网关,则需要公网 IP 或端口映射。
参考资料:
📖 系统概览 · TETRA 接入指南 · DMR 接入指南 · 跨模式桥接 · 常见问题
最后更新:2026年5月