SDR: Difference between revisions

No edit summary
 
(26 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[File:SDRsoftware.png|right|thumb|The Linux SDR software stack]]
[[File:SDRsoftware.png|right|thumb|The Linux SDR software stack]]
Software-defined radio moves the majority of radio processing into software, facilitating relatively inexpensive wide-band hardware interfaces to the electromagnetic spectrum, especially those frequencies below 3GHz. Pairing advanced SDRs with software-defined, -tuned, and -selected antennae yields dynamically optimal [https://en.wikipedia.org/wiki/Cognitive_radio cognitive radio]. Perhaps most famously, [https://www.rtl-sdr.com/about-rtl-sdr/ DVB-T television tuners] built around the RTL2832U chip, available in USB-A form factor for less than $30 (particularly the Rafael Micro R820T2), can reliably provide 2MHz of RX bandwidth anywhere from ~30MHz to ~2GHz (still lower frequencies are supported via direct sampling). For $500, [[BladeRF|powerful units]] capable of tremendous bandwidth and range (as well as transmission capabilities) are available, and from there it's not that great a leap to building your own [https://en.wikipedia.org/wiki/Stingray_phone_tracker stingray]--if the cops have 'em, so should you, doyouknowhatiamsayin?
Software-defined radio moves the majority of radio processing into software, facilitating relatively inexpensive wide-band hardware interfaces to the electromagnetic spectrum, especially those frequencies below 3GHz. Pairing advanced SDRs with software-defined, -tuned, and -selected antennae yields dynamically optimal [https://en.wikipedia.org/wiki/Cognitive_radio cognitive radio]. Perhaps most famously, [https://www.rtl-sdr.com/about-rtl-sdr/ DVB-T television tuners] built around the RTL2832U chip, available in USB-A form factor for less than $30 (particularly the Rafael Micro R820T2), can reliably provide 2MHz of RX bandwidth anywhere from ~30MHz to ~2GHz (still lower frequencies are supported via direct sampling). For $500, [[BladeRF|powerful units]] capable of tremendous bandwidth and range (as well as transmission capabilities) are available, and from there it's not that great a leap to building your own [https://en.wikipedia.org/wiki/Stingray_phone_tracker stingray]—if the cops have 'em, so should you, doyouknowhatiamsayin?


[[File:SDRs.jpg|right|thumb|A few of Your Humble Wikist's toys]]
[[File:SDRs.jpg|right|thumb|A few of Your Humble Wikist's toys]]
On the more ballin' end of things, a tricked-out [https://www.pervices.com/shop/ Per Vices Cyan] will run you $290k before shipping.
On the more ballin' end of things, a tricked-out [https://www.pervices.com/cyan/ Per Vices Cyan] will run you $290k before shipping.


Almost every SDR fundamentally works by receiving electromagnetic energy via metal antennae, running that through an amplifier ("analog gain", done to place the signal in the next stage's sweet spot), and sampling the result using an [https://en.wikipedia.org/wiki/Analog-to-digital_converter ADC]. The latter will have a <i>resolution</i> in bits, and a <i>sampling rate</i> measured in samples per second (or Hz). These samples pass through a [https://en.wikipedia.org/wiki/Digital_down_converter digital down converter] circuit, a low-pass filter, and finally decimation, emerging as a (complex) baseband frequency range, and streaming out as I/Q (in-phase and quadrature) pairs.
Almost every SDR fundamentally works by receiving electromagnetic energy via metal antennae, running that through an amplifier ("analog gain", done to place the signal in the next stage's sweet spot), and sampling the result using an [https://en.wikipedia.org/wiki/Analog-to-digital_converter ADC]. The latter will have a <i>resolution</i> in bits, and a <i>sampling rate</i> measured in samples per second (or Hz). These samples pass through a [https://en.wikipedia.org/wiki/Digital_down_converter digital down converter] circuit, a low-pass filter, and finally decimation, emerging as a (complex) baseband frequency range, and streaming out as I/Q (in-phase and quadrature) pairs.
Line 10: Line 10:


==Hardware==
==Hardware==
SDRs are available both as standalone units and attachments for a PC, where PC functionality will generally be required for processing and display. I will generally be discussing only the latter. For a nice example of a self-contained solution, see  the [https://www.crowdsupply.com/lime-micro/limenet-micro LimeSDR Micro] rather than connecting via USB, it comes with a mated [[Raspberry Pi|Raspberry Pi 3]].
SDRs are available both as standalone units and attachments for a PC, where PC functionality will generally be required for processing and display. I will generally be discussing only the latter.


===Hosted SDRs===
===Hosted SDRs===
The following SDRs all require an attached computer; they are not standalone devices. I have personal experience with those in green.
The following SDRs all require an attached computer; they are not standalone devices. I have personal experience with those in green.
{|class="wikitable"
{|class="wikitable sortable"
|-
|-
! Device !! Tuner !! BW (MHz) || Samples (M) || ADC || Tune (MHz) || Xmit? || FPGA? || Bus || MSRP
! Device !! Tuner !! BW (MHz) || Samples (M) || ADC || Tune (MHz) || Xmit? || FPGA? || Bus || VendID || ProdID || MSRP
|- style="background-color: palegreen"
|- style="background-color: palegreen"
| RTL-SDRv3 || R820TR2 || 2.4 sustained<br/>3.2 peak || || 8 || 25--1750 || No || No || USB2A || $20
| RTL-SDRv3 || R820TR2 || 2.4 sustained<br/>3.2 peak || || 8 || 25–1750 || No || No || USB2A || 0bda || 2838 || $20
|- style="background-color: palegreen"
|- style="background-color: palegreen"
| NooElec NESDR<br/>SMArt || R820TR2 || 2.4 sustained<br/>3.2 peak||0.225--0.3<br/>0.9--2.56 || 8 || 25--1750 || No || No || USB2A || $20
| NooElec NESDR<br/>SMArt || R820TR2 || 2.4 sustained<br/>3.2 peak||0.225–0.3<br/>0.9–2.56 || 8 || 25–1750 || No || No || USB2A || 0bda || 2838 || $20
|-
|-
| NooElec NESDR<br/>SMArt XTR || E4000 || 2.4 || || 8 || 65--1100<br/>1200--2300 || No || No || USB2A || $35
| [https://github.com/signalens/signalsdrpro/ Signalens SignalSDR Pro] || AD9361 || 56 || 61.44 || 12 || 70–6000 || 2 || Zynq 7020 || USB3, GigE || || || $899
|-
|-
| SDRPlay RSP2 || || 10 || || 12 || DC--2000 || No || No || USB2B || $170
| NooElec NESDR<br/>SMArt XTR || E4000 || 2.4 || || 8 || 65–1100<br/>1200–2300 || No || No || USB2A || 0bda || 2832 || $35
|-
|-
| SDRPlay RSP1A || MSI001 || 6 || || 14 || DC--2000 || No || No || USB2B || $100
| [https://www.sdrplay.com/rspdxR2/ RSPdx-R2] || MSi001 || 10 || 10.66 || 14 || 1–2000 || No || No || USB2B || ||
|-
|-
| SDRPlay RSPDuo || || 2x10 || 2--10.66 ||14 || DC--2000 || No || No || USB2B || $280
| [https://www.sdrplay.com/rsp2/ SDRPlay RSP2] ||  || 10 || 10.66 || 12 || DC–2000 || No || No || USB2B || || || $170
|-
| SDRPlay RSP1A || MSi001 || 6 || || 14 || DC–2000 || No || No || USB2B || || || $100
|-
| SDRPlay RSPDuo || || 2x10 || 2–10.66 ||14 || DC–2000 || No || No || USB2B || || || $280
|- style="background-color: palegreen"
|- style="background-color: palegreen"
| HackRF One ||RFFC5072 || 20 || 2--20 || 8 || 1--6000 || Half || No || USB2Aµ  || $300
| HackRF One ||RFFC5072 || 20 || 2–20 || 8 || 1–6000 || Half || No || USB2Aµ  || || || $300
|- style="background-color: palegreen"
| LimeSDR || LMS7002M || 61.44 || 2.5–61.44 || 12 || 30–3800 || 2x || Cyclone IV || USB3 || 1d50 || 6108 || $300
|-
|-
| LimeSDR || LMS7002M || 61.44 || 2.5--61.44 || 12 || 30--3800 || 2x || Cyclone IV || USB3 || $300
| LimeSDR Mini || LMS7002M || 30.72 || 30.72 || 12 || 10–3500 || 1x || Altera MAX 10 || USB3A || 0403 || 601f || $159
|-
|-
| LimeSDR Mini || LMS7002M || 30.72 || 30.72 || 12 || 10--3500 || 1x || Altera MAX 10 || USB3A || $159
| LimeSDR Micro || LMS7002M || 10 || 10 || 12 || 10–3500 || 1x || Altera MAX 10 || GigE || || || $300
|- style="background-color: palegreen"
| AirSpy R2 || R820TR2 || 10 || 2.5–10 || 12 || 24–1800 || No || No || USB2Aµ || || || $170
|-
|-
| LimeSDR Micro || LMS7002M || 10 || 10 || 12 || 10--3500 || 1x || Altera MAX 10 || GigE || $300
| AirSpy Mini || R820TR2 || 12 || 6 || 12 || 24–1750 || No || No ||  USB2Aµ || || || $100
|-
| AirSpy HF+ ||  || 0.768 ||  || 16 || DC–31<br/>60–260 || No || No || USB2Aµ || || || $150
|- style="background-color: palegreen"
|- style="background-color: palegreen"
| AirSpy R2 || R820TR2 || 10 || 2.5--10 || 12 || 24--1800 || No || No || USB2Aµ || $170
| [[BladeRF|bladeRF 2.0µ xA4]] || AD9361 || 56 || 61.44 || 12 || 47–6000 || 2x || Cyclone V || USB3B || 2cf0 || 5250 || $480
|-
| [[BladeRF|bladeRF x40]] || LMS6002D || 28 || 40 || 12 || 300–3800 || 1x || Cyclone IV || USB3B || 2cf0 || 5246 || $420
|-
| Ettus B210 USRP || AD9361 || 56 || 61.44 || 12 || 70–6000 || 2x || Spartan 6<br/>XC6SLX150 || USB3B || || || $1100
|-
|-
| AirSpy Mini || R820TR2 || 12 || 6 || 12 || 24--1750 || No || No || USB2Aµ || $100
| Ettus B200 USRP || AD9361 || 56 || 61.44 || 12 || 70–6000 || 1x || Spartan 6<br/>XC6SLX75 || USB3B || || || $675
|-
|-
| AirSpy HF+ || || 0.768 || || 16 || DC--31<br/>60--260 || No || No || USB2Aµ || $150
| NI Ettus X410 USRP || || 400 || || || 1–8000 || 4x || Xilinx Zynq Ultrascale+<br/> RFSOC ZU28DR || 2x100GbE || || || $25000
|- style="background-color: palegreen"
| [[BladeRF|bladeRF 2.0µ xA4]] || AD9361 || 56 || 61.44 || 12 || 47--6000 || 2x || Cyclone V || USB3B || $480
|-
|-
| [[BladeRF|bladeRF x40]] || LMS6002D || 28 || 40 || 12 || 300--3800 || 1x || Cyclone IV || USB3B || $420
| Per Vices Noctar || || 250 || 125 || 12 / 16 || DC–4000 || 1x || Cyclone IV<br/>EP4CGX22C || 4xPCIe || || || $2500
|-
|-
| Ettus B210 USRP || AD9361 || 56 || 61.44 || 12 || 70--6000 || 2x || Spartan 6<br/>XC6SLX150 || USB3B || $1100
| Mirics MSi3101 || MSi001 || 5 || || 12 || 64–240<br/>470–960 || No || No || || || || $85
|-
|-
| Ettus B200 USRP || AD9361 || 56 || 61.44 || 12 || 70--6000 || 1x || Spartan 6<br/>XC6SLX75 || USB3B || $675
| FunCube Dongle Pro+ || || 0.192 || ||16 || 150–260<br/>410–2050 || No || No || USB2A || 04D8 || FB31 || $200
|-
|-
| Per Vices Noctar || || 250 || 125 || 12 / 16 || DC--4000 || 1x || Cyclone IV<br/>EP4CGX22C || 4xPCIe || $2500
| PlutoSDR || AD9363 || 20 || 61.44 || 12 || 325–3800 || 1x || Z-7010 || USB2Aµ || 0456 || B673 || $150
|-
|-
| Mirics MSi3101 || MSi001 || 5 || || 12 || 64--240<br/>470--960 || No || No || || $85
| SignalHound BB60C || || 27 || 0.3125–40 || 14 || DC–6000 || No || || USB3Bµ || 2817 || 0002 || $2900
|-
|-
| FunCube Dongle Pro+ || || 0.192 || ||16 || 150--260<br/>410--2050 || No || No || USB2A || $200
| XTRX CS || LMS7002M || 120 || 0.2–80 || 12 || 30–3800 || 2x || Artix7 35T || 2xmPCIe|| || || $299
|-
|-
| PlutoSDR || AD9363 || 20 || 61.44 || 12 || 325--3800 || 1x || Z-7010 || USB2Aµ || $150
| XTRX Pro || LMS7002M || 120 || 0.2–80 || 12 || 30–3800 || 2x || Artix7 50T || 2xmPCIe|| || || $599
|-
|-
| SignalHound BB60C || || 27 || 0.3125--40 || 14 || DC--6000 || No || || USB3Bµ || $2900
| OsmoSDR || E4000 || 58.8 || 4.2 || 14 || 52–2200 || No || Lattice FXP2 || USB2A || || || Never sold
|-
|-
| XTRX CS || LMS7002M || 120 || 0.2--80 || 12 || 30--3800 || 2x || Artix7 35T || 2xmPCIe|| $299
| ColibriNANO || custom? || 3 || 122.88 || 14 || DC–55 || No || Altera MAX 10 || USB3A || || || $270
|-
|-
| XTRX Pro || LMS7002M || 120 || 0.2--80 || 12 || 30--3800 || 2x || Artix7 50T || 2xmPCIe|| $599
| [https://www.crowdsupply.com/cariboulabs/cariboulite-rpi-hat CaribouLite] || RFFC5072 || 2.5 || 4 || 13 || 30–6000 || 2x Half || ICE40LP1K || [[Raspberry_Pi|RPi Hat]] || || || $138
|-
|-
| OsmoSDR || E4000 || 58.8 || 4.2 || 14 || 52--2200 || No || Lattice FXP2 || USB2A || Never sold
| [https://www.crowdsupply.com/microphase-technology/antsdr-e200 AntSDR E200] || AD9393  || 20 || 61.44 || 12 || 325–3800 || 2x Full || Zynq 7020 || GigE || || || $300
|-
|-
| ColibriNANO || custom? || 3 || 122.88 || 14 || DC--55 || No || Altera MAX 10 || USB3A || $270
| [https://www.crowdsupply.com/microphase-technology/antsdr-e200 AntSDR E200] || AD9391  || 56 || 61.44 || 12 || 70–6000 || 2x Full || Zynq 7020 || GigE || || || $500
|-
|-
|}
|}
Line 76: Line 88:
* Analog Devices: [https://www.analog.com/media/en/technical-documentation/data-sheets/AD9361.pdf AD9361] datasheet, [https://www.analog.com/media/en/technical-documentation/data-sheets/AD9363.pdf AD9363] datasheet, [https://www.analog.com/media/en/technical-documentation/data-sheets/AD9364.pdf AD9364] datasheet
* Analog Devices: [https://www.analog.com/media/en/technical-documentation/data-sheets/AD9361.pdf AD9361] datasheet, [https://www.analog.com/media/en/technical-documentation/data-sheets/AD9363.pdf AD9363] datasheet, [https://www.analog.com/media/en/technical-documentation/data-sheets/AD9364.pdf AD9364] datasheet
** AD9361, AD9363, AD9364 on the [https://wiki.analog.com/resources/eval/user-guides/ad-fmcomms2-ebz/ad9361 Analog Devices wiki]
** AD9361, AD9363, AD9364 on the [https://wiki.analog.com/resources/eval/user-guides/ad-fmcomms2-ebz/ad9361 Analog Devices wiki]
* Lime Microsystems: [https://limemicro.com/technology/lms7002m/ LMS7002M]


===Antennae===
===Antennae===
Line 98: Line 111:


===Kernel===
===Kernel===
At the lowest level live the various driver libraries for SDR hardware. It is atypical for SDR hardware to require (or provide) a Linux kernel driver; most appear to be implemented wholly in userspace atop raw USB devices (exceptions include the Mirics MSi2500 and the Ettus USRP). Indeed, the primary interaction most users will have with their kernel might be removing (and possibly blacklisting) the <tt>dvb_usb_rtl28xxu</tt> DVB driver autoloaded for the RTL-SDRv3 USB dongle (the <tt>rtl2832_sdr</tt> and <tt>rtl2832</tt> kernel objects go with this driver, and ought--despite their names--also be removed). This driver prevents the RTL from being used with <tt>rtl_sdr</tt>, the userspace RTLSDR libraries. To blacklist it, create an entry ending in <tt>.conf</tt> in <tt>/etc/modprobe</tt>:
At the lowest level live the various driver libraries for SDR hardware. It is atypical for SDR hardware to require (or provide) a Linux kernel driver; most appear to be implemented wholly in userspace atop raw USB devices (exceptions include the Mirics MSi2500 and the Ettus USRP). Indeed, the primary interaction most users will have with their kernel might be removing (and possibly blacklisting) the <tt>dvb_usb_rtl28xxu</tt> DVB driver autoloaded for the RTL-SDRv3 USB dongle (the <tt>rtl2832_sdr</tt> and <tt>rtl2832</tt> kernel objects go with this driver, and ought—despite their names—also be removed). This driver prevents the RTL from being used with <tt>rtl_sdr</tt>, the userspace RTLSDR libraries. To blacklist it, create an entry ending in <tt>.conf</tt> in <tt>/etc/modprobe</tt>:


<pre>
<pre>
Line 189: Line 202:


The following historical terms are still regularly seen:
The following historical terms are still regularly seen:
* Medium wave: 526.5--1606.5kHz (Europe), 525--1705kHz (US), channels every 9kHz (Europe) or 10kHz (US)
* Medium wave: 526.5–1606.5kHz (Europe), 525–1705kHz (US), channels every 9kHz (Europe) or 10kHz (US)
** Groundwaves propagate following Earth curvature, skywaves reflect off of the ionosphere
** Groundwaves propagate following Earth curvature, skywaves reflect off of the ionosphere
** AM radio
** AM radio
* Longwave: everything below 525kHz (approximately; no official definition). Sees groundwaves; skywaves are rare.
* Longwave: everything below 525kHz (approximately; no official definition). Sees groundwaves; skywaves are rare.
** Carrier frequencies every multiple of 9kHz, 153--279kHz
** Carrier frequencies every multiple of 9kHz, 153–279kHz
* Shortwave: 2--30MHz (approximately; no official definition). Sees skywaves.
* Shortwave: 2–30MHz (approximately; no official definition). Sees skywaves.


The ITU defines 12 RF bands, starting at 1. Each band <i>n</i> begins at the wavelength 10<sup>n</sup>, and covers an order of magnitude of wavelength. The corresponding lower frequency is 3x10<sup>8-n</sup>Hz. <i>Medium wave</i> corresponds to the lower portion of band 6 (Medium Frequency). <i>Longwave</i> corresponds to bands 1 (Extremely Low Frequency) through 5 (Low Frequency), though most amateur radio takes place within band 5. <i>Shortwave</i> encloses the top half of band 6, along with band 7 (High Frequency).
The ITU defines 12 RF bands, starting at 1. Each band <i>n</i> begins at the wavelength 10<sup>n</sup>, and covers an order of magnitude of wavelength. The corresponding lower frequency is 3x10<sup>8-n</sup>Hz. <i>Medium wave</i> corresponds to the lower portion of band 6 (Medium Frequency). <i>Longwave</i> corresponds to bands 1 (Extremely Low Frequency) through 5 (Low Frequency), though most amateur radio takes place within band 5. <i>Shortwave</i> encloses the top half of band 6, along with band 7 (High Frequency).