从硬件连接到软件配置,5分钟内搭建完整的远程电台控制系统
| 设备 | 规格/要求 | 说明 |
|---|---|---|
| 电台设备 | 支持CAT控制的业余电台 | IC-7100、FT-991A、IC-R9000等 |
| 计算机 | macOS或Linux | 推荐8GB+内存,有USB接口 |
| USB声卡 | 支持16kHz采样率 | 推荐USB Audio CODEC |
| 串口线 | USB转串口(RS-232) | 用于电台控制 |
| 音频线 | 3.5mm音频线 | 电台音频输入/输出 |
| 设备 | 用途 |
|---|---|
| ATR-1000 天调 | 自动天调、功率/SWR监测 |
| RTL-SDR | 频谱显示 |
| NanoVNA | 天线分析 |
┌─────────────┐ USB串口 ┌──────────┐
│ 电台设备 │◄──────────────────►│ 计算机 │
│ (IC-7100) │ USB音频 │ (macOS) │
└──────┬──────┘◄──────────────────►└────┬─────┘
│ │
│ 射频 │ 网络
│ │
┌──────▼──────┐ ┌────▼─────┐
│ 天线 │ │ 手机/平板 │
└─────────────┘ └──────────┘
10.15+ (Catalina及以上)
推荐Ubuntu 20.04+, Debian 10+
支持| 软件 | 最低版本 | 用途 | 安装命令 |
|---|---|---|---|
| Python | 3.9+ | 后端运行 | brew install python@3.12 |
| Hamlib | 4.0+ | 电台控制 | brew install hamlib |
| PyAudio | 0.2.11+ | 音频采集 | pip3 install pyaudio |
| Tornado | 6.0+ | Web服务器 | pip3 install tornado |
git clone https://github.com/cheenle/UHRR_mac.git
cd UHRR_mac
# 安装Homebrew (如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装依赖
brew install python@3.12 hamlib portaudio ffmpeg
# 安装Python包
pip3 install pyaudio tornado numpy sounddevice soundfile
# 下载WDSP源码
cd /tmp
git clone https://github.com/g0orx/wdsp.git
cd wdsp
make
# 安装库
sudo cp libwdsp.dylib /usr/local/lib/
# Linux用户
# sudo cp libwdsp.so /usr/local/lib/ && sudo ldconfig
💡 WDSP提供专业的NR2频谱降噪,显著提升接收音质
编辑 MRRC.conf 文件:
# 电台配置
[HAMLIB]
rig_pathname = /dev/cu.usbserial-230 # 根据实际修改
rig_model = IC_M710 # 电台型号
rig_rate = 4800 # 波特率
stop_bits = 2
# 音频设备
[AUDIO]
outputdevice = USB Audio CODEC
inputdevice = USB Audio CODEC
# 服务器配置
[SERVER]
port = 8877
certfile = certs/fullchain.pem
keyfile = certs/radio.vlsc.net.key
# IC-7100示例
rigctld -m 3070 -r /dev/cu.usbserial-230 -s 4800 -C stop_bits=2
# 或使用控制脚本
./mrrc_control.sh start-rigctld
📌 常用电台型号代码:IC-7100=3070, FT-991A=1035, IC-R9000=30003
[SERVER]
port = 8877 # Web服务器端口
certfile = certs/fullchain.pem # TLS证书路径
keyfile = certs/radio.vlsc.net.key # TLS私钥路径
auth = FILE # 认证方式: FILE/PAM
db_users_file = MRRC_users.db # 用户数据库
debug = False # 调试模式
[AUDIO]
outputdevice = USB Audio CODEC # 音频输出设备
inputdevice = USB Audio CODEC # 音频输入设备
sample_rate = 48000 # 采样率
buffer_size = 256 # 缓冲区大小
[HAMLIB]
rig_pathname = /dev/cu.usbserial-230 # 电台串口设备
rig_model = IC_M710 # 电台型号代码
rig_rate = 4800 # 波特率
data_bits = 8
stop_bits = 2
serial_handshake = None
[CTRL]
interval_smeter_update = 0.5 # S表更新间隔(秒)
[PANADAPTER]
sample_rate = 960000
center_freq = 68330000
gain = 10
[WDSP]
enabled = True
sample_rate = 48000
buffer_size = 256
nr2_enabled = True # 频谱降噪
nb_enabled = True # 噪声抑制
anf_enabled = False # 自动陷波
agc_mode = 3 # AGC模式
bandpass_low = 300.0 # 低切频率
bandpass_high = 2700.0 # 高切频率
python3 -c "
import pyaudio
p = pyaudio.PyAudio()
for i in range(p.get_device_count()):
info = p.get_device_info_by_index(i)
print(f'{i}: {info[\"name\"]} (in:{info[\"maxInputChannels\"]}, out:{info[\"maxOutputChannels\"]})')
p.terminate()
"
# 启动所有服务
./mrrc_control.sh start
# 查看状态
./mrrc_control.sh status
# 查看日志
./mrrc_control.sh logs 50
# 1. 启动rigctld
rigctld -m 3070 -r /dev/cu.usbserial-230 -s 4800
# 2. 启动MRRC主服务
python3 ./MRRC
# 3. 启动ATR-1000代理(可选)
./mrrc_control.sh start-atr1000
# 使用安装脚本
./mrrc_setup.sh install
# 或使用launchd
launchctl load ~/Library/LaunchAgents/com.user.mrrc.plist
launchctl start com.user.mrrc
MRRC 支持在一台服务器上运行多个独立实例,每个实例连接不同的电台设备/声卡。
# 创建新实例(自动生成配置文件)
./mrrc_multi.sh create radio1
# 配置实例参数
# 编辑 MRRC.radio1.conf 设置音频设备、串口等
# 启动指定实例
./mrrc_multi.sh start radio1
# 停止指定实例
./mrrc_multi.sh stop radio1
# 查看所有实例状态
./mrrc_multi.sh status
# 查看实例日志
./mrrc_multi.sh logs radio1 50
# 列出所有实例
./mrrc_multi.sh list
| 实例名 | Web端口 | rigctld端口 | Socket路径 |
|---|---|---|---|
| radio1 | 8891 | 4531 | /tmp/mrrc_radio1.sock |
| radio2 | 8892 | 4532 | /tmp/mrrc_radio2.sock |
| radio3 | 8893 | 4533 | /tmp/mrrc_radio3.sock |
📌 每个实例有独立的天调学习参数,存储在 atr1000_tuner.json
# 构建镜像
docker-compose build
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# 使用多实例配置
docker-compose -f docker-compose.multi.yml up -d
devices: - /dev/cu.usbserial-230:/dev/ttyUSB0症状:页面显示"连接断开"
解决:
./mrrc_control.sh logs症状:频率/模式无法改变
解决:
ls /dev/cu.*ps aux | grep rigctldrigctl -m 3070 f症状:听不到接收音频
解决:
./dev_tools/test_audio.py症状:按住发射无反应
解决:
./mrrc_control.sh logs | grep PTT# 测试音频
python3 dev_tools/test_audio.py
# 测试连接
python3 dev_tools/test_connection.py
# 调试音频页面
open dev_tools/debug_audio.html
查看技术文档或加入社区讨论