hackrf使用gps-sdr-sim
在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
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/,具体文件命名规则可以百度一下。
-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。
不过hackrf_transfer并非是实时的,一般的GPS模块只要功率覆盖足够是没有问题的;有的APP软件通过时间、星历等外部参数判断,是可以识别到定位异常的,如有更高要求,可以去寻找更完善功能的改进版本。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。