SDR: Difference between revisions
No edit summary |
No edit summary |
||
| (31 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] | 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/ | 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 | 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 || | | 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. | | 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 | |||
|- | |- | ||
| | | [https://www.sdrplay.com/rspdxR2/ RSPdx-R2] || MSi001 || 10 || 10.66 || 14 || 1–2000 || No || No || USB2B || || | ||
|- | |- | ||
| SDRPlay RSP2 || || 10 || || 12 || | | [https://www.sdrplay.com/rsp2/ SDRPlay RSP2] || || 10 || 10.66 || 12 || DC–2000 || No || No || USB2B || || || $170 | ||
|- | |- | ||
| SDRPlay RSP1A || | | SDRPlay RSP1A || MSi001 || 6 || || 14 || DC–2000 || No || No || USB2B || || || $100 | ||
|- | |- | ||
| SDRPlay RSPDuo || || 2x10 || | | 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 || | | 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 || | | LimeSDR Mini || LMS7002M || 30.72 || 30.72 || 12 || 10–3500 || 1x || Altera MAX 10 || USB3A || 0403 || 601f || $159 | ||
|- | |- | ||
| LimeSDR | | 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 | |||
|- | |- | ||
| | | 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" | ||
| | | [[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 | |||
|- | |- | ||
| | | 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 | ||
|- | |- | ||
| | | Per Vices Noctar || || 250 || 125 || 12 / 16 || DC–4000 || 1x || Cyclone IV<br/>EP4CGX22C || 4xPCIe || || || $2500 | ||
|- | |- | ||
| | | Mirics MSi3101 || MSi001 || 5 || || 12 || 64–240<br/>470–960 || No || No || || || || $85 | ||
|- | |- | ||
| | | FunCube Dongle Pro+ || || 0.192 || ||16 || 150–260<br/>410–2050 || No || No || USB2A || 04D8 || FB31 || $200 | ||
|- | |- | ||
| | | PlutoSDR || AD9363 || 20 || 61.44 || 12 || 325–3800 || 1x || Z-7010 || USB2Aµ || 0456 || B673 || $150 | ||
|- | |- | ||
| | | SignalHound BB60C || || 27 || 0.3125–40 || 14 || DC–6000 || No || || USB3Bµ || 2817 || 0002 || $2900 | ||
|- | |- | ||
| | | XTRX CS || LMS7002M || 120 || 0.2–80 || 12 || 30–3800 || 2x || Artix7 35T || 2xmPCIe|| || || $299 | ||
|- | |- | ||
| | | XTRX Pro || LMS7002M || 120 || 0.2–80 || 12 || 30–3800 || 2x || Artix7 50T || 2xmPCIe|| || || $599 | ||
|- | |- | ||
| | | OsmoSDR || E4000 || 58.8 || 4.2 || 14 || 52–2200 || No || Lattice FXP2 || USB2A || || || Never sold | ||
|- | |- | ||
| | | ColibriNANO || custom? || 3 || 122.88 || 14 || DC–55 || No || Altera MAX 10 || USB3A || || || $270 | ||
|- | |- | ||
| | | [https://www.crowdsupply.com/cariboulabs/cariboulite-rpi-hat CaribouLite] || RFFC5072 || 2.5 || 4 || 13 || 30–6000 || 2x Half || ICE40LP1K || [[Raspberry_Pi|RPi Hat]] || || || $138 | ||
|- | |- | ||
| | | [https://www.crowdsupply.com/microphase-technology/antsdr-e200 AntSDR E200] || AD9393 || 20 || 61.44 || 12 || 325–3800 || 2x Full || Zynq 7020 || GigE || || || $300 | ||
|- | |- | ||
| | | [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 | 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 180: | Line 199: | ||
==RF spectrum== | ==RF spectrum== | ||
The radio spectrum is managed by the [https://en.wikipedia.org/wiki/International_Telecommunication_Union International Telecommunications Union]. It is typically understood to cover those frequencies up to 300GHz, though the ITU lays claim to all EM "propagated in space without artificial guide" under 3THz. Above 300GHz, the atmosphere becomes effectively opaque until the low infrared. Radio waves are generated by electrically-charged particles whenever they undergo acceleration, and are carried by photons, the gauge boson/quantum/force carrier of the electromagnetic force. All photons travel at the speed of light in their surrounding material, and have | The radio spectrum is managed by the [https://en.wikipedia.org/wiki/International_Telecommunication_Union International Telecommunications Union]. It is typically understood to cover those frequencies up to 300GHz, though the ITU lays claim to all EM "propagated in space without artificial guide" under 3THz. Above 300GHz, the atmosphere becomes effectively opaque until the low infrared. Radio waves are generated by electrically-charged particles whenever they undergo acceleration, and are carried by photons, the gauge boson/quantum/force carrier of the electromagnetic force. All photons travel at the speed of light in their surrounding material, and have zero rest mass (but do acquire mass and momentum via movement). A wave's length decreases linearly as the frequency increases: a 300GHz wave has a corresponding wavelength of about 1mm, whereas a 30Hz wave has a wavelength of 10Mm (10 orders of magnitude in each case). Microwaves are just high-energy radio waves (roughly everything above 300MHz); they are generated in the same way. | ||
The following historical terms are still regularly seen: | The following historical terms are still regularly seen: | ||
* Medium wave: 526. | * 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, | ** Carrier frequencies every multiple of 9kHz, 153–279kHz | ||
* Shortwave: | * 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). | ||
===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" | |||
! Frequency Range !! Bandwidth !! Center !! Allocation | |||
|- | |||
| 6.765-6.975 MHz | |||
| 30 KHz | |||
| 6.78 MHz | |||
| Local ISM | |||
|- | |||
| 13.553-13.567 MHz || 14 KHz || 13.56 MHz || Global ISM | |||
|- | |||
| 26.957-27.283 MHz || 326 KHz || 27.18 MHz || Global ISM | |||
|- | |||
| 40.66-40.7 MHz || 40 KHz || 40.68 MHz || Global ISM | |||
|- | |||
| 433.05-434.79 MHz || 1.74 MHz || 433.92 MHz || Europe, Africa, Russia ISM | |||
|- | |||
| 863-870 MHz || 7 MHz || 866.5 MHz || Europe SRD860 | |||
|- | |||
| 902-928 MHz || 26 MHz || 915 MHz || Americas ISM | |||
|- | |||
| 2400-2500 MHz || 100 MHz || 2.450 GHz || Global ISM | |||
|- | |||
| 5725-5875 MHz || 150 MHz || 5.8 GHz || Global ISM | |||
|- | |||
| 24-24.250 GHz || 250 MHz || 24.125 GHz || Global ISM | |||
|- | |||
| 61-61.5 GHz || 500 MHz || 61.25 GHz || Local ISM | |||
|- | |||
| 122-123 GHz || 1 GHz || 122.5 GHz || Local ISM | |||
|- | |||
| 244-246 GHz || 2 GHz || 245 GHz || Local ISM | |||
|} | |||
==See Also== | ==See Also== | ||