目标(Objective)

目标是利用 IC-9700 的网络接入和 wfview 的音频,解码标准的 1200 波特 AFSK 自动位置报告系统(APRS)分组通信。本操作指南以 Linux 为主,但类似方法在其他操作系统上同样可行。

准备(Setup)

首先,按 Linux 的 Audio Setup 指南操作,创建两个环回设备,每个设备有两个入口点。严格按照该文档操作。重启之后启动 wfview,选择音频环回设备。务必按链接页面所述仔细选择音频端口。如果选错端口,就不会有任何音频。选好端口后点击 Save Settings 并关闭 wfview。可选:用 Audacity 之类的程序来验证音频。

用下面的命令确认能看到环回设备:

eliggett@genesis:~$ arecord -l **** List of CAPTURE Hardware Devices **** card 1: Generic_1 [HD-Audio Generic], device 0: ALC257 Analog [ALC257 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 10: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM] Subdevices: 8/8 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3 Subdevice #4: subdevice #4 Subdevice #5: subdevice #5 Subdevice #6: subdevice #6 Subdevice #7: subdevice #7 card 10: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM] Subdevices: 7/8 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3 Subdevice #4: subdevice #4 Subdevice #5: subdevice #5 Subdevice #6: subdevice #6 Subdevice #7: subdevice #7 card 11: Loopback_1 [Loopback], device 0: Loopback PCM [Loopback PCM] Subdevices: 7/8 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3 Subdevice #4: subdevice #4 Subdevice #5: subdevice #5 Subdevice #6: subdevice #6 Subdevice #7: subdevice #7 card 11: Loopback_1 [Loopback], device 1: Loopback PCM [Loopback PCM] Subdevices: 8/8 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3 Subdevice #4: subdevice #4 Subdevice #5: subdevice #5 Subdevice #6: subdevice #6 Subdevice #7: subdevice #7 eliggett@genesis:~$

需要安装 direwolf 或 multimon-ng,或者两者都装,另外还需要 sox:

$sudo apt-get install direwolf multimon-ng sox

注意,direwolf 的输出更干净,还能把你接收到的内容贡献给 igate 服务器,这相当不错。不要被 direwolf 的配置吓到;就我们的用途而言,配置不过 7 行,详见下文。

除去显而易见的主机名、用户名和密码,我的 wfview 电台访问(Radio Access)设置如下。务必把 CODEC 设为 LPCM 16bit。采样率至少应为 16k(配合 direwolf 时设为 48k、配合 multimon-ng 时设为 22050 可能更容易成功,但我没有试验过。下面的 sox 命令在两种情况下都会把环回设为 48k)。明确地说,Audio Output 应为 “Loopback: PCM (hw:10,0)”,Audio Input 应为 “Loopback: PCM (hw:11,0)”。这依据上面链接的 Audio Configuration。

APRS 的 wfview 音频设置

APRS 的 wfview 音频设置

设置 APRS 程序(Setup the APRS program):

注意:在打开 wfview 之前启动 APRS 链路要容易得多。这是因为 APRS 程序(以及 sox)对采样率和音频格式普遍不太灵活,所以我们先启动 sox 和 APRS 程序,由它们确定音频格式,wfview 再跟随该格式。

对 direwolf,先按最基本的配置来做。我创建了下面的 direwolf 配置文件,命名为 “direwolf.conf”:

ADEVICE null null CHANNEL 0 MYCALL W6EL IGSERVER noam.aprs2.net IGLOGIN W6EL PASSWORDHERE MODEM 1200

PBEACON sendto=IG delay=0:40 every=20 symbol=R& alt=475 lat=34.23386N long=118.25866W comment="iGATE AAPRS rx-only"

可以用此链接获取你的 APRS 密码。我并不太明白它的原理,但无论如何,它对我可用。

multimon-ng 不需要任何配置。

启动 APRS 程序(Starting the APRS programs):

对 direwolf,使用下面的命令(小心复制粘贴!务必正确输入 direwolf 配置文件的路径。):

sox -q -t alsa hw:10,1,0 -e float -b 32 -r 48000 -t raw -b 16 -c 1 -e signed-integer -r 48000 - | direwolf -c ./direwolf.conf -r 48000 -D 1 -t 0 -

对 multimon-ng:

sox -q -t alsa hw:10,1,0 -e float -b 32 -r 48000 -t raw -b 16 -c 1 -e signed-integer -r 22050 - | multimon-ng -t raw -a AFSK1200 -A /dev/stdin

注意,如需的话,可以不带 “-q” 参数启动 sox,也不把输出通过管道接到 APRS 程序。此模式下,可以在一个小条形图中看到音频电平。虽然不会解码,但用于测试音频管道没问题。

这里说明一下,我花了大约两个小时才琢磨出这两条命令。multimon-ng 的采样率必须是 22050,而且 multimon-ng 似乎没有提供选择其他音频设备的办法。direwolf 对采样率比较灵活。sox 必须按环回设备上已经应用的格式来设置环回音频格式,而它不会告诉你那是什么格式!这就是我先启动 sox、再打开 wfview 的原因:让 sox 确定音频格式,wfview 则跟随所应用的格式。

监视 APRS 分组(Monitoring APRS packets)

用上述命令之一(sox + direwolf 或 sox + multimon-ng)启动 wfview,确认已选中环回设备。如有必要,点击 Disconnect,按音频配置指南选择环回设备,然后点击 Save Settings 并点击 Connect。现在把 wfview 调到本地的 APRS 频率,例如南加州使用 144.39 FM。把 AF Gain 滑块调到最大(如果信号过响或失真,调小只会让它变得又轻又失真,因此必要时调整电台上的 LAN RX 电平)。建议把静噪设置为只要有微弱信号就打开,或者按需调到最低。用 “RxAudio” 表头监视来自电台的音频。

若想在地图上显示台站位置,可以试试 xastir 或 YAAC。这两个我都还没试过。

使用 wfview 解码 APRS

wfview 用户手册(中文版) / 在 Linux 下用 wfview 网络音频解码 APRS 分组 0 字 0 行 bg8lng
2026-10-07T16:31:18.975997618Z 2026-10-08T05:31:26.294048224Z