简述
GNU Radio 是一款流行的免费开源工具包,提供各种数字信号处理模块。您可以使用它来构建解调器、解码器,以及各种利用相干数据的应用,例如干涉测量和波束形成。
KrakenSDR 源模块的工作原理
gr-krakensdr
模块与 KrakenSDR 的数据采集软件 Heimdall 协同工作。Heimdall 是 KrakenSDR 的核心软件,负责确保所有通道的采样数据在时间和相位上保持一致性(相干性)。
在启动时,Heimdall 会自动完成采样和相位一致性的校准,并在运行过程中定期检查以确认相干性是否保持稳定。GNU Radio 中的该模块通过 TCP 套接字连接 从 Heimdall 接收相干 IQ 数据,用于后续的信号处理。
Heimdall 服务器既可以运行在与 GNU Radio 程序相同的主机上,也可以运行在网络连接的设备上,例如 树莓派 4(Raspberry Pi 4)。
但如果使用网络传输,您需要确保网络带宽足以支持 5 通道的数据吞吐量。
模块安装
KrakenSDR 的源代码块可在
https://github.com/krakenrf/gr-krakensdr获取。
模块预览


这是一个用于 KrakenSDR 的 GNU Radio 模块。它通过 TCP 套接字连接与 KrakenSDR 的数据采集服务器软件 Heimdall 通信。
Heimdall 负责通过噪声源进行所有采样同步与相位一致性的校准,而该模块则接收 经过校准的相干 IQ 数据,并将其提供给 GNU Radio 进行后续的 数字信号处理(DSP)。
GNU Radio OOT Block 安装说明
sudo apt-get install gnuradio-dev cmake libspdlog-dev clang-format
git clone https://github.com/krakenrf/gr-krakensdr
cd gr-krakensdr
mkdir build
cd build
cmake ..
make
sudo make install
使用说明
首先安装Heimdall https://github.com/krakenrf/heimdall_daq_fw.
如果你使用的是预配置的测向镜像,首先需要禁用测向软件的自动启动,否则可能会干扰 Heimdall 的连接。进入 /boot
目录,将 start_kraken.sh
重命名,例如改为 start_kraken.sh_stop
,以停止测向应用的自动启动。
接下来,将本仓库中的 heimdall_only_start.sh
和 heimdall_only_stop.sh
文件复制到你的 krakensdr 根目录中。
然后,在 heimdall_daq_fw
文件夹中,编辑 Firmware/daq_chain_config.ini
文件,将 out_data_iface_type
的值修改为 eth
。
[data_interface]
out_data_iface_type = eth
然后,在 krakensdr 根目录下运行:
./heimdall_only_start.sh
现在你可以启动包含 KrakenSDR 源模块的 GRC 文件,程序将会通过套接字连接到本地 IP 地址 127.0.0.1 上运行的 heimdall 程序。
另外,你也可以在一台联网设备上运行 heimdall 程序,但需要确保使用高速千兆网络,并尽可能是直连方式,以保证网络吞吐量足以处理五个通道的数据。
GNU Radio KrakenSDR 示例流程图
我们还提供了三个示例 GRC 流程图,以及一个互相关器(cross correlator)和一个 DOA MUSIC 块,以帮助用户熟悉源模块的使用。
示例 1 – 简单的多通道 FFT
第一个示例文件提供了每个输出通道的 简单 FFT 频谱显示。名为“kraken_fft_display.grc”。

示例 2 – 使用 DOA MUSIC 块进行无线电测向
第二个示例使用 DOA MUSIC 块,配合天线阵列,实现无线电测向并输出信号的方位角信息。名为“kraken_music_doa.grc”。

示例 3 – 交叉相关采样与相位一致性检查
最后一个示例可用于验证 Heimdall 输出是否真正保持相干,方法是对 通道 1 到 4 与参考通道 0 之间进行交叉相关处理。
要使用该相关流程图,您需要在 Heimdall 源代码中修改一行代码,以强制噪声源始终保持开启状态。

要测试该模块,您需要对 Heimdall 核心代码进行轻微修改,以使噪声源保持常开:
1、使用文本编辑器打开文件:
Firmware/_daq_core/rtl_daq.c
2、在文件结尾附近,找到以下函数调用:
rtlsdr_set_bias_tee_gpio(..., 0);
将最后的 0
改为 1
,使噪声源始终开启:
rtlsdr_set_bias_tee_gpio(..., 1);
3、然后在目录 Firmware/_daq_core
中运行:
make
4、完成测试后,请务必将这处修改还原为 0
,并再次运行 make
,以恢复默认行为。
发表回复