SDR: Difference between revisions

add table of ISM bands
No edit summary
 
(29 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
|-
| [https://github.com/signalens/signalsdrpro/ Signalens SignalSDR Pro] || AD9361 || 56 || 61.44 || 12 || 70–6000 || 2 || Zynq 7020 || USB3, GigE || || || $899
|-
| NooElec NESDR<br/>SMArt XTR || E4000 || 2.4 || || 8 || 65–1100<br/>1200–2300 || No || No || USB2A || 0bda || 2832 || $35
|-
|-
| NooElec NESDR<br/>SMArt XTR || E4000 || 2.4 || || 8 || 65--1100<br/>1200--2300 || No || No || USB2A || $35
| [https://www.sdrplay.com/rspdxR2/ RSPdx-R2] || MSi001 || 10 || 10.66 || 14 || 1–2000 || No || No || USB2B || ||  
|-
|-
| SDRPlay RSP2 ||  || 10 || || 12 || DC--2000 || No || No || USB2B || $170
| [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 RSP1A || MSi001 || 6 || || 14 || DC–2000 || No || No || USB2B || || || $100
|-
|-
| SDRPlay RSPDuo || || 2x10 || 2--10.66 ||14 || DC--2000 || No || No || USB2B || $280
| 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
|-
|-
| AirSpy Mini || R820TR2 || 12 || 6 || 12 || 24--1750 || No || No || USB2Aµ || $100
| [[BladeRF|bladeRF x40]] || LMS6002D || 28 || 40 || 12 || 300–3800 || 1x || Cyclone IV || USB3B || 2cf0 || 5246 || $420
|-
|-
| AirSpy HF+ || || 0.768 || || 16 || DC--31<br/>60--260 || No || No || USB2Aµ || $150
| Ettus B210 USRP || AD9361 || 56 || 61.44 || 12 || 70–6000 || 2x || Spartan 6<br/>XC6SLX150 || USB3B || || || $1100
|- style="background-color: palegreen"
|-
| [[BladeRF|bladeRF 2.0µ xA4]] || AD9361 || 56 || 61.44 || 12 || 47--6000 || 2x || Cyclone V || USB3B || $480
| Ettus B200 USRP || AD9361 || 56 || 61.44 || 12 || 70–6000 || 1x || Spartan 6<br/>XC6SLX75 || USB3B || || || $675
|-
| NI Ettus X410 USRP || || 400 || || || 1–8000 || 4x || Xilinx Zynq Ultrascale+<br/> RFSOC ZU28DR || 2x100GbE || || || $25000
|-
|-
| [[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
|-
|-
|}
|}
====Transceivers====
* 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]
* Lime Microsystems: [https://limemicro.com/technology/lms7002m/ LMS7002M]


===Antennae===
===Antennae===
Line 87: Line 105:
====Warez====
====Warez====
* [http://www.rfspace.com/RFSPACE/Antennas.html RFSpace] makes some awfully nice ones
* [http://www.rfspace.com/RFSPACE/Antennas.html RFSpace] makes some awfully nice ones
* [https://www.tindie.com/stores/hexandflex/ Hex and Flex] have a tindie store


==Low-level software==
==Low-level software==
Line 92: 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 183: 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).


Of particular interest are the [https://en.wikipedia.org/wiki/ISM_band ISM bands]. These "Industrial, Scientific and Medical" bands are reserved for purposes other than telecommunications. Operation within these bands is generally allowed by any device which can tolerate arbitrary ISM interference (there is no regulatory protection). ISM bands include:
===License-free operation===
Of particular interest are the [https://en.wikipedia.org/wiki/ISM_band ISM bands]. These "Industrial, Scientific and Medical" bands are reserved for purposes other than telecommunications. Operation within these bands is generally allowed by any device which can tolerate arbitrary ISM interference (there is no regulatory protection).
 
License-free frequency bands include:


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 200: Line 222:
| 30 KHz
| 30 KHz
| 6.78 MHz
| 6.78 MHz
| Local
| Local ISM
|-
| 13.553-13.567 MHz || 14 KHz || 13.56 MHz || Global ISM
|-
|-
| 13.553-13.567 MHz || 14 KHz || 13.56 MHz || Global
| 26.957-27.283 MHz || 326 KHz || 27.18 MHz || Global ISM
|-
|-
| 26.957-27.283 MHz || 326 KHz || 27.18 MHz || Global
| 40.66-40.7 MHz || 40 KHz || 40.68 MHz || Global ISM
|-
|-
| 40.66-40.7 MHz || 40 KHz || 40.68 MHz || Global
| 433.05-434.79 MHz || 1.74 MHz || 433.92 MHz || Europe, Africa, Russia ISM
|-
|-
| 433.05-434.79 MHz || 1.74 MHz || 433.92 MHz || Europe, Africa, Russia
| 863-870 MHz || 7 MHz || 866.5 MHz || Europe SRD860
|-
|-
| 902-928 MHz || 26 MHz || 915 MHz || Americas
| 902-928 MHz || 26 MHz || 915 MHz || Americas ISM
|-
|-
| 2400-2500 MHz || 100 MHz || 2.450 GHz || Global
| 2400-2500 MHz || 100 MHz || 2.450 GHz || Global ISM
|-
|-
| 5725-5875 MHz || 150 MHz || 5.8 GHz || Global
| 5725-5875 MHz || 150 MHz || 5.8 GHz || Global ISM
|-
|-
| 24-24.250 GHz || 250 MHz || 24.125 GHz || Global
| 24-24.250 GHz || 250 MHz || 24.125 GHz || Global ISM
|-
|-
| 61-61.5 GHz || 500 MHz || 61.25 GHz || Local
| 61-61.5 GHz || 500 MHz || 61.25 GHz || Local ISM
|-
|-
| 122-123 GHz || 1 GHz || 122.5 GHz || Local
| 122-123 GHz || 1 GHz || 122.5 GHz || Local ISM
|-
|-
| 244-246 GHz || 2 GHz || 245 GHz || Local
| 244-246 GHz || 2 GHz || 245 GHz || Local ISM
|}
|}