SDR

SDR是软件定义无线电的缩写,是一种利用软件来实现无线电信号处理的技术。

SDR可以通过通用硬件平台来快速地实现信号的调制解调、编码运算等功能,为通信系统的建设和研发提供了新的思路和方法。SDR有很多优点,比如灵活性、可重新配置性和频谱利用率等。SDR也有一些挑战,比如信号处理的复杂性、硬件限制、互操作性、系统集成和测试等。

无线电

无线电是指在自由空间(包括空气和真空)传播的电磁波,在电磁波谱上,其波长长于红外线光(IR)。无线电的频率范围从数Hz到300GHz,不过商业上重要的无线电频段只占其中的一小部分。

无线电的最早应用于航海中,使用摩尔斯电报在船与陆地间传递信息。现在,无线电有着多种应用形式,包括无线数据网,各种移动通信以及无线电广播等。

无线电的基本原理是利用发射器产生高频率交流电,产生电磁场,而经由电磁场可产生无线电波。无线电波可以用天线接收其信号,然后用接收器将信号解调,转换成可用的的讯号,例如声音、影像、数位资料等。无线电的技术包括调制解调、信道编码、均衡和分集等关键技术,以及扩展频谱通信、正交频分复用和多天线技术等核心技术。

设备

用于测试无线电信号的设备:

  • Airspy

Airspy SDR – High Quality Software-Defined Radio, Redefined

  • HackRF One

https://greatscottgadgets.com/hackrf/

软件定义无线电外设,能够传输或接收 1 MHz 至 6 GHz(半双工)的无线电信号。

  • Nuand

Home

  • RTL-SDR

Buy RTL-SDR Dongles (RTL2832U)

适合初学者的最便宜的 SDR。它是一种基于计算机的无线电扫描仪,用于接收频率从 500 kHz 到 1.75 GHz 的实时无线电信号

  • YARD Stick One

https://greatscottgadgets.com/yardstickone/

半双工低于 1 GHz 无线收发器

  • LimeSDR

https://www.crowdsupply.com/lime-micro/limesdr

 软件定义无线电外设,能够传输或接收 100 KHz 至 3.8 GHz(全双工)的无线电信号

  • USRP B系列

https://www.ettus.com/product-categories/usrp-bus-series/

软件定义无线电外设,能够传输或接收 70 MHz 至 6 GHz(全双工)的无线电信号

天线

无线电天线是一种能够有效地向空间某特定方向辐射或接收无线电波的装置,是无线电通信系统中不可缺少的重要组成部分。无线电天线的类型和特点有很多,根据不同的分类标准,可以有不同的划分方法。以下是一些常见的分类方式:

  • 按工作性质分类,可以分为发射天线、接收天线和收发共用天线。发射天线是将无线电发信机输出的射频信号,通过馈线输送到天线,以电磁波形式辐射出去。接收天线是将空间中的电磁波截获,并通过馈线送到无线电收信机。收发共用天线是既可以用作发射天线,又可以用作接收天线的天线,通常需要借助天线开关或双工器来实现收发切换。
  • 按用途分类,可以分为通信天线、广播天线、电视天线、雷达天线、导航天线、测向天线等。通信天线是用于无线电通信系统中的天线,如移动电话、无线局域网、卫星通信等。广播天线是用于无线电广播系统中的天线,如调频广播、短波广播等。电视天线是用于无线电电视系统中的天线,如模拟电视、数字电视等。雷达天线是用于雷达系统中的天线,如气象雷达、导航雷达、军事雷达等。导航天线是用于无线电导航系统中的天线,如全球定位系统(GPS)、无线电罗盘、无线电航标等。测向天线是用于无线电测向系统中的天线,如无线电测向仪、无线电方位仪、无线电测距仪等。
  • 按方向性分类,可以分为全向天线和定向天线。全向天线是指在水平面上辐射或接收电磁波的能力相同或近似相同的天线,如鞭状天线、环形天线、共线阵列天线等。定向天线是指在水平面上辐射或接收电磁波的能力有明显差别的天线,如偶极天线、八木天线、反射阵列天线、喇叭天线、抛物面天线等。
  • 按极化特性分类,可以分为线极化天线、圆极化天线和椭圆极化天线。线极化天线是指电场矢量在空间运动的轨迹为直线的天线,如垂直极化天线、水平极化天线、斜极化天线等。圆极化天线是指电场矢量在空间运动的轨迹为圆的天线,如左旋圆极化天线、右旋圆极化天线等。椭圆极化天线是指电场矢量在空间运动的轨迹为椭圆的天线,如线圆混合极化天线、双线极化天线等。
  • 按频带特性分类,可以分为窄频带天线、宽频带天线和超宽频带天线。窄频带天线是指工作频带宽度相对于中心频率很小的天线,如半波振子天线、单频段天线等。宽频带天线是指工作频带宽度相对于中心频率较大的天线,如对数周期天线、双频段天线等。超宽频带天线是指工作频带宽度相对于中心频率非常大的天线,如螺旋天线、Vivaldi天线等。

无线电波

无线电波是指在自由空间(包括空气和真空)传播的电磁波,在电磁波谱上,其波长长于红外线光(IR)。

工具

  • GNU Radio

https://github.com/gnuradio/gnuradio

GNU Radio 是一个免费开源软件开发工具包,提供信号处理块来实现软件无线电。它可以与现成的低成本外部射频硬件一起使用来创建软件定义的无线电,或者在类似模拟的环境中不使用硬件。它广泛应用于业余爱好者、学术和商业环境,以支持无线通信研究和现实世界的无线电系统。

安装:

sudo apt-get install gnuradio
  • GNSS-SDR

https://gnss-sdr.org/

该程序是一个软件定义的接收器,能够处理(即执行导航消息的检测、同步、解调和解码、可观测值的计算,最后计算定位)以下全球导航卫星系统的信号:

在L1频段:

  • 🛰 GLONASS L1 C/A(中心频率为 1602.000 MHz)✅
  • 🛰 GPS L1 C/A(以 1575.420 MHz 为中心)✅
  • 🛰 Galileo E1b/c(中心频率为 1575.420 MHz)✅
  • 🛰 北斗 B1I(中心频率为 1561.098 MHz)✅

在E6频段:

  • 🛰 Galileo E6B(中心频率为 1278.750 MHz)✅

在 L2 频段:

  • 🛰 北斗 B3I(中心频率为 1268.520 MHz)✅
  • 🛰 GLONASS L2 C/A(中心频率为 1246.000 MHz)✅
  • 🛰 GPS L2C(以 1227.600 MHz 为中心)✅

在L5频段:

  • 🛰 Galileo E5b(中心频率为 1207.140 MHz)✅
  • 🛰 Galileo E5a(中心频率为 1176.450 MHz)✅
  • 🛰 GPS L5(以 1176.450 MHz 为中心)

安装:

sudo apt-get install gnss-sdr

下载原始信号样本文件:

mkdir work
cd work
wget https://sourceforge.net/projects/gnss-sdr/files/data/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.tar.gz
tar -zxvf 2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.tar.gz

编辑.conf文件:

[GNSS-SDR]

;######### GLOBAL OPTIONS ##################
GNSS-SDR.internal_fs_sps=2000000

;######### SIGNAL_SOURCE CONFIG ############
SignalSource.implementation=File_Signal_Source
SignalSource.filename=/home/your-username/work/data/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat
SignalSource.item_type=ishort
SignalSource.sampling_frequency=4000000
SignalSource.samples=0

;######### SIGNAL_CONDITIONER CONFIG ############
SignalConditioner.implementation=Signal_Conditioner
DataTypeAdapter.implementation=Ishort_To_Complex
InputFilter.implementation=Pass_Through
InputFilter.item_type=gr_complex
Resampler.implementation=Direct_Resampler
Resampler.sample_freq_in=4000000
Resampler.sample_freq_out=2000000
Resampler.item_type=gr_complex

;######### CHANNELS GLOBAL CONFIG ############
Channels_1C.count=8
Channels.in_acquisition=8
Channel.signal=1C

;######### ACQUISITION GLOBAL CONFIG ############
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
Acquisition_1C.item_type=gr_complex
Acquisition_1C.pfa=0.01
Acquisition_1C.doppler_max=10000
Acquisition_1C.doppler_step=250
Acquisition_1C.blocking=true

;######### TRACKING GLOBAL CONFIG ############
Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
Tracking_1C.item_type=gr_complex
Tracking_1C.pll_bw_hz=40.0;
Tracking_1C.dll_bw_hz=4.0;

;######### TELEMETRY DECODER GPS CONFIG ############
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder

;######### OBSERVABLES CONFIG ############
Observables.implementation=Hybrid_Observables

;######### PVT CONFIG ############
PVT.implementation=RTKLIB_PVT
PVT.positioning_mode=Single
PVT.output_rate_ms=100
PVT.display_rate_ms=500
PVT.iono_model=Broadcast
PVT.trop_model=Saastamoinen
PVT.flag_rtcm_server=true
PVT.flag_rtcm_tty_port=false
PVT.rtcm_dump_devname=/dev/pts/1
PVT.rtcm_tcp_port=2101
PVT.rtcm_MT1019_rate_ms=5000
PVT.rtcm_MT1077_rate_ms=1000
PVT.rinex_version=2

指定配置文件运行如下命令:

gnss-sdr --config_file=./my-first-GNSS-SDR-receiver.conf

几秒钟后检测到 GPS 信号并解码其导航消息的一些帧(至少来自四颗卫星的子帧 1、2 和 3):

...
Current receiver time: 14 s
New GPS NAV message received in channel 3: subframe 1 from satellite GPS PRN 20 (Block IIR)
New GPS NAV message received in channel 0: subframe 1 from satellite GPS PRN 01 (Block IIF)
New GPS NAV message received in channel 4: subframe 1 from satellite GPS PRN 32 (Block IIF)
New GPS NAV message received in channel 2: subframe 1 from satellite GPS PRN 17 (Block IIR-M)
Current receiver time: 15 s
Current receiver time: 16 s
Current receiver time: 17 s
Current receiver time: 18 s
Current receiver time: 19 s
Current receiver time: 20 s
New GPS NAV message received in channel 3: subframe 2 from satellite GPS PRN 02 (Block IIR)
New GPS NAV message received in channel 0: subframe 2 from satellite GPS PRN 01 (Block IIF)
New GPS NAV message received in channel 4: subframe 2 from satellite GPS PRN 32 (Block IIF)
New GPS NAV message received in channel 1: subframe 2 from satellite GPS PRN 11 (Block IIR)
New GPS NAV message received in channel 2: subframe 2 from satellite GPS PRN 17 (Block IIR-M)
Current receiver time: 21 s
Current receiver time: 22 s
Current receiver time: 23 s
Current receiver time: 24 s
Current receiver time: 25 s
Current receiver time: 26 s
New GPS NAV message received in channel 3: subframe 3 from satellite GPS PRN 20 (Block IIR)
New GPS NAV message received in channel 0: subframe 3 from satellite GPS PRN 01 (Block IIF)
New GPS NAV message received in channel 4: subframe 3 from satellite GPS PRN 32 (Block IIF)
New GPS NAV message received in channel 2: subframe 3 from satellite GPS PRN 17 (Block IIR-M)
New GPS NAV message received in channel 1: subframe 3 from satellite GPS PRN 11 (Block IIR)
First position fix at 2013-Apr-04 06:23:31.740000 UTC is Lat = 41.2749 [deg], Long = 1.98754 [deg], Height= 100.795 [m]
Position at 2013-Apr-04 06:23:32.000000 UTC using 4 observations is Lat = 41.274888307 [deg], Long = 1.987581872 [deg], Height = 86.928 [m]
Position at 2013-Apr-04 06:23:32.500000 UTC using 4 observations is Lat = 41.274964746 [deg], Long = 1.987510141 [deg], Height = 90.557 [m]
Current receiver time: 27 s
Position at 2013-Apr-04 06:23:33.000000 UTC using 4 observations is Lat = 41.274921885 [deg], Long = 1.987605767 [deg], Height = 73.365 [m]
Position at 2013-Apr-04 06:23:33.500000 UTC using 4 observations is Lat = 41.274866502 [deg], Long = 1.987553835 [deg], Height = 83.313 [m]
Current receiver time: 28 s
Position at 2013-Apr-04 06:23:34.000000 UTC using 4 observations is Lat = 41.274904024 [deg], Long = 1.987612510 [deg], Height = 87.615 [m]
Position at 2013-Apr-04 06:23:34.500000 UTC using 4 observations is Lat = 41.274877911 [deg], Long = 1.987553312 [deg], Height = 81.405 [m]
Current receiver time: 29 s
Position at 2013-Apr-04 06:23:35.000000 UTC using 4 observations is Lat = 41.274916750 [deg], Long = 1.987576650 [deg], Height = 108.288 [m]
Position at 2013-Apr-04 06:23:35.500000 UTC using 4 observations is Lat = 41.274803167 [deg], Long = 1.987562527 [deg], Height = 90.144 [m]
Current receiver time: 30 s
Position at 2013-Apr-04 06:23:36.000000 UTC using 4 observations is Lat = 41.275044618 [deg], Long = 1.987619037 [deg], Height = 102.346 [m]
Position at 2013-Apr-04 06:23:36.500000 UTC using 4 observations is Lat = 41.274878468 [deg], Long = 1.987557377 [deg], Height = 102.764 [m]
Current receiver time: 31 s
Position at 2013-Apr-04 06:23:37.000000 UTC using 4 observations is Lat = 41.274995336 [deg], Long = 1.987554843 [deg], Height = 113.653 [m]
Position at 2013-Apr-04 06:23:37.500000 UTC using 4 observations is Lat = 41.274951615 [deg], Long = 1.987600581 [deg], Height = 92.064 [m]
Current receiver time: 32 s
...
  • rtl 433

https://github.com/merbanan/rtl_433

用于解码来自 ISM 频段(和其他频率)设备的无线电传输的程序

安装:

apt-get install rtl-433

运行:

rtl_433
  • Gqrx

https://github.com/gqrx-sdr/gqrx

Gqrx 是使用GNU RadioQt GUI 工具包实现的开源软件定义无线电 (SDR) 接收器 。目前它可以在 Linux 和 Mac 上使用 gr-osmosdr 支持的硬件,包括 Funcube Dongle、RTL-SDR、Airspy、HackRF、BladeRF、RFSpace、USRP 和 SoapySDR。

Gqrx 可以作为具有音频输出的 AM/FM/SSB 接收器或仅 FFT 仪器运行。还有各种使用网络套接字与外部应用程序交互的钩子。

  • Universal Radio Hacker

https://github.com/jopohl/urh

Universal Radio Hacker (URH) 是一套用于无线协议研究的完整套件,具有对许多常见软件定义无线电的本机支持。URH 可以轻松解调信号,并自动检测调制参数,从而轻松识别空中传输的比特和字节。由于数据通常在传输前进行编码,URH 提供可定制的解码,甚至可以破解 CC1101 数据白化等复杂的编码。当涉及协议逆向工程时,URH 在两个方面有帮助。您可以手动分配协议字段和消息类型,也可以让 URH通过基于规则的智能自动推断协议字段。最后,URH 需要一个针对无状态协议的模糊组件和一个用于状态攻击的模拟环境。

安装:

pipx install urh
  • Spectrum

https://github.com/miek/inspectrum

spectrum 是一种用于分析捕获信号的工具,这些信号主要来自软件定义的无线电接收器。

HackTV

https://github.com/fsphil/hacktv

从视频文件、流中生成 PAL、NTSC、SECAM、D/D2-MAC 视频信号或测试模式。还支持较旧的 819、405、240 和 30 线路标准,如 NASA 阿波罗视频标准,包括彩色和单色。

SDR 笔记

包含了几乎所有与 SDR 和无线相关的内容

https://github.com/notpike/SDR-Notes