您的购物车目前是空的!
标签: KRAKENSDR
-
KrakenSDR 网页界面控制
一、概述
KrakenSDR 图形用户界面 (GUI) 可以通过任何接入同一网络的设备,在网页浏览器中访问:
http://IP_ADDR:8080
。
如果您使用的是我们提供的预配置镜像,并且所在网络支持主机名解析,也可以通过以下地址访问:http://krakensdr:8080
。该 GUI 可用于启动和停止 KrakenSDR 的数据采集,并控制与测向相关的各类参数,包括:频率、增益以及 VFO(可变频振荡器)通道设置。
二、配置页面
2.1、射频接收机配置
中心频率(Centre Frequency)
处于有效带宽中心的频率。更改此频率并点击 Update(更新) 按钮后,将触发噪声源并启动相干校准过程。
接收机增益(Receiver Gain)
这是五个调谐器的通用增益设置。请在频谱图界面中检查 信噪比 (SNR),并调整增益以获得较高的信噪比,同时避免频谱过载。
注意(NOTE):
对中心频率或接收机增益所做的任何更改,只有在点击 “Update Receiver Parameters”(更新接收机参数) 按钮后才会生效。点击该按钮会启动一次校准流程,该流程可能需要几秒钟才能完成。2.2、到达方向配置(DoA Configuration)
这些设置需要根据您所使用的天线阵列架构和个人需求进行配置。
阵列配置(Array Configuration)
选择您所使用的天线阵列类型,可以是线性阵列 ULA (Uniform Linear Array),或者是环形阵列 UCA (Uniform Circular Array)。
天线半径 / 阵元间距(Antenna Radius / Interelement Spacing)
设置环形阵列的半径,或线性阵列的阵元间距(单位:米)。
波长倍数(Wavelength Multiplier)
(不可编辑)显示基于频率和阵列尺寸计算得到的间距倍数。该值应始终保持在 0.5 以下,并且理想情况下应 大于 0.2。该值越接近 0.5,角度分辨率越高。
启用 DoA 估计(Enable DoA Estimation)
启用测向算法的计算。
DoA 算法(DoA Algorithm)
在多种测向算法之间进行选择。在绝大多数情况下,推荐使用 MUSIC 算法。
去相关(Decorrelation)
“相关信号”通常指 多径信号。多径反射会与真实信号相关联,可以通过特殊算法来减弱其影响。此下拉菜单中可选的算法能够帮助消除不需要的相关信号。
这些去相关算法是针对 ULA 阵列设计的。但如果使用的是 UCA 阵列,并且启用了去相关算法,则系统会基于 UCA 阵列几何结构计算一个实验性的 虚拟 ULA 阵列。通过这种方式,去相关算法也能用于 UCA 阵列。不过需要注意:
- 这种虚拟化可能会引入误差;
- 仅在 大半径阵列 且波长倍数接近该频率最大值 0.5 时有效。
您可以尝试不同的去相关方法。目前这些算法仍然是新的实验性功能,我们还没有足够的信息来判断在什么场景下、哪种算法的效果最佳。
ULA 输出方向(ULA Output Direction)
在使用 ULA 阵列时,无法判断目标位于阵列的前方还是后方。
但如果您有先验信息,能够确认目标一定在阵列前方或后方,那么可以通过此处的设置屏蔽掉其中一个方向。阵列偏移(Array Offset)
如果天线阵列的朝向与载体(例如车辆)的运动轴不一致,可以在此处设置偏移量。
这在 线性阵列 上特别有用:因为对于线性阵列,0 度方向是与阵列正交的。如果阵列安装在车辆的前后方向上,则需要旋转 90 度,使其与车辆的运动轴对齐。预期射频源数量(Expected number of RF sources)
如果您明确知道在同一频率上存在多个信号,可以在此处设置信号源的数量。
但是,如果设置的数量高于实际信号源数量,可能会导致结果不准确。2.3、显示选项(Display options)
这些选项会影响 到达方向 (DoA) 图表 的显示。
DoA 图表类型(DoA Graph Type)
可在 线性图、极坐标图或罗盘式图 之间切换,用于显示 DoA 方位角。
- 线性图和极坐标图 采用单位圆约定:90 度在 0 度的逆时针方向。
- 罗盘式图 采用罗盘/地图约定:90 度在 0 度的顺时针方向。
未来版本中可能会统一改为 罗盘/地图约定,以避免混淆。
罗盘偏移(Compass Offset)
当使用罗盘式图时,可以设置一个罗盘偏移量,用来补偿天线阵列的指向方向。
2.4、VFO配置(VFO Configuration)
配置与 VFO(可变频振荡器)处理 相关的属性。
VFO 允许您在 2.4 MHz 有效带宽 内同时运行多个通道进行测向。频谱计算(Spectrum Calculation)
可选择 单通道(Single Ch) 或 所有通道(All Ch, 仅测试用)。
- 单通道模式:仅显示来自 CH-1 的射频信号;如果启用了 静噪(squelch) 功能,则必须使用该模式。
- 所有通道模式:仅用于测试和故障排查,会显示所有通道的频谱图,但时间分辨率显著降低,因此容易漏掉短暂的间歇信号。
VFO 模式(VFO Mode)
可选择 标准模式(Standard) 和 VFO-0 自动最大(VFO-0 Auto Max)。
- 标准模式:VFO 由用户手动控制,例如手动设置 VFO 的频率。
- VFO-0 自动最大模式:仅启用 VFO-0,它会自动调谐到频谱中最强的信号。
活动 VFO 数量(Active VFOs)
最多可同时启用 16 个 VFO。如有需要可支持超过 16 个,请联系我们。
关于计算能力的注意事项:
在树莓派 4(Raspberry Pi 4)上,如果添加超过 3–4 个始终处于活跃状态的 VFO,处理速度可能会变慢,从而导致带有间歇信号的通道被遗漏。- 如果您不需要捕捉短暂的间歇信号,那么这种性能下降影响不大。
- 如果所有通道都是间歇性的并且正确启用了静噪(squelch),则处理能力足够,因为被静噪的通道不会占用计算资源。
VFO 输出(Output VFO)
可以选择输出 所有 VFO(ALL) 或 单个 VFO。
- ALL 模式 会将所有活跃 VFO 的数据输出为 DoA 数据格式。目前 ALL 仅适用于 Kraken App 和未来的 Kraken Pro App。
- 如果您使用的是其他 DoA 数据输出格式,则只能选择一个 VFO 通道进行输出。
DSP 端抽 decimation(DSP Side Decimation)
如果您只关心窄带信号,可以通过抽 decimation 将 2.4 MHz 的带宽缩小到更小的范围。
例如,抽 decimation 因子为 2 时,带宽减半为 1.2 MHz,依此类推。优化短脉冲(Optimize Short Bursts)
如果您需要检测弱小的、非常窄带的 CW 信号突发(脉冲周期小于约 50 ms),启用此选项能提升检测效果,但会消耗更多计算资源。
2.5、站点信息(Station Information)
本部分用于配置与站点相关的设置,以及站点数据的输出方式。
站点 ID(Station ID)
此 KrakenSDR 站点的名称。用于在网络中区分多个不同的站点。
DoA 数据格式(DOA Data Format)
设置输出数据的格式。
例如:- KrakenSDR Android App 使用的输出格式与 DF Aggregator 不同。
- Kraken App、Kerberos App 和 DF Aggregator 会将数据输出到网页:
http://IP_ADDR:8081/DOA_value.html
- Kraken Pro(本地和远程) 通过 nodeJS websocket 连接输出 JSON 数据。
- RDF Mapper 会直接上传数据到 RDF Mapper PHP API 页面。
Kraken Pro 密钥(Kraken Pro Key)
如果您使用的是(尚未完成的)Kraken Pro Remote 系统,请在此处输入您的唯一密钥。
RDF Mapper 服务器地址(RDF Mapper Server URL)
如果您要上传数据到 RDF Mapper,请在此处输入 RDF Mapper 服务器地址。注意:地址末尾必须包含 /save.php。
位置来源(Location Source)
如果您的 Raspberry Pi 4 上连接了一个 兼容 gpsd 的 USB GPS 设备,则可以将位置信息输出到所选的 DoA 数据格式中(前提是该格式支持 GPS 数据)。
如果您使用的是 Kraken App,则无需单独的 GPS 设备,因为 Kraken App 可以直接使用智能手机的 GPS。经纬度 / 航向(Latitude / Longitude / Heading)
如果您将位置来源设置为 静态(Static),则可以在此手动输入站点的 纬度、经度 和 天线阵列朝向。
2.6、本地数据记录(Local Data Recording)
如果您没有网络连接,或没有连接到本地 Android 设备,您可以将 DoA 数据 直接记录到 SD 卡,以便日后分析。例如,这在无人机应用场景中会非常有用。
日志文件会被写入到目录:
~/krakensdr_doa/krakensdr_doa
文件名(Filename)
为您的 CSV 日志文件选择一个唯一的文件名。数据格式(Data Format)
选择用于记录的数据格式。目前仅支持 Kraken App。
这意味着您可以在 KrakenSDR Android App 中打开本地记录的 CSV 文件,用于绘图和三角定位分析。写入间隔(Write Interval)
设置数据写入日志文件的频率。- 默认值为 1 秒,适合在少量通道下进行数小时的记录。
- 如果需要长时间记录,或使用了多个 VFO,建议增加写入间隔,以避免日志文件过大。
在仅启用 一个 VFO 且写入间隔为 1 秒 时,日志文件的增长速度大约为 100 kB 每分钟。
启用本地数据记录(Enable Local Data Recording)
开启或关闭本地日志功能。文件大小(File Size, MB)
监控日志文件大小,确保文件不会过于庞大。下载文件(Download File)
从 Web GUI 下载日志文件。
⚠️ 注意:该按钮在 KrakenSDR Android App 的内置浏览器 中存在 bug,无法使用。
请在 Android 设备上使用标准的 Chrome 浏览器 来下载文件。2.7、VFO设置(VFO Settings)
对于每一个处于活动状态的 VFO 通道,都会有一个对应的 VFO 控制框。
每个控制框用于单独设置该 VFO 的 频率(Frequency)、带宽(Bandwidth)和静噪(Squelch) 参数。频率(Frequency)
该 VFO 通道的频率,必须位于 2.4 MHz 带宽范围内。
您可以在 状态框(Status box) 中查看 VFO 范围 [MHz] 信息,其中会显示可用的最大和最小频率。带宽(Bandwidth)
设置该 VFO 通道所监测信号的预期带宽。
带宽以 Hz 为单位。静噪(Squelch)
将其设置为高于噪声底(noise floor)的值,以启用 静噪功能。- 启用后,只有在存在有效信号时才会输出 DOA 值。
- 这将防止在只有噪声、没有信号时输出随机的 DOA 值。
- 同时也能在没有信号时节省计算资源。
⚠️ 最大静噪值为 0 dB。
三、实时频谱图(Spectrum Page)
频谱页面(Spectrum Page)
频谱页面用于显示 实时频谱图 和 瀑布图。它还会显示所有已设置 VFO 的 中心频率、带宽和静噪阈值。
当某个 VFO 达到静噪阈值时,会显示为 绿色;未达到时则显示为 红色。点击调谐(Click to tune)
在频谱界面中,您可以通过用鼠标点击 VFO 的中心来选择一个 VFO。
被选中的 VFO 会显示为 边框加粗,表示当前处于选中状态。
(注意:可能需要点击多次才能成功选中,这是当前后端的一个已知 bug。)选中后,您可以在频谱或瀑布图上的任意位置点击,以将该 VFO 移动到新的频率上。
四、到达方向估计(DOA Estimate Page)
该页面显示 到达方向 (DOA) 估计 的图表。
具体显示哪种图表,由 配置页面(Configuration Page) 中的 显示选项(Display Options) 配置框决定。请注意:
- 线性图(Linear) 和 极坐标图(Polar) 使用 单位圆约定,即 90 度在 0 度的逆时针方向。
- 罗盘图(Compass) 使用 罗盘/地图约定,即 90 度在 0 度的顺时针方向。
DOA 页面 主要用于快速检查图表是否显示正确,但在需要时也可以用于手动测向。
正常情况下,推荐的用法是通过 Android App 在地图上显示方位角图。五、附加数据采集设置(Additional DAQ Settings)
软件分为两个部分:数据采集代码(DAQ) 和 到达方向数字信号处理代码(DOA DSP)。
DAQ 设置可以通过 GUI 进行修改,但除非您非常清楚自己在做什么,否则建议不要更改这些设置。以下是一些 DAQ 设置的说明,您可以通过点击 基础 DAQ 配置(Basic DAQ Configuration) 和 高级自定义 DAQ 配置(Advanced Custom DAQ Configuration) 来进行调整。
5.1、射频接收机配置:基础数据采集设置(RF Receiver Configuration: Basic DAQ Settings)
DAQ 设置 也可以通过 网页界面 来控制。
然而,我们建议只有高级用户才去修改 DAQ 设置,哪怕是基础 DAQ 设置。对基础或高级 DAQ 设置所做的更改,可以通过点击 “Reconfigure & Restart DAQ Chain”(重新配置并重启 DAQ 链) 按钮来应用。
⚠️ 此重启过程可能需要几分钟才能完成。预配置 DAQ 文件(Preconfigured DAQ Files)
从预设选项中选择一个 DAQ 文件配置。主要用于在 Kraken 和 旧版 Kerberos 设置 之间切换。数据块长度(Data Block Length)
每个处理数据块的积分时间。- 较大的数据块可提供更高的处理增益(对弱信号有更高的信噪比),但会降低更新速率。
- 默认值 436.9ms 是最佳选择,因为它对应于 2 的幂次 CPI 大小。
重新校准间隔(Recalibration Interval)
系统在进行相干校准检查并在必要时重新校准前所等待的分钟数。
在正常情况下,校准不应丢失,但定期检查仍然是一个好习惯。5.2、射频接收机配置:高级自定义 DAQ 配置(RF Receiver Configuration: Advanced Custom DAQ Configuration)
这些是与 DAQ 代码 相关的高级设置。
⚠️ 在正常情况下,除非有充分理由,否则不建议调整这些设置。接收通道(RX Channel)
设置用于测向的接收通道数量。
适用于自定义系统,或希望在阵列中使用更少天线进行实验的场景。
如果您使用的是四通道的 KerberosSDR,建议使用 kerberos_default 预配置文件,而不是直接修改此项。偏置供电控制(Bias Tee Control)
启用或禁用每个通道的 4.5V 偏置供电。仅当需要为外部设备(如 LNA)供电时才使用。
输入格式为逗号分隔的字符串:1,0,0,0,0
→ 仅 CH-0 启用偏置供电。1,1,1,1,1
→ 所有通道均启用。
DAQ 缓冲区大小(DAQ Buffer Size)
决定 rtl_daq 软件 在传递数据到下一个处理阶段前收集的缓冲区大小。
几乎所有情况下默认值 262144 最优。设置过大或过小都会导致 rtl_daq 线程负担过重或过轻。采样率(Sample Rate)
设置 RTL-SDR 的硬件采样率。最大支持 2.4 MSPS。启用噪声源控制(Enable Noise Source Control)
允许系统控制噪声源以进行相干校准。若完全不使用相干功能,可以关闭。CPI 大小(CPI Size, Coherent Processing Interval)
重缓冲模块会收集 DAQ 缓冲区的数据块,并重整为 CPI 大小。- 较大的 CPI → 更长的采集时间(更大的数据块),但有更高的处理增益。
抽 decimation 比率(Decimation Ratio)
控制 DAQ 端的抽 decimation。如果您通过网络发送原始相干数据,可以使用 decimation 来减少数据量。FIR 滤波抽 decimation 阶数(FIR Tap Size)
抽 decimation 采用 FIR 滤波器。此值必须大于抽 decimation 比率。FIR 窗函数(FIR Window)
设置 FIR 滤波器的窗函数类型。启用滤波器复位(Enable Filter Reset)
在每个新 CPI 上复位 FIR 滤波器的记忆。相关块大小(Correlation Size)
用于校准帧的块大小。较小 → 更快校准,但过小可能导致校准失败。标准通道索引(Standard Channel Index)
指定作为参考通道的索引,所有相位测量都将基于该通道。需要锁定干预(Require Track Lock Intervention, 针对 Kerberos)
尚未完全实现。设想是在旧 Kerberos 单元上,软件在重新校准时应暂停,以便用户可以断开天线。校准跟踪模式(Calibration Track Mode)
- No Tracking(无跟踪):旧 Kerberos 设备必须使用此模式,因为每次重新校准都需要人工断开天线。
- Periodic Tracking(周期性跟踪):适用于 KrakenSDR,或加装了切换器的 KerberosSDR。软件会定期检查相干校准,以防丢失(极少发生)。
校准检查会短暂启用并切换到噪声源,因此检查期间的几秒钟内信号数据会丢失。
校准帧间隔(Calibration Frame Interval)
经过多少帧后进行一次重新校准检查。校准帧突发大小(Calibration Frame Burst Size)
在检查校准时,需要检查多少帧。幅度容差(Amplitude Tolerance)
校准过程中允许的幅度差异范围。相位容差(Phase Tolerance)
校准过程中允许的相位差异范围。最大同步失败次数(Maximum Sync Fails)
需要多少次相干校准同步失败后,才会触发重新校准。IQ 调整来源(IQ Adjustment Source)
提供校准整个系统的选项,通过补偿天线同轴电缆的相位差来实现。- explicit-time-delay(显式时延):如果您用 VNA 测量了时延,可以在此输入相对 CH0 的时延差(单位:纳秒)。
- touchtone(触点文件):您可以从 VNA 导出 S21 或 S12 .s1p 文件,分别对应系统的 5 根同轴电缆,并放入
_calibration
文件夹中。命名为cable_ch0.s1p
,cable_ch1.s1p
等。⚠️ 文件必须覆盖实际使用的频率范围。注意:仅当相位补偿不产生环绕时才有效(即电缆长度差远小于工作频率的波长)。
IQ 幅度调整(IQ Adjust Amplitude)
如果需要手动调整 IQ 幅度,可以在此设置。通常只用于测试。IQ 时延调整(IQ Adjust Time Delay)
如果 IQ 调整来源选择了 explicit-time-delay,请在此输入相对 CH0 的时延差(单位:纳秒)。- 例如,对于 KrakenSDR(5 通道),应输入 4 个值。
- 对于 KerberosSDR(4 通道),应输入 3 个值。
如果 VNA 仅提供 TDR 电缆长度 测量值,也可通过同轴电缆的速度因子(vf)转换为时间: time_delta_x = ( cable_length_delta / (c * vf) ) * 10^9
其中:
- c = 光速(299792458 m/s)
- vf = 电缆速度因子
示例:
假设有三根同轴电缆,速度因子 vf = 0.66,长度略有差异,则可通过公式计算出对应的时延差(单位 ns),并在此处进行补偿。Cable 0: 2.00130m Cable 1: 1.99933m Cable 2: 1.99910m
cable_length_delta_1 = 2.00130m - 1.99933m = 0.00197m cable__length_delta_1 = 2.00130m - 1.99910m = 0.00220m
time_delta_1 = (0.00197m / (c * 0.66)) * 10^9 = 0.009956383ns time_delta_2 = (0.00220m / (c * 0.66)) * 10^9 = 0.011118803ns
对 电缆 2、3、4 重复上述操作,并将计算得到的 time_delta_1、time_delta_2、time_delta_3、time_delta_4 的数值输入到 IQ 时延调整(IQ Adjust Time Delay) 输入框中。
⚠️ 注意:不要在数值后添加任何时间单位(如 ns)。 -
KrakenSDR GNU Radio 模块
简述
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
,以恢复默认行为。