在Windows平台上使用的话,MyriadRF对PothosSDR提供了编译好的版本,可以直接供下载使用,默认安装到C:\Program Files\PothosSDR\bin目录下,包含了各种常见的小工具,部分工具也支持hackrf和PLUTO sdr。在Linux平台上根据下面的项目编译运行也可以。

airspyhf_calibrate.exe
airspyhf_gpio.exe
airspyhf_info.exe
airspyhf_lib_version.exe
airspyhf_rx.exe
airspy_gpio.exe
airspy_gpiodir.exe
airspy_info.exe
airspy_lib_version.exe
airspy_r820t.exe
airspy_rx.exe
airspy_si5351c.exe
airspy_spiflash.exe
bladeRF-cli.exe
bladeRF-fsk.exe
cpspc.exe
CubicSDR.exe
f2cpsp.exe
gnuradio-companion.exe
gnuradio-config-info.exe
gqrx.exe
hackrf_clock.exe
hackrf_cpldjtag.exe
hackrf_debug.exe
hackrf_info.exe
hackrf_operacake.exe
hackrf_spiflash.exe
hackrf_sweep.exe
hackrf_transfer.exe
iio_attr.exe
iio_genxml.exe
iio_info.exe
iio_readdev.exe
iio_reg.exe
iio_writedev.exe
inproc_lat.exe
inproc_thr.exe
inspectrum.exe
LimeQuickTest.exe
LimeSuiteGUI.exe
LimeUtil.exe
list_cpu_features.exe
local_lat.exe
local_thr.exe
miri_sdr.exe
osmo_sdr.exe
PothosFlow.exe
PothosUtil.exe
remote_lat.exe
remote_thr.exe
rtl_adsb.exe
rtl_biast.exe
rtl_eeprom.exe
rtl_fm.exe
rtl_ir.exe
rtl_power.exe
rtl_raw2wav.exe
rtl_sdr.exe
rtl_tcp.exe
rtl_test.exe
rtl_udp.exe
rtl_wavestat.exe
rtl_wavestream.exe
rx_fm.exe
rx_power.exe
rx_sdr.exe
sndfile-cmp.exe
sndfile-concat.exe
sndfile-convert.exe
sndfile-deinterleave.exe
sndfile-info.exe
sndfile-interleave.exe
sndfile-metadata-get.exe
sndfile-metadata-set.exe
sndfile-play.exe
sndfile-salvage.exe
SoapySDRServer.exe
SoapySDRUtil.exe
uhd_cal_rx_iq_balance.exe
uhd_cal_tx_dc_offset.exe
uhd_cal_tx_iq_balance.exe
uhd_config_info.exe
uhd_find_devices.exe
uhd_image_loader.exe
uhd_usrp_probe.exe
volk-config-info.exe
volk_profile.exe
zadig-2.5.exe

Lime 的东西好是好,资料也齐全,就是价格太贵了。

PothosSDR - downloads.myriadrf.org > builds > PothosSDR

image-20250205171724685.webp

gps-sdr-sim

首先要下载gps-sdr-sim,对星历进行转换。默认网上下载的是源代码, 得用GCC编译一下,如果恰好安装了VS,并有C++开发环境则可以直接编译,不然就还是Cygwin编译。

gcc gpssim.c -lm -O3 -o gps-sdr-sim

得到exe文件。

从nasa下载最近的RINEX星历数据文件,https://cddis.nasa.gov/archive/gnss/data/daily/2025/,具体文件命名规则可以百度一下。

image-20250114144711733.webp

  • -e <gps_nav> 指定 GPS 星历的 RINEX 导航文件(必需)
  • -u <user_motion> 指定用户运动文件,格式为 ECEF 坐标系下的 x, y, z(动态模式)
  • -x <user_motion> 指定用户运动文件,格式为纬度、经度、高度(动态模式)
  • -g <nmea_gga> 指定 NMEA GGA 数据流(动态模式)
  • -c <location> 指定静态模式下的 ECEF 坐标系 X, Y, Z 坐标(单位:米),例如:3967283.154,1022538.181,4872414.484
  • -l <location> 指定静态模式下的纬度、经度、高度,例如:35.681298,139.766247,10.0
  • -L <wnslf,dn,dtslf> 指定用户未来的闰秒事件,格式为 GPS 周数、天数、下一个闰秒,例如:2347,3,19
  • -t <date,time> 指定场景开始时间,格式为 YYYY/MM/DD,hh:mm:ss
  • -T <date,time> 覆盖 TOC 和 TOE 为场景开始时间
  • -d <duration> 指定持续时间(单位:秒),动态模式最大 300 秒,静态模式最大 86400 秒
  • -o <output> 指定 I/Q 采样数据输出文件(默认:gpssim.bin
  • -s <frequency> 指定采样频率(单位:Hz,默认:2600000)
  • -b <iq_bits> 指定 I/Q 数据格式 [1/8/16](默认:16)
  • -i 禁用电离层延迟(适用于航天器场景)
  • -p [fixed_gain] 禁用路径损耗并保持功率恒定
  • -v 显示模拟通道的详细信息

hackrf_transfer

将得到的gpssim.bin,通过hackrf_transfer进行发送,通过参数配置可修改频率、功率等内容。

指定以下选项之一:-t-c-r-w

用法:

  • -h # 显示帮助信息。
  • [-d serial_number] # 指定目标 HackRF 设备的序列号。
  • -r <filename> # 接收数据并保存到文件(使用 - 表示输出到标准输出)。
  • -t <filename> # 从文件读取数据并发送(使用 - 表示从标准输入读取)。
  • -w # 接收数据并保存为带有 WAV 头的文件,文件名自动生成。

    • 此选项用于兼容 SDR# 软件,可能不适用于其他软件。
  • [-f freq_hz] # 设置频率,单位为 Hz(范围:0MHz 到 7250MHz)。
  • [-i if_freq_hz] # 设置中频(IF),单位为 Hz(范围:2150MHz 到 2750MHz)。
  • [-o lo_freq_hz] # 设置前端本地振荡器(LO)频率,单位为 Hz(范围:84MHz 到 5400MHz)。
  • [-m image_reject] # 选择镜像抑制滤波器,0=旁路,1=低通,2=高通。
  • [-a amp_enable] # 启用或禁用 RX/TX 射频放大器,1=启用,0=禁用。
  • [-p antenna_enable] # 启用或禁用天线端口电源,1=启用,0=禁用。
  • [-l gain_db] # 设置 RX LNA(中频)增益,范围为 0-40dB,步进为 8dB。
  • [-g gain_db] # 设置 RX VGA(基带)增益,范围为 0-62dB,步进为 2dB。
  • [-x gain_db] # 设置 TX VGA(中频)增益,范围为 0-47dB,步进为 1dB。
  • [-s sample_rate_hz] # 设置采样率,单位为 Hz(范围:2-20MHz,默认 10MHz)。
  • [-n num_samples] # 设置传输的样本数量(默认无限制)。
  • [-c amplitude] # 启用 CW 信号源模式,设置幅度为 0-127(DAC 的直流值)。
  • [-R] # 启用重复发送模式(默认关闭)。
  • [-b baseband_filter_bw_hz] # 设置基带滤波器带宽,单位为 Hz。

    • 可选值:1.75/2.5/3.5/5/5.5/6/7/8/9/10/12/14/15/20/24/28MHz,默认值 <= 0.75 * 采样率。
  • [-C ppm] # 设置内部晶体时钟误差,单位为 ppm。
  • [-H hw_sync_enable] # 使用 GPIO 引脚同步 USB 传输。

-f 1575420000指使用L1波段发射。-s 2600000指采样速率2.6Mbps。

image-20250114144731512.webp

不过hackrf_transfer并非是实时的,一般的GPS模块只要功率覆盖足够是没有问题的;有的APP软件通过时间、星历等外部参数判断,是可以识别到定位异常的,如有更高要求,可以去寻找更完善功能的改进版本。

文章目录