sdr-receiver
Instructions

1. Getting Started


SDR Receiver requires a signal server that is not included with the application and must be separately obtained and installed.  The signal server will generally include a radio that is connected by USB to a host computer that runs a server application.  Three types of signal servers are supported: servers with an RTL-SDR radio running the rtl_tcp server application, servers with an Airspy HF+ radio running the hfp_tcp server application, and servers with an SDRplay radio running the rsp_tcp server application 



rtl_tcp Installation and Operation


To operate with an RTL-SDR radio, the librtlsdr package  must be installed on a host computer.  The package consists of a library and a number of utilities, one of which is the rtl_tcp server application.  The librtlsdr package is developed and maintained on Osmocom.org  and there is an official mirror of the repository on GitHub.  Instructions for building the library and pointers to binaries for Windows are on the rtl-sdr page of the Osmocom Wiki.  Additional instructions for building the library on various platforms may be found on the Web, for example SDR on Raspberry Pi 3 (software) – Medo's Home Page, April 18, 2016 and How to compile librtlsdr on Windows · One Transistor, December 16, 2017.


The rtl_tcp server application is a wrapper for the librtlsdr library that communicates with the RTL-SDR radio over USB via the library, and receives commands and streams IQ data over the network via TCP.  It is invoked with the command


rtl_tcp -p <port-number> -a 0.0.0.0


and will indicate that it is connected, and will echo commands as it executes them.  If -p <port-number> is omitted, the server will listen on port 1234 which is the default port number.  SDR Receiver can reference the server by IP address or by symbolic name using Bonjour/Avahi on a LAN.  For example, a Raspberry Pi can be addressed by its IP address or by the default symbolic name raspberrypi.local.  



rtl_tcp Installation — Raspberry Pi


First, configure an SD card with the latest version of the Raspian operating system.  Detailed instructions can be found on raspberrypi.org:


Installing operating system images - Raspberry Pi Documentation


Next, start the Raspberry Pi and execute these two commands in a terminal window:


sudo apt-get update

sudo apt-get install rtl-sdr


The rtl_tcp server application, and other utilities that are part of the librtlsdr package, will be installed in /usr/bin



rtl_tcp Installation — macOS 


The librtlsdr package is available for installation via the Homebrew package manager.  This package will work on macOS Catalina.  First install Homebrew, then install librtlsdr as follows:


Install Homebrew

Homebrew — The missing package manager for macOS

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


Install librtlsdr

brew install librtlsdr

 

If there were previous installations of the the librtlsdr package or libusb on the system, the install process might fail with error messages indicating that libraries or header files were found which would be overwritten by the installation.  Remove the conflicting files and follow the directions in the error messages to complete the installation process.



As an alternative to installing Homebrew and using it to install librtlsdr, pre-built binaries for macOS that are available as part of a package prepared for a course at UC Berkeley can be installed.  This package can be installed according to the directions that are provided with the package and it will run properly on macOS Mojave and earlier.  On macOS Catalina an additional step is required, which is described below.


The UC Berkeley package can be found at:


RTL-SDR Installation Instructions - EE123, EECS, UC Berkeley - Spring, 2017


Download the macOS package rtlsdr_osx.zip and extract the archive.  Open a terminal window and change directories to the directory containing the files extracted from the archive.  The installation process requires admin privileges.  If you are not logged in with an account that has admin privileges then in the terminal window you can switch to a user that has admin privileges with the su command:


$ su <user>

$ Password: <password>


On macOS 10.15 Catalina there are new security mechanisms that require an additional authorization step before downloaded applications can run.  If you are on Catalina, make sure that you are in the directory containing the files extracted from the archive, and run this command in the terminal:


$ xattr -d com.apple.quarantine *


This will remove the quarantine attribute from the executables and libraries.


From the terminal window, create two directories (if they do not already exist):


$ sudo mkdir /usr/local/bin

$ sudo mkdir /usr/local/lib


In the directory in which the archive was unpacked, execute the following commands to copy the files to the right place:


$ sudo cp rtl* /usr/local/bin/

$ sudo cp lib* /usr/local/lib/


The rtl_tcp application will be found at 


/usr/local/bin/rtl_tcp


and it can be invoked as rtl_tcp if /usr/local/bin is in the search path, and with the full path name otherwise. 


From a terminal window execute rtl_tcp -a 0.0.0.0 and the rtl_tcp server will start.

 


rtl_tcp Installation — Windows 


Pre-built binaries for Windows are available from the rtl-sdr page of the Osmocom Wiki.  Download the Windows package directly from the link on that site:


http://osmocom.org/attachments/download/2242/RelWithDebInfo.zip


Pre-built binaries for Windows are also available as part of a package prepared for a course at UC Berkeley:


RTL-SDR Installation Instructions - EE123, EECS, UC Berkeley - Spring, 2017


Download the Windows package directly from the link on that site:  rtlsdr_win.zip


In addition to obtaining the executables from one of the sites above, the Zadig utility must be run to install and configure the driver.  In some installations, this utility might be present and might have been used previously to configure the driver for some other application such as SDR#.  Note that it is possible for the driver to have been configured so that it works properly with an RTL-SDR radio and SDR# but can still give an error when rtl_tcp is executed.  If Zadig has not previously been used to configure the driver, or if it has been installed but an error is reported when rtl_tcp is executed, then Zadig must be used to install or re-install the driver.


Download Zadig from https://zadig.akeo.ie.  Then:

  • Make sure that an RTL-SDR radio is plugged into a USB port.  Note that the driver configuration is for a particular USB port (socket).  After configuration, the driver should work with the RTL-SDR radio plugged into the port for which it was configured, but might not work if the RTL-SDR radio is plugged into a different port.  
  • Make sure that SDR# or any other program that might use the USB interface is not running.  Running programs are shown under the Windows Task Manager.
  • Run the zadig.exe utility as administrator (right click and select "Run as administrator”).
  • Under the Zadig Options  drop-down menu, check the first line "List All Devices", and un-check the second line "Ignore Hubs or Composite Parents”.
  • On the main window drop-down menu select "RTL2838UHIDIR".  Then to the right of the green arrow there should be a selection beginning "WinUSB …”.  Choose this one if it is not shown already.  Hover the cursor over the numbers to the right of USB ID and it should show "Realtek ..." indicating that it is the USB ID of a Realtek device which is the RTL-SDR.   
  • Make sure "Reinstall Driver" is shown on the large button, and select it.  The driver should then be installed, and Zadig should report that it completed successfully.

Now change to the directory that contains the pre-built binaries downloaded from from osmocom.org or from UC Berkeley.   Run rtl_test -t to check the status of the interface.  It should show the RTL-SDR.  Then rtl_tcp -a 0.0.0.0 should start the server.   In this configuration, both SDR# and rtl_tcp -a 0.0.0.0 will run.  However, they cannot both be run at the same time.  Find the IP address of the PC under Settings Network & Internet Wi-Fi Hardware Properties.  Note the IPv4 address and then in SDR Receiver select the Settings tab, select Host and enter the IP address of the server.   


The procedure above has been tested and works properly on Windows 10.  A similar procedure should work on other recent versions of Windows.



hfp_tcp Installation and Operation


The hfp_tcp server application is required to operate SDR Receiver with an Airspy HF+ radio.  This open source application is available as source code that can be compiled, installed and executed on a Raspberry Pi or Mac host computer.  It consists of a single source file and a Makefile which require two header files and a dynamic library that are part of the Airspy HF+ Library package. 


Building hfp_tcp will generally consist of two steps:


Step 1: Download and build the Airspy HF+ Library.

Step 2: Download and build hfp_tcp.


The first step will place the dynamic library and header files in standard system locations.  In the second step, the compile and link process will look in these standard locations to locate the header files and dynamic library that are required to build and run hfp_tcp.


If the Airspy SPY Server application has been successfully installed on the Raspberry Pi, Step 1 will have already been completed and it does not need to repeated.  In this case, skip Step 1 and just follow the directions under Step 2.



Step 1: Download and Build the Airspy HF+ Library


The Airspy HF+ Library is an open source  package that includes a library and user mode driver for the Airspy HF+ radio.  The source code and directions for building the package are in the Airspy airspyhf GitHub repository at:


airspy/airspyhf: Code repository for AirspyHF+


To build the library on Raspberry Pi Raspbian, follow the directions under “How to build the host software on Linux” in the README on the Airspy airspyhf GitHub repository.


To build the library on macOS, the first step of the Airspy directions for Linux (the command beginning “sudo apt-get install …”) must be replaced by a series of steps which install utilities and libraries that are required to build libairspyhf.  These utilities and libraries are: brew, libusb, cmake and pkg-config.  The initial step of installing brew will also install some other packages including the Xcode Command Line Tools.  The complete sequence is as follows:


Install Homebrew

Homebrew — The missing package manager for macOS

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


Install libusb

http://macappstore.org/libusb/

https://stackoverflow.com/questions/3853634/how-to-set-up-libusb-on-mac-os-x

brew install libusb

brew link libusb

The link step will attempt to create symbolic links in /usr/local/lib for libusb-1.0.0.dylib and libusb-1.0.dylib and some other files, and will fail if any of these exist.  If that happens, move or remove the files that are reported as already existing and then repeat the link step.


Install CMake

https://cmake.org/download/

homebrew - Installing cmake with home-brew - Stack Overflow

brew install cmake


Install pkg-config

brew install pkg-config

 

Download and Build libairspyhf

GitHub - airspy/airspyhf: Code repository for AirspyHF+

git clone https://github.com/airspy/airspyhf.git

cd airspyhf

mkdir build

cd build

cmake ../ -DINSTALL_UDEV_RULES=ON

make

sudo make install



Step 2: Download and Build hfp_tcp


The hfp_tcp application is a single source file.  It can be built and installed with the included Makefile which requires header files and a dynamic library that were installed in Step 1 above.  The process is the same for both macOS and Raspberry Pi Raspbian.  The hfp_tcp application is on GitHub at:


WB2ISS/hfp_tcp: An rtl_tcp-"like" server for the Airspy HF+ SDR


The following commands should be executed in a terminal window.  These commands will clone the hfp_tcp repository from GitHub into a local directory and will then build and install the executable:


git clone https://github.com/WB2ISS/hfp_tcp.git

cd hfp_tcp

make

sudo make install


The target operating system will be detected and applied to obtain the correct compile and link command for the target system.  The detected OS will be displayed as Darwin for macOS and Linux for Raspberry Pi Raspbian, and the build command that is being executed will be shown.   The sudo make install step will copy the executable into /usr/local/lib where it will be found as part of the standard execution path. 


Compilation requires the header files airspyhf.h and airspyhf_commands.h and the executable requires the libairspyhf driver. If the Airspy HF+ Library has been installed as described in Step 1, these dependencies will have been placed in standard system locations and will be located by the compile and link process.  


By cloning the hfp_tcp repository it becomes very easy to obtain updates.  First cd to the the hfp_tcp repository. Then execute these commands:


git pull

make

sudo make install


The git pull will obtain updates to the repository if there are any.  Then, if there was an update, the make step will detect that, and if the source code was updated it will build a new executable.  The sudo make install step will install the new executable in /usr/local/bin.


To run the hfp_tcp application, connect an Airspy HF+ radio to the system via USB.  The hfp_tcp application can then be executed  with the command hfp_tcp.  By default, the application will listen for an incoming TCP/IP connection on port 1234.  An alternate port can be specified with the -p flag.  For example, to start the application listening on port 1024, the command is:  hfp_tcp -p 1024.


By default, for compatibility with the rtl_tcp protocol, hfp_tcp streams data consisting of 8-bit samples.  In order to take advantage of the additional resolution of the analog to digital converter in the Airspy HF+ radio, hfp_tcp can also stream data consisting of 16-bit samples to SDR Receiver.  To stream 16-bit samples, start hfp_tcp with the -b 16 flag and in SDR Receiver, on the Settings tab, select Sampling and set Sample Size to 16-bits.



rsp_tcp Installation and Operation


The rsp_tcp server application is required to operate SDR Receiver with an SDRplay radio.   This application is provided by SDRplay in source and in executable form for Mac, PC and RaspberryPi.  The source code is available on GitHub.   Information on the release and links to the binaries and the RSP_TCP Server User Guide can be found at:


Updated version of the RSP TCP Server - SDRplay Community Forum, February 17, 2019


There is a user guide for rsp_tcp: RSP_TCP Server User Guide and binaries can be found on the SDRplay Downloads Page: Downloads – SDRplay.  Be sure to select the correct target platform (Windows, Mac or Raspberry Pi) at the top of the page.


The source code and directions for building the application can be found on GitHub at:


rsp_tcp - SDRplay/RSPTCPServer: RSP TCP Server - GitHub.com


Note that SDRplay API 2.13 must be installed before source can be built or binaries run.  The API can also be found on the SDRplay Downloads page: Downloads – SDRplay.  


The rsp_tcp server application can be invoked with the command


rsp_tcp -p <port-number> -a 0.0.0.0


If -p <port-number> is omitted, the server will listen on port 1234. A list of other options can be found with rsp_tcp -help.


By default, for compatibility with the rtl_tcp protocol, rsp_tcp streams data consisting of 8-bit samples.  In order to take advantage of the full resolution of the analog to digital converter in the SDRplay radios, rsp_tcp can also stream data consisting of 16-bit samples to SDR Receiver.  To stream 16-bit samples, start rsp_tcp with the -b 16 flag and on the Settings tab in SDR Receiver, select Sampling and set Sample Size to 16-bits.



2. Using the Application


After a signal server has been configured and started, determine the IP address of the server or the symbolic name at which the server can be found on the LAN. The IP address may be an IPv4 address or an IPv6 address.   A symbolic name on a LAN is a name that is resolved through the Bonjour or Avahi protocol.  The servers all use port 1234 as the default, but an alternate port can be specified with the -p flag when the server is started.  


The functions of SDR Receiver are divided into three tabs: Stations, Lists and Settings.  The Stations tab controls the frequency, mode and gain applied to the signal that is being demodulated and played. The Lists tab provides methods for creating and managing lists of stations.  The Settings tab provides controls related to the network, signal server and operating parameters of the application.  There is also a custom URL scheme that allows another app on the device to launch SDR Receiver into streaming a specified station.


Stations Tab


The Stations tab has controls for frequency, mode, LNA gain, volume, and an On/Off switch that starts and stops the stream of data from the server.  The application manages lists of stations.  One list of stations is active and is displayed on the Stations tab from which individual stations can be entered, edited, reordered and deleted.  When a signal is being streamed, the magnitude of the energy in the signal passband will be displayed as the height of a green signal strength bar in the center of the upper portion of the display.


Selecting a Station

In SDR Receiver, a station is specified by a frequency in MHz, a signal mode of narrowband FM (NFM), wideband FM (WFM) or amplitude modulation (AM), and a description.  A station may be selected from the active list of stations that are displayed.  The selected station will be highlighted in blue.  A frequency and mode may also be entered directly with the controls at the top of the screen.    


Frequency Display

The current frequency is displayed at the top of the Stations tab screen.  The frequency may be increased by tapping or holding the up arrow, and decreased by tapping or holding the down arrow.  Holding the up or down arrow is equivalent to a continuous sequence of taps.  The increment by which the frequency changes with each tap of the up or down arrows may be set for each mode by selecting Tuning on the Settings tab.


Mode

AM, NFM or WFM modulation may be selected.


Streaming

The On/Off switch starts and stops the streaming and processing of data from the signal server.  When the switch is set to On, a connection to the signal server is initiated and the connection state will be displayed below the Mode control.  When the switch is set to Off, the connection is closed and streaming stops.


LNA Gain

For radios that support this function, SDR Receiver allows enabling or disabling AGC,  and controlling LNA gain when AGC is disabled.  When the AGC/Man control is set to AGC, the tuner AGC function is enabled and manual LNA Gain control is disabled.  When the AGC/Man control is set to Man, the tuner AGC function is disabled and the LNA gain is set by the LNA Gain control. With RTL-SDR radios, operating with AGC enabled often leads to distortion in the presence of strong signals, and better results are generally obtained with AGC off (Man) and LNA Gain set manually to around 30.2 dB.  This is the default configuration for the application.


Volume

The volume control sets the audio amplitude level of the audio signal generated by the application.  Audio volume may also be adjusted using the volume controls on the device.


Entering a New Station

The + button brings up the New Station entry screen.  There are fields for entering a frequency and description, and a control for selecting the mode.  The frequency is specified in MHz with three or four digits to the right of the decimal separator.   The frequency, description and mode are initialized with the current frequency and mode as displayed, and the description of the last selected station.  When a new station is saved, it is added at the bottom of the active list on the Stations tab, but the current frequency and mode are not changed.  To set the frequency and mode to that of the new station, it must be selected from the list.


Managing the Active List

Stations in the active list may be reordered by long pressing on a station that is to be moved and dragging it to a new location.  A left swipe on a station will reveal Update and Delete buttons on the right. Selecting Update will bring up a screen that provides fields for entering or updating the frequency, description and mode of the selected station. Selecting Delete will delete the station from the list. The move, update and delete functions may also be accessed by tapping the Edit button which will bring up a red circle on the left and a three line grab icon on the right of each station. Tapping the red circle will reveal the Update and Delete buttons. The three line grab icon on the right of a station may be dragged to move the station to a new location in the list.



Lists Tab


The Lists tab provides a set of Preset lists, and the ability to create, rename and manage Custom lists.  It also provide a means for exporting and importing lists.  The active list is selected from the Custom lists and highlighted in blue.  There is always a single active list, and the name and contents of that list are displayed on the Stations tab.  A new empty Custom list can be created by tapping the + button.  A new Custom list with the name and contents of a Preset list can be created by selecting a Preset list.   A Custom list may be renamed, deleted or moved via Edit or by swipe left on the name of the Custom list.  The Custom lists may be reordered by long pressing on a list name and dragging to a new location.


Preset Lists

The application comes with several lists as examples and for use in areas where they apply.   To use a Preset list, go to the Lists tab and select the list.  This will create a new Custom list with the name and contents of the selected Preset list. This new list will become the active list and will be highlighted in blue. The Preset Lists section may be collapsed or expanded by tapping the Preset section header.  


Custom Lists

A Custom list may be created in several different ways.  A new Custom list may be created from a Preset list by selecting the Preset list.  A new empty Custom list may be created by tapping the + button in the upper right hand corner and entering a name for the new list.  When the Save button is tapped, a new empty list with the specified name is created and it becomes the active list. New stations can be entered by switching to the Stations tab, tapping the + button and entering the frequency, description and mode for the new station.   New lists may also be created by importing lists of stations in CSV or TSV format as described below.


Managing Lists of Stations

The table of lists may be reordered by long pressing on a list that is to be moved and dragging it to a new location.  A left swipe on a list will reveal Update and Delete buttons on the right. Selecting Update will bring up a screen from which the name of the list can be updated. Selecting Delete will delete the list. The move, update and delete functions may also be accessed by tapping the Edit button which will bring up a red circle on the left and a three line grab icon on the right of each list. Tapping the red circle will reveal the Update and Delete buttons. The three line grab icon on the right of a station may be dragged to move the station to a new location in the list.  Note that there is always one active list, which is highlighted in blue and which cannot be updated or deleted.  To update or delete the active list, first select another Custom list so that it becomes the active list, then update or delete the first list. This restriction means that there will always be at least one Custom list, and if there is only one Custom list it will be the active list, it will be highlighted in blue, and it will not be possible to update or delete this list while it is the only Custom list.  


Import/Export Format

The Import and Export mechanisms represents lists of stations as Comma Separated Values (CSV) or Tab Separated Values (TSV).  These formats are easy to generate from a spreadsheet or directly as a text file, and are the formats in which lists of stations are typically represented for use in scanners and VHF transceivers.  For example, an Aviation list that has two stations, a Commercial list that has three stations and a Weather list that has two stations would be represented in CSV format as follows:


List,Frequency,Description,Mode

Aviation,135.275,PAO ATIS,AM

,118.600,PAO Tower,AM

Commercial,90.100,KZSU,WFM

,89.7,KFJC,WFM

,88.5,KQED,WFM

Weather,162.550,NOAA San Jose,NFM

,162.450,NOAA Santa Clara,NFM


This text could be placed in a file with a .csv extension and then opened in a spreadsheet where it would look like this:

 

List

Frequency

Description

Mode

Aviation

135.275

PAO ATIS

AM


118.600

PAO Tower

AM

Commercial

90.1

KZSU

WFM


89.7

KFJC

WFM


88.5

KQED

WFM

Weather

162.550

NOAA San Jose

NFM


162.450

NOAA Santa Clara

NFM


Spreadsheet applications generally have an export option with which a .csv or .tsv file can be created from a table.


The CSV or TSV data structure for lists is as follows:

  • The first row may be a set of column labels.  This row is optional.
  • All rows must have four elements separated by the field delimiter which is either a comma or a tab.
  • The four fields in each row are the List, the Frequency, the Description and the Mode, in that order.
  • The Frequency is in MHz and the Mode may be AM, WFM or NFM.
  • In a comma separated list, the List or Description field may placed in quotes to allow embedded commas.
  • Each station is associated with a list.  Sequential rows with the same value in the List field are grouped together in the same list.  
  • When the value in the List field changes, a new list is started.  If the List field is empty, the station will be included in the same list as the previous station. The first station must include a value in the List field.
  • Lists are not uniquely named, and if the same value is used in the List field in non-consecutive rows it will result in two different lists with the same name.  This is the same behavior as in the application where lists are uniquely identified by their position in the table, but list names are not required to be unique.
  • Except for the List field which may be omitted on all but the first station, all other fields must be non-empty and valid. 

When SDR Receiver receives imported data, each station is checked for validity, and a row containing an invalid station will be removed.  If there are any invalid stations, an error will be reported on import.  Rows that contain valid stations will be imported.  


Export

Lists can be exported in CSV or TSV format in several ways:  as a .csv or .tsv file; by copying to the clipboard and pasting into another app; and on iPad by drag and drop.  Select Export and the Custom list table will display selection circles on the left side, and an inactive (grey color) Share icon will be shown in the navigation bar at the top, just to the left of the Cancel button.   Select the lists to be exported and the corresponding circles will show check marks.  When the first list is selected, the Share button will change from grey to blue indicating that it is enabled. The Select All button will cause all the lists to be selected, and after Select All is tapped the button will change to Deselect All.  All lists can then be exported, or individual lists that are not intended to be exported can be deselected. After the desired set of lists are selected, select the Share icon to bring up the Share Sheet.  On the Share Sheet is a horizontal row showing the icons of apps that can accept data of the exported type (.csv or .tsv files).  Scroll to the right most side of this row and there are three dots labeled More.  Selecting More brings up additional apps that can accept the data.  Select one of the apps on the row or in the list to perform the export.  Note that there is an Edit option on the secondary list of apps brought up by the More option by which an app can be moved from the secondary list to the horizontal row for quicker access.  On the Share Sheet below the row of app icons is a list of other actions by which the export can be done. For example, Copy can be used to copy the CSV or TSV text data to the clipboard from which it can be pasted into an app that can accept data in CSV or TSV format including text-based apps like Mail and Notes, and also spreadsheets like Apple Numbers and Google Sheets.   Save to Files will allow saving to iCloud Drive.   Save to Dropbox will be shown if the Dropbox app is installed.  The choice of CSV or TSV as the export format is determined on the SDR Settings section of the Settings tab under SDR Settings Export. 


Export on iPad

On iPad, lists can also be exported by drag and drop.  The target app can be a text based app like Notes or the compose window of Mail, or a spreadsheet like Apple Numbers or Google Sheets.  Drag and drop requires that SDR Receiver and the target app are both visible on the screen, either with both apps visible in split screen, or with one as a hover overlay.  On the Lists tab simply long press on a list to be exported.  It will lift, and can then be dragged to the target app.  As the list is dragged to an app that can receive the drop, a green circle with a + will be shown in the upper right corner of the dragged image.  Once the drag of a first list has started, a second list can be added to the drag by tapping the name of the second list.  An image of the second list will be added to the image in the drag, and the circle in the upper right corner of the drag item will show 2.  Additional lists can be added to the drag in the same way.   Release the dragged items at the desired location in the target app to perform the drop.  For multiple item drop to work, the target application must be able to receive multiple drop items.  The Notes app, the Mail app compose window, and Google Sheets all accept multiple items.  Apple Numbers will only accept the first item of a multiple item drop.


Import

There are several paths by which data can be imported.  Text data in CSV or TSV format, in a file with the .csv or .tsv extension, can be referenced as an attachment in an email, or directly from the Files app or the Dropbox app if it is installed.  Tapping on a file that is a mail attachment will bring up a preview with a Share icon in the upper right.  Other apps that show files will also show a Share or Export icon.  Selecting the Share or Export icon will bring up the iOS Share Sheet which will show a horizontal row of app icons.  SDR Receiver can be found by selecting the More option on the right side of the row.  It may be selected from the secondary list that is brought up, and using the Edit option on that screen it may be moved to appear in the horizontal row.  Selecting SDR Receiver will cause a switch to the app which will show an alert indicating that the Share action requested to send it data, and showing the status of the request.  If the data contains valid lists of stations, the alert will display the option to Cancel or Import.  If there were errors in the data, SDR Receiver will indicate that there were errors, and provide the option to Cancel or Import the valid stations.  If there there were no valid stations, that will be indicated in the alert and only a Cancel option will be provided.  Data may also be imported by copy/paste.  In a text based app, select a block of text representing lists of stations in CSV or TSV format, and copy the text to the clipboard.  Then in SDR Receiver, select Import.  The clipboard will be inspected and an alert will pop up offering options based on the data that is found on the clipboard.  Data can also be copied from a spreadsheet like Apple Numbers or Google Sheets, and then pasted directly into SDR Receiver using the Import button.  If Universal Clipboard is enabled, data can be copied from an associated Mac and then pasted into SDR Receiver.  Data may also be sent to the device by AirDrop.  An alert will pop up showing applications that can can accept the data.  If the data is a file with a .tsv or .csv extension, SDR Receiver will be one of the choices offered.  Select SDR Receiver and the import alert will be shown.   When copy/paste is used for import, the text data can be in either CSV or TSV format, and the format will be automatically detected and correctly processed.   A text field in CSV format may contain embedded commas by enclosing the text field in quotes and the embedded comma will be correctly recognized as being part of the text field and not a field separator.


Import on iPad

On iPad, import can also be done by drag and drop from a text-based app or from a spreadsheet like Apple Numbers or Google Sheets.  SDR Receiver and the app from which the data is being dragged must both be visible, either in split-screen or with one app hovering over the other.  Select the CSV or TSV text data in the text app, or the block of cells in the spreadsheet containing the lists, and long press on the selection to lift the data for drag.  Then drag the data to SDR Receiver and lift the touch to drop the data.  SDR Receiver will bring up an alert as it does for file or copy/paste import, and if the dragged data contains valid station list data, the alert will offer the option to import.



Settings Tab


The Settings tab provides controls related to selecting the network address of the signal server, configuring the operating parameters of the signal server and radio including the server type and sampling rate, and settings related to the operation of SDR Receiver including audio filters and squelch.


Network Settings: Host

The host is specified by an IPv4 address, an IPv6 address or a symbolic host name.  The IP address or host name should specify a host at which a signal server application is listening for TCP/IP connections.  After an IP address is entered, tap Save to set it as the current IP address.  Previously saved IP addresses and host names are shown in a drop-down list that is displayed when the IP address field is selected.  This enables previously entered IP addresses and host names to be easily re-used.  Entries in the drop-down list may be deleted by swiping left.  Tapping Reset at the bottom of the drop-down list will delete all previously entered IP addresses and host names and reset the list to preset entries.


Network Settings: Port

The port is specified by a port number in the range 0-65,535.  The port number is initially set to the default value of 1234.  After a port number is entered, tap Save to set it as the port number.  Previously saved port numbers are shown in a drop-down list that is displayed when the port number field is selected.  This enables previously entered port numbers and host names to be easily reused.   Entries in the drop-down list may be deleted by swiping left.  Tapping Reset at the bottom of the drop-down list will delete all previously entered port numbers and reset the list to preset entries.  


Server Settings: Server Type

Select RTL-SDR , Airspy HF+ or SDRplay.    


Server Settings: Sampling

For RTL-SDR radios and signal servers, the application supports sampling rates of 240 ksps, 960 ksps, 1,440 ksps and 1,920 ksps.  For Airspy HF+ radios only one sampling rate is supported, 768 ksps, and this sampling rate is automatically set when Airspy HF+ is chosen as the Server Type.   SDRplay radios will work with any of the available sampling rates.   For streaming to be successful, the server and network connections must be able to sustain streams at the corresponding data rates.  Certain RTL-SDR radios support a Direct Sampling configuration that allows operation at lower frequencies.  This is supported by the Direct Sampling controls that allow choosing I Channel or Q Channel as the signal source.   For Direct Sampling with the RTL-SDR V3 radios, select Q Channel.  RTL-SDR radios deliver 8-bit samples.  Airspy HF+ and SDRplay radios have analog to digital converters with resolution greater than 8-bits. To take advantage of that increased amplitude resolution, when Airspy HF+ or SDRplay has been selected as the Server Type, a 16-bit Sample Size option is enabled and may be selected.  Note that selecting a Sample Size of 16-bits will double the streaming bandwidth.  To stream 16-bit samples, the hfp_tcp or rsp_tcp application should be started with the -b 16 option. 


SDR Settings: Audio Filter

The application provides a large set of audio high pass and low pass filters.  Each mode has its own set of filter values and default values.   Initially the filters are set to default values.  For each filter type—Low Pass and High Pass—there is a control that can be set to Default or to a numeric value.  Tapping Default will choose the default value which will be shown on the right segment of the control.  Tapping the numeric value will bring up a list from which other values may be selected.  Tapping any numeric value—either a displayed value from the list or the value shown on the control—will cause that value to be selected and shown on the control, and will cause the list to be hidden.  A selected default or numeric value will become active in the audio filter immediately when it is selected, and if a station is streaming the effect of that filter will be heard.  This allows different audio filter values to be quickly selected and evaluated.  Tapping Save will cause the selected filter value to be saved and the Audio Filter panel to be dismissed.  Tapping Cancel will cause any selected filter values to be discarded, the audio filters will be reset to the values that they had when the Audio Filter panel was first selected, and the Audio Filter panel will be dismissed.  This allows experimentation with new filter settings and then returning to the original filter value.


SDR Settings: Squelch

A Squelch Enable and Squelch Threshold value may be set for each mode.  When Squelch Enable is set to Off, audio will always play with no squelch.  With Squelch Enable set to On, the squelch will operate with a threshold set according to the Squelch Threshold control.  When this control is set to the extreme left side (Low) the squelch function is off (equivalent to Squelch Enable Off).   As the squelch control is moved to the right, a stronger signal is required to break squelch.  There are two different squelch algorithms, one for FM signals and the other for AM signals.  For FM signals the squelch is based on quieting at the higher audio frequencies in the demodulated audio signal.  This quieting is largely independent of received signal amplitude, and a squelch threshold setting in the middle of the range should work for all but the very weakest signals.  To hear very weak signals, the squelch function should be disabled.  For AM signals the squelch is based on energy in the signal passband before the demodulator.  In general, this level should be set by listening when no signal is present, moving the Squelch Threshold control from left to right to just past the point at which squelch quieting begins.  Moving the control further to the right will result in a stronger signal being required to break squelch.  The proper Squelch Threshold setting will generally depend upon the conditions of the band.


SDR Settings: Tuning

The frequency may be changed by tapping or holding down the up and down arrows on either side of the frequency display at the top of the Stations tab.  The Tuning Step Size is the increment by which the frequency changes with each tap.  A different step size may be set for each mode from the Tuning selection on the Settings tab.  There is a drop-down list from the right side of the Tuning Step Size selector that provides a range of step size choices from 100 Hz up to 200 kHz.  There is also a Default option on the left side of the selector.  When Default is chosen, the corresponding Default step size is shown on the right side of the selector.


SDR Settings: Export

Station lists may be exported in either Comma Separated Values (CSV) format or in Tab Separated Values (TSV) format.  The format is determined by selecting CSV or TSV on the Export Format control.



SDR Receiver Custom URLs


SDR Receiver can be launched from another application on the same device and set to begin streaming a specified station.  The station is specified in the form of a link using a custom URL format.  For example, the following SDR Receiver custom URL:


sdrreceiver://tuneto?f=162.550&name=NOAA&mode=nfm


will set the frequency to 162.550 MHz, set the mode to NFM and begin streaming.  The name parameter sets the description for the station.  The URL may be included in a document such as an email or a text message, just like any other URL.  When the URL is selected on a device on which SDR Receiver is installed, SDR Receiver will have registered itself as handling URLs that have sdrreceiver://  at the beginning.  If SDR Receiver is not active when the URL is invoked, it will be launched and will become active.  Once it is active, the parameters from the URL will be set in the app. Parameters that are not included in the URL will retain the values that were previously set in the app.  After SDR Receiver responds to the URL, its state will be the same as if the parameters specified in the URL had been set directly in the app. Parameters in the URL can appear in any order, and one or more of the parameters can be included.  A space in the name is represented by %20.


Tapping on an SDR Receiver custom URL causes the parameters of the app to be set according to the URL and causes the app to begin streaming.  It does not create a new station entry in the active list. To create a new station entry with parameters as set by the URL, select + on the Stations tab after SDR Receiver launches from the URL to bring up the New Station screen or popover.  Select Save to create a new station with the current station parameters.


On an iPad, SDR Receiver may be visible at the same time that a second app is visible, either in split screen or with a hovering overlay.  When a URL referencing sdrreceiver:// is invoked in the second app, SDR Receiver will respond and any visible controls that are changed by the URL will be updated as necessary.


These are examples of values for each of the three command types: 


Frequency Command

f=144.450


f=88.5


f=14.250



Mode Command

mode=am


mode=nfm


mode=wfm



Name Command

name=NOAA%20Santa%20Clara


name=KQED


name=20m%20USB


And below are several complete SDR Receiver custom URLs:


sdrreceiver://tuneto?f=88.5&name=KQED&mode=wfm 

sdrreceiver://tuneto?f=162.450&name=NOAA%20Santa%20Clara&mode=nfm 

sdrreceiver://tuneto?f=135.275&name=PAO&20ATIS&mode=am

sdrreceiver://tuneto?f=156.210&name=SCC%20Sheriff&mode=nfm

sdrreceiver://tuneto?f=145.230&name=N6NFI&mode=nfm 

sdrreceiver://tuneto?f=135.275&mode=am

sdrreceiver://tuneto?f=162.55&mode=nfm



Help.v29