Difference between revisions of "Software Defined Radio"

From SatNOGS
(Add airspy section with example gains)
(Add Airspy sample rates & device arguments)
(3 intermediate revisions by the same user not shown)
Line 8: Line 8:
  
 
SoapySDR supports SDR devices through runtime-loadable modules [https://github.com/pothosware/SoapySDR/wiki#plugin-architecture]. You can find all available modules in the [https://github.com/pothosware/SoapySDR/wiki#modules SoapySDR wiki] (see right column). Most SDR modules are installed by default when setting up a SatNOGS station.
 
SoapySDR supports SDR devices through runtime-loadable modules [https://github.com/pothosware/SoapySDR/wiki#plugin-architecture]. You can find all available modules in the [https://github.com/pothosware/SoapySDR/wiki#modules SoapySDR wiki] (see right column). Most SDR modules are installed by default when setting up a SatNOGS station.
 
{{Warning|There are probably a lot more devices supported since the transition from gr-osmosdr to gr-soapy. Please update this list when you were able to successfully run a SatNOGS station with a new radio family or model. You can also link your station as an example to give others the ability to compare performance.}}
 
  
 
The following SDRs are supported by SatNOGS. SatNOGS uses the RTL-SDR as the recommended beginner signal receiver and tuner.   
 
The following SDRs are supported by SatNOGS. SatNOGS uses the RTL-SDR as the recommended beginner signal receiver and tuner.   
 
The more advanced SDRs may require more processing power than a Raspberry Pi 3b or 4 can offer.  
 
The more advanced SDRs may require more processing power than a Raspberry Pi 3b or 4 can offer.  
  
*RTL-SDR
+
*[[Software Defined Radio#RTL-SDR Support|RTL-SDR]]
 
**[https://www.nooelec.com/store/sdr/sdr-receivers.html NooElec NESDR SMArt]
 
**[https://www.nooelec.com/store/sdr/sdr-receivers.html NooElec NESDR SMArt]
 
**[https://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/ RTL-SDR Blog R820T2 RTL2832U]
 
**[https://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/ RTL-SDR Blog R820T2 RTL2832U]
 
**Full band UV HF RTL-SDR USB Tuner Receiver
 
**Full band UV HF RTL-SDR USB Tuner Receiver
  
*USRP devices: required module: [https://github.com/pothosware/SoapyUHD/wiki SoapyUHD]
+
*[[Software Defined Radio#USRP support|USRP devices]]
 
**[https://www.ettus.com/product/category/USRP-Bus-Series USRP B200]
 
**[https://www.ettus.com/product/category/USRP-Bus-Series USRP B200]
*[https://airspy.com/ Airspy]: required module: [https://github.com/pothosware/SoapyAirspy/wiki SoapyAirspy]
+
 
 +
*[[Software Defined Radio#Airspy support|Airspy]]
 +
 
 +
{{Message|There are probably a lot more devices supported since the transition from gr-osmosdr to gr-soapy. Please update this list when you were able to successfully run a SatNOGS station with a new radio family or model. You can also link your station as an example to give others the ability to compare performance.}}
  
 
==Supported Devices with closed-source drivers==
 
==Supported Devices with closed-source drivers==
Unfortunately some vendors require closed-source drivers in their SoapySDR modules (e.g. SDRPlay) and thus those modules & dependencies must be manually installed when required.
+
Unfortunately some vendors require closed-source drivers in their SoapySDR modules and thus those modules or dependencies can't be redistributed by others. Thus they must be manually installed by the user. The following devices require closed-source drivers:
  
*[http://www.sdrplay.com/ SDRPlay]: required SoapySDR module: [https://github.com/pothosware/SoapySDRPlay SoapySDRPlay]
+
*[[Software Defined Radio#SDRPlay support|SDRPlay]]
  
 
==Unsupported Devices==
 
==Unsupported Devices==
Line 35: Line 36:
 
*USRP2 (not compatible with the SatNOGS client on Raspberry Pi)
 
*USRP2 (not compatible with the SatNOGS client on Raspberry Pi)
  
==RTL-SDR==
+
==RTL-SDR Support==
 
The RTL-SDR is based on two chips -- the versatile [http://www.realtek.com.tw/products/productsView.aspx?Langid=1&PFid=35&Level=4&Conn=3&ProdID=257 RTL2832U chip] and the [https://rtl-sdr.com/wp-content/uploads/2013/04/R820T_datasheet-Non_R-20111130_unlocked.pdf R820T tuner]. The RTL-SDR is currently the cheapest, most common, and most performing solution available in terms of general sensitivity having a frequency range of 24 – 1766 MHz.  A metal enclosure with SMA connector is preferred, along with a stable TCXO (low ppm).  HF coverage is optional.
 
The RTL-SDR is based on two chips -- the versatile [http://www.realtek.com.tw/products/productsView.aspx?Langid=1&PFid=35&Level=4&Conn=3&ProdID=257 RTL2832U chip] and the [https://rtl-sdr.com/wp-content/uploads/2013/04/R820T_datasheet-Non_R-20111130_unlocked.pdf R820T tuner]. The RTL-SDR is currently the cheapest, most common, and most performing solution available in terms of general sensitivity having a frequency range of 24 – 1766 MHz.  A metal enclosure with SMA connector is preferred, along with a stable TCXO (low ppm).  HF coverage is optional.
  
Line 89: Line 90:
 
You should now schedule several observations to fine tune the <code>SATNOGS_RF_GAIN</code> value to get the best S/N performance for your station.  Some have reported needing zero RF gain, others have reported low RF gain required (between 5 and 10 db), and others have said they see little benefit even with very high gain.  Each station will be different.
 
You should now schedule several observations to fine tune the <code>SATNOGS_RF_GAIN</code> value to get the best S/N performance for your station.  Some have reported needing zero RF gain, others have reported low RF gain required (between 5 and 10 db), and others have said they see little benefit even with very high gain.  Each station will be different.
  
== Airspy ==
+
==Airspy support==
 +
Vendor: [https://airspy.com/ Airspy]
 +
 
 +
required SoapySDR module: [https://github.com/pothosware/SoapyAirspy/wiki SoapyAirspy]
 +
 
 
Example gain settings:
 
Example gain settings:
  
* without pre-amp: <code>SATNOGS_OTHER_SETTINGS="LNA=12,MIX=8,VGA=11"</code>
+
*without pre-amp: <code>SATNOGS_OTHER_SETTINGS="LNA=12,MIX=8,VGA=11"</code>
* with pre-amp: <code>SATNOGS_OTHER_SETTINGS="LNA=9,MIX=6,VGA=11"</code> (used on [https://network.satnogs.org/stations/49/ 49 - OZ7SAT])
+
*with pre-amp: <code>SATNOGS_OTHER_SETTINGS="LNA=9,MIX=6,VGA=11"</code> (used in [https://network.satnogs.org/stations/49/ 49 - OZ7SAT])
 +
 
 +
For reference see also the Airspy driver library linearity gain settings in [https://github.com/airspy/airspyone_host/blob/bceca18f9e3a5f89cff78c4d949c71771d92dfd3/libairspy/src/airspy.c#L117-L122 libairspy/src/airspy.c#L117-L122].
 +
 
 +
 
 +
Recommended sample rates [https://twitter.com/DutchSpace/status/1241305651168661504]:
 +
 
 +
* Airspy: <code>SATNOGS_RX_SAMPLE_RATE=2.5e6</code>
 +
* Airspy mini: <code>SATNOGS_RX_SAMPLE_RATE=3.072e6</code>
 +
* Airspy HF: <code>SATNOGS_RX_SAMPLE_RATE=768e3</code>
  
  
For reference see also the Airspy driver library linearity gain settings in [https://github.com/airspy/airspyone_host/blob/bceca18f9e3a5f89cff78c4d949c71771d92dfd3/libairspy/src/airspy.c#L117-L122 libairspy/src/airspy.c#L117-L122].
+
If you want to activate the integrated bias tee, set <code>SATNOGS_DEV_ARGS="biastee=true"</code>.
 +
Bit packing ("Enable packing 4 12-bit samples into 3 16-bit words for 25% less USB trafic.") could be enabled with <code>SATNOGS_DEV_ARGS="bitpacking=true"</code> (untested). Device arguments can be concatenated with comma as delimiter.
 +
 
 +
==SDRPlay support==
 +
Vendor: [http://www.sdrplay.com/ SDRPlay]
 +
 
 +
required SoapySDR module: [https://github.com/pothosware/SoapySDRPlay SoapySDRPlay]
 +
 
 +
==USRP support==
 +
required SoapySDR module: [https://github.com/pothosware/SoapyUHD/wiki SoapyUHD]
  
 
==References==
 
==References==

Revision as of 15:51, 22 March 2020

Introduction

Built upon GNU Radio and SoapySDR by using the gr-soapy module SatNOGS supports a large variety of Software-Defined Radios (SDRs). The gr-soapy module was developed in the SDR Makerspace and is maintained by Libre Space Foundation to bring the vendor-neutral SDR support by SoapySDR to the flexible gnuradio ecosystem.

The most cost-effective solution is to use an RTL-SDR with a Raspberry Pi. More advanced SDRs are also used, but they require more processing power and thus might require a more powerful computing platform than the Raspberry Pi.

Supported Devices

SoapySDR supports SDR devices through runtime-loadable modules [1]. You can find all available modules in the SoapySDR wiki (see right column). Most SDR modules are installed by default when setting up a SatNOGS station.

The following SDRs are supported by SatNOGS. SatNOGS uses the RTL-SDR as the recommended beginner signal receiver and tuner. The more advanced SDRs may require more processing power than a Raspberry Pi 3b or 4 can offer.

Idea.png
There are probably a lot more devices supported since the transition from gr-osmosdr to gr-soapy. Please update this list when you were able to successfully run a SatNOGS station with a new radio family or model. You can also link your station as an example to give others the ability to compare performance.

Supported Devices with closed-source drivers

Unfortunately some vendors require closed-source drivers in their SoapySDR modules and thus those modules or dependencies can't be redistributed by others. Thus they must be manually installed by the user. The following devices require closed-source drivers:

Unsupported Devices

Important.png
This section might be outdated due to the transition to gr-soapy. Please update when possible.


  • HackRF One (not compatible with the SatNOGS client on Raspberry Pi)
  • USRP2 (not compatible with the SatNOGS client on Raspberry Pi)

RTL-SDR Support

The RTL-SDR is based on two chips -- the versatile RTL2832U chip and the R820T tuner. The RTL-SDR is currently the cheapest, most common, and most performing solution available in terms of general sensitivity having a frequency range of 24 – 1766 MHz. A metal enclosure with SMA connector is preferred, along with a stable TCXO (low ppm). HF coverage is optional.


Using RTL-SDR.com V3 Dongle's Bias-T Power Supply

The RTL-SDR.com V3 dongle has a built in software activated Bias-T voltage supply intended to be used for applications such as powering inline LNAs (Low Noise Amplifiers). There are several ways to turn on the voltage, but through initial testing (as of this writing, 17 Aug 2019) it seems that the following procedure works best.

The below relates to Raspberry Pi installs only. No testing has been performed on other systems as of yet.

Important.png
Turning on the Bias-T with no LNA installed and a "shorted" style antenna (such as loops, egg-beaters, etc.) can damage the RTL-SDR.com V3 dongle. Never activate the bias-t with no LNA installed between the antenna and the SDR dongle.

Requirements:

  1. Raspberry Pi running Raspbian Buster or newer (latest release of SatNogs image, 2019091100, is demonstrated to work)
  2. RTL-SDR.com V3 SDR dongle
  3. RTL-SDR.com Bias-T Software Switch for linux systems
  4. LNA capable of being powered via feedline coax (note that some LNAs need modifications to be powered by the coax, and some cannot be powered by the coax at all. Check the specifications for your LNA prior to attempting to turn on the Bias-T power supply)


Instructions for installing RTL-SDR.com Bias-T Software Switch

  1. Log into your SatNogs station either directly or via SSH
  2. If your station does not have cmake installed (SatNogs Image 2019091100 does not), install cmake with sudo apt install cmake
  3. Clone the source for the Bias-T software switch with git clone https://github.com/rtlsdrblog/rtl_biast
  4. cd rtl_biast
  5. mkdir build
  6. cd build
  7. cmake .. (if you get a LibUSB 1.0 required to compile rtl-sdr error here, then do sudo apt install libusb-1.0-0-dev prior to attempting cmake .. again)
  8. make


The software switch should now be installed in the "src" directory. If you cd src, you can turn on the bias-t with the command ./rtl_biast -b 1 and turn it off with ./rtl_biast -b 0. Note that the developers of this switch have warned against attempting to sudo make install so that this command can be executed from ouside the src directory. Testing has shown this warning to be accurate, so don't plan on running these commands from anywhere but the src directory, or else be sure to use the full path.

Switching the Bias-T on should yield between 4.5V and 5.0V across the center conductor and shield of the coax. The voltage should rise almost instantly. When switched off, the voltage seems to decrease gradually, over 5 to 10 seconds.

Instructions to activate the bias-t for SatNogs Observations automatically:

Important.png
These Instructions are outdated and will not work since SatNOGS migrated from using gr-osmosdr to gr-soapy, see https://community.libre.space/t/satnogs-2-0-1-0-rtlsdr-v3-bias-t/5640/2 . Please update the instructions and remove this warning when possible.
  1. Log into your SatNogs station either directly or via SSH
  2. sudo satnogs-setup
  3. select Advanced
  4. for Radio -> SATNOGS_DEV_ARGS, enter rtl=0,buffers=32,buflen=16384,bias=1 and select Ok. If you have multiple dongles, change rtl=0 to the appropriate index.
  5. for Radio ->SATNOGS_RF_GAIN, enter a low gain value supported by your RTL-SDR.com V3 dongle (entering rtl_test at the command line prior to starting satnogs-setup will give you all allowable values of RF gain) and select Ok
  6. for Scripts ->SATNOGS_POST_OBSERVATION_SCRIPT, enter /home/pi/rtl_biast/build/src/rtl_biast -b 0 and select Ok
  7. Select Back
  8. Select Apply (allow sytem to update and hit enter when prompted)
  9. Select Back

Your station is now set up to turn the Bias-T on for each scheduled observation (using the SATNOGS_DEV_ARGS string) and then turn it off at the conclusion of each observation (using the SATNOGS_POST_OBSERVATION_SCRIPT).

You should now schedule several observations to fine tune the SATNOGS_RF_GAIN value to get the best S/N performance for your station. Some have reported needing zero RF gain, others have reported low RF gain required (between 5 and 10 db), and others have said they see little benefit even with very high gain. Each station will be different.

Airspy support

Vendor: Airspy

required SoapySDR module: SoapyAirspy

Example gain settings:

  • without pre-amp: SATNOGS_OTHER_SETTINGS="LNA=12,MIX=8,VGA=11"
  • with pre-amp: SATNOGS_OTHER_SETTINGS="LNA=9,MIX=6,VGA=11" (used in 49 - OZ7SAT)

For reference see also the Airspy driver library linearity gain settings in libairspy/src/airspy.c#L117-L122.


Recommended sample rates [2]:

  • Airspy: SATNOGS_RX_SAMPLE_RATE=2.5e6
  • Airspy mini: SATNOGS_RX_SAMPLE_RATE=3.072e6
  • Airspy HF: SATNOGS_RX_SAMPLE_RATE=768e3


If you want to activate the integrated bias tee, set SATNOGS_DEV_ARGS="biastee=true". Bit packing ("Enable packing 4 12-bit samples into 3 16-bit words for 25% less USB trafic.") could be enabled with SATNOGS_DEV_ARGS="bitpacking=true" (untested). Device arguments can be concatenated with comma as delimiter.

SDRPlay support

Vendor: SDRPlay

required SoapySDR module: SoapySDRPlay

USRP support

required SoapySDR module: SoapyUHD

References