手把手教程:利用树莓派 + RTL-SDR 搭建 APRS 接收 iGate 网关
APRS(自动分组报告系统)是业余无线电爱好者非常喜爱的数字化通信模式。它通常用于传输位置信息、气象数据或短消息。而 iGate(Internet Gateway) 则是连接本地无线电波与世界的关键节点:它负责接收射频(RF)上的 APRS 数据包,并将其上传至互联网(如 aprs.fi 网站),让全球爱好者都能看到本地电台的活动。
以往搭建 iGate 需要一台传统的电台和声卡接口,成本较高。但现在,借助几十块钱的 RTL-SDR 电视棒和廉价的树莓派 Zero,我们只需花费极低的成本,就能搭建一个 24 小时不间断运行的 仅接收(RX-only)iGate。
本教程将详细讲解如何在树莓派上安装软件、配置 RTL-SDR,并使用强大的解码软件 Dire Wolf,将收到的 APRS 信号上传至 APRS 服务器。
1. 准备工作:硬件与软件清单
在开始动手之前,需要准备好以下硬件和软件资源。
硬件列表
- 树莓派(Raspberry Pi):任意型号均可(推荐 Pi 3B、Pi 4B 或更省电的 Pi Zero W)。确保配有 MicroSD卡(建议 8GB 以上)和电源。
- RTL-SDR 接收器:基于 RTL2832U 芯片的电视棒。为了频率稳定度,建议购买带 TCXO(温度补偿晶体振荡器)的版本(如 RTL-SDR Blog V3).
- 天线:适用于 2米波段(144-148MHz)的天线。如果是简易入门,可以自制 1/4 波长地网天线或购买合适的室外天线。
- (可选)网线或 WiFi:树莓派需要连接互联网以上传数据。

软件概念
- Dire Wolf:一个纯软件的解调器/解码器,充当“声卡”和“终端节点控制器(TNC)”的角色,能将 SDR 传来的音频数据解码为APRS 数据包 。
- rtl_fm:RTL-SDR 驱动库自带的命令行工具,负责调频并输出音频流。
- APRS 密码:使用呼号在指定网站生成,用于向 APRS 服务器验证身份 。
2. 烧录与初始化树莓派系统
推荐使用 Raspberry Pi OS Lite 版本(基于 Debian 的轻量级命令行版本),以节省系统资源。
- 烧录系统:使用 Raspberry Pi Imager 工具,选择操作系统为 “Raspberry Pi OS Lite(32-bit)”,并将其写入 MicroSD 卡 。
- 预配置(Headless 模式):
在烧录前,通过 Imager 工具的高级菜单(Ctrl+Shift+X)提前设置:
开启 SSH(用于远程登录)。
设置用户名(如 pi)和密码。
配置好 WiFi 的 SSID 和密码(如果使用无线网络)。
设置时区为 Asia/Shanghai 或你所在的区域。
3. 启动与连接:
将 SD 卡插入树莓派,连接 RTL-SDR 和天线,然后上电。通过路由器后台查找树莓派的 IP 地址,或使用 nmap 等工具扫描,最后通过 SSH 客户端(如 PuTTY 或终端)登录:
ssh pi@你的树莓派IP地址
3. 编译与安装 Dire Wolf
由于 RTL-SDR 的特殊性,我们不使用 Dire Wolf 的默认音频设备,而是通过“管道”接收来自 rtl_fm 的数据,因此需要确保安装正确。
首先,更新系统并安装编译所需的依赖工具 :
sudo apt update && sudo apt upgrade -y
sudo apt install git build-essential libasound2-dev libudev-dev cmake libusb-1.0-0-dev -y
接下来,从 GitHub 获取 Dire Wolf 源码并进行编译安装:
cd ~
git clone https://github.com/wb2osz/direwolf.git
cd direwolf
mkdir build && cd build
cmake ..
make -j4 # “-j4” 表示启用4线程编译,可根据树莓派核心数调整
sudo make install
make install-conf # 安装默认配置文件
编译过程在树莓派 Zero 上可能需要十几分钟,而在 Pi 3/4 上会快得多。
4. 安装与配置 RTL-SDR 驱动
为了确保树莓派将 RTL-SDR 识别为软件定义无线电设备,而不是默认的电视接收器,需要黑名单掉 DVB-T 驱动 。
克隆并编译 RTL-SDR 库:
cd ~
git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr
mkdir build && cd build
cmake ../ -DINSTALL_UDEV_RULES=ON -DDETACH_KERNEL_DRIVER=ON
make
sudo make install
sudo ldconfig- 屏蔽默认驱动:
创建黑名单配置文件:
sudo nano /etc/modprobe.d/raspi-blacklist.conf
添加以下内容:
blacklist dvb_usb_rtl28xxu
blacklist dvb_usb_v2
blacklist rtl_2830
blacklist rtl_2832
blacklist r820t
重启树莓派:
sudo reboot
- 测试 SDR:
重启后,重新连接 SSH,插入 RTL-SDR 并运行测试命令,检查是否识别成功:
rtl_test -t
如果看到 “Found N devices” 且没有报错,说明驱动加载正常。
5. 配置 Dire Wolf 的 SDR 模式
Dire Wolf 安装时附带了一个针对 SDR 优化的示例配置文件 sdr.conf。我们需要将其复制到用户目录并修改 。
cp ~/direwolf/conf/sdr.conf ~/sdr.conf
nano ~/sdr.conf
主要需要修改以下几个关键部分:
设置你的呼号:找到 MYCALL 行,填入你的业余无线电呼号。根据惯例,iGate 通常使用 SSID 为 -10(例如N0CALL-10)。
MYCALL 你的呼号-10
- 设置 APRS 服务器:根据你所在的地区,选择相应的 APRS 轮换服务器地址 。
中国大陆地区常用:cn.aprs2.net (或 rotate.aprs.net)
北美:noam.aprs2.net
欧洲:euro.aprs2.net
IGSERVER cn.aprs2.net
- 设置登录验证:访问 MagicBug 密码生成器,输入你的呼号(不含SSID),获取 6 位数字密码。然后填入:IGLOGIN 你的呼号-10 你的6位数字密码
(可选)添加信标:为了让地图知道你的 iGate 的物理位置,可以取消注释或添加 PBEACON 行,并修改为你实际的经纬度和注释 。
PBEACON sendto=IG delay=0:30 every=30:00 symbol="igate" overlay=R lat=39.9089 long=116.3975 comment="RPi SDR iGate in Beijing"
(请注意:lat/long 应替换为你的实际坐标,使用十进制格式。)
6. 组合测试与调试
在设置为开机自启之前,先在命令行中测试整个链路是否通畅。
使用 rtl_fm 将树莓派调谐到当地的 APRS 频率(中国大陆和大多数亚太地区为 144.640MHz;美国为 144.39MHz)。将调频后的音频数据通过管道(|)传递给 Dire Wolf,并指定采样率为 24000 Hz 。
rtl_fm -f 144.64M - | direwolf -c ~/sdr.conf -r 24000 -D 1 -
如果一切正常,你将会看到终端开始滚动输出信息:
- 首先显示 Dire Wolf 版本和配置。
- 接着看到 rtl_fm 开始输出采样数据。
- 最终,当有 APRS 信号被接收时,你会看到解码成功的报文,类似于 N0CALL>APRS,TCPIP*,qAC, ...
并显示信号强度。

故障排查:
- PPM 校正:如果收不到信号,可能是 SDR 的频率不准。你可以先在电脑上用 SDR# 等软件配合已知信号计算出 PPM 值,然后在 rtl_fm 命令中加入 -p ppm 参数(例如 -p 40)。
- 增益设置:如果信号太弱或过载,可以尝试使用 -g 参数固定增益(例如 -g 30),而不是使用自动增益。
7.设置开机自启动(systemd)
测试成功后,我们希望树莓派在每次断电重启后自动运行 iGate 功能,无需手动输入命令。这可以通过创建一个 systemd 服务来实现 。
创建服务文件:
sudo nano /lib/systemd/system/direwolf.service
填入以下内容:
[Unit]
Description=Direwolf APRS iGate with RTL-SDR
Wants=network-online.target
After=network-online.target[Service]
User=pi
ExecStart=/bin/sh -c 'rtl_fm -f 144.64M -g 30 -p 0 - | direwolf -c /home/pi/sdr.conf -r 24000 -D 1 -'
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=direwolf[Install]
WantedBy=multi-user.target
注意:请根据你的频率和实际测试结果,修改 -f 后的频率以及 -g(增益)和 -p(PPM)参数。
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable direwolf.service
sudo systemctl start direwolf.service查看运行状态:
sudo systemctl status direwolf.service
查看实时日志:
journalctl -u direwolf.service -f
8. 验证与成果展示
配置完成后,等待几分钟让 iGate 上传数据。打开浏览器访问 https://aprs.fi,在搜索框中输入你的呼号-10(例如 N0CALL-10)。
- 如果一切顺利,你应该能看到一个带“i”标志的灯塔图标出现在你设置的经纬度上。
- 点击你的台站,可以查看最近接收到的所有 APRS 数据包统计。
- 这也意味着,当你本地的火腿朋友发射 APRS 信号时,你的 iGate 就会替他“上网”,为整个 APRS 社区做出了贡献。

9. 进阶优化建议
- 天线是王道:SDR 接收机的灵敏度很大程度上取决于天线。尽量将天线架高,使用馈线损耗小的同轴电缆。
- 散热:如果使用树莓派 4,建议加装散热片,确保长时间运行的稳定性。
- 远程管理:可以安装 watchtower 或简单的 cron 脚本,定期重启服务以防死锁。也可以考虑使用预编译镜像快速部署 。
结语
至此,你已经成功利用树莓派和廉价的 RTL-SDR 搭建了一个功能完备的 APRS iGate。它不仅能让你以极低的成本参与全球 APRS 网络,也为本地无线电社群提供了有价值的公共服务。如果你在搭建过程中遇到问题,欢迎查阅 Dire Wolf 的官方文档或在本站留言交流。73!(Best Regards!)
最后更新于 2026-03-12 23:02:17 并被添加「aprs 树莓派 IGate 网关 aprs网关 aprs IGate」标签,已有 25 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处