Remote SDR V2 – Manual installation

Orange Pi One Plus

Below is the detailed procedure to install Remote SDR version 2 on an Orange Pi One Plus or an Orange Pi Zero 2. It is adaptable for other ‘Single Board Computer’ cards if they have the necessary computing power.

Sources are available on Github

Now, in May 2021, version 2.1 is released. It makes improvements when using a smartphone to drive the transceiver and installs like version 2.0.

Orange Pi Zero 2

Remote SDR V2 – Evolutions

Remote SDR is an application allowing remote control from a web browser, a radio transceiver based around 1 or 2 SDR (Software Design Radio). Introduction on Remote SDR V2 is available here:

The Orange Pi One Plus is a “Single Board Computer” card which, thanks to a 4-core 64-bit processor, provides the computing power necessary for signal processing at a cost of less than 40 €. In 2021, a new Orange Pi Zero 2 card with a similar processor also offers a WIFI connection, which facilitates the installation of the assembly remotely. The main changes brought by this new version of Remote SDR are:

  • Adalm-Pluto SDR compatibility in addition to HackRF One and RTL-SDR
  • Reception in NBFM, WBFM, AM in addition to SSB
  • Transmission in NBFM or SSB with Pluto or HackRF One
  • Reception spectrum on 2048 FFT points instead of 1024
  • Supply of system and SDR observation tools

Linux System Installation

Before installing the radio signal processing, the basic operating system must be installed. The procedure is detailed here:
– Orange Pi One Plus : system Armbian
– Orange Pi Zero 2 : system Debian
For greater ease of installation, do everything in ‘root’ for Remote SDR V2. It is necessary:

  • Download the Linux operating system for ARM processors, Armbian Buster (April 2021) from for the Opi One Plus or Debian from  for the Orange Pi zero 2 and load it onto a microSD card.
  • Obtain the IP address
  • Update the distribution
  • Set up the desktop
  • Install TightVNC to view the remote desktop
  • Install Samba if you want to access files from your Windows PC rather than SSH.

One of the big differences introduced by version V2 is the use of Apache as a web server rather than the basic functionality provided by Python. Installation is simple as described here:
Orange Pi Zero or Orange Pi One plus the procedure is identical. The installation will be done in the / var / www / html folder. It is this folder that we will use later and in which we will put a cgi-bin folder for dynamic pages.

The Apache configuration file must be adapted:

nano /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
	ServerName localhost

	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/html

	ScriptAlias "/cgi-bin/" "/var/www/html/cgi-bin/"
	<Directory "/var/www/html/cgi-bin/">
                AllowOverride None
                Options +ExecCGI
                AddHandler cgi-script .cgi .pl .py
                Require all granted

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

Note that in this new version of ‘Remote SDR’, the default port 80 is used and no longer port 8000.

Remember to activate the cgid module by typing:

a2enmod cgid

Now you have a complete operating system with a web server on port 80 which you can access at http: //<ip address>

GNU Radio Companion Installation

GNU Radio is a very powerful tool for modeling signal processing chains. GNU Radio Companion is a complementary tool allowing to build radio processing chains graphically without writing a line of code. So far for Debian Buster there is only version 3.7.13 which is considered stable.

apt-get install gnuradio

Install LXTerminal

apt install lxterminal

Add to the configuration file /etc/gnuradio/conf.d/grc.conf in the [grc] section

xterm_executable = /usr/bin/lxterminal

Switch to graphical mode using VNC (extension in chrome) if you are remote and launch ‘Gnu Radio Companion’ which is a fantastic graphical tool for creating signal processing chains. Examples can be found in the / usr / share / gnuradio / examples folder.

Osmocom SDR and RTL-SDR Driver Installation

To interface Gnu Radio with an SDR such as Hack RF One or one of the many RTL-SDRs, the Osmocom module must be installed. As a reminder, HackRF covers from 1 MHz to 6 GHz in transmission or reception with an 8-bit dynamic encoding. RTL-SDR depending on the model, covers from around 30 MHz to 1.7 GHz in reception only with 8-bit coding. It is very interesting for its price.

Installation of the USB library and the compilation tool:

apt-get install cmake build-essential libusb-1.0-0-dev
apt-get install pkg-config

We clone Osmocom in the Downloads folder of the root user, for example:

cd ~/Downloads
git clone

Go to the rtl-sdr folder and chain the commands: 

cd rtl-sdr
mkdir build
cd build
make install

Installation of the Osmocom source module

 apt-get install gr-osmosdr

Now the Osmocom module must be present in the list of processing blocks of ‘GNU Radio Companion’. It is possible to do signal processing on data from hackRF One or RTL-SDR.

By plugging a HackRF One into the Orange PI’s USB port, you can check its presence by installing the hackrf package and typing in a terminal:

apt install hackrf

With an RTL-SDR on the USB port, you have information by typing:



rtl_eeprom -h

Adalm-Pluto interface installation

The Adalm-Pluto is an interesting solution capable of working in Full-Duplex (simultaneous reception and transmission) in a frequency band between 325 MHz to 3.8 GHz. It is possible to extend the frequency range of Pluto from 70MHz to 6GHz. This is described in the following post :

To interface with ‘GNU Radio’, details are provided in this post on a simple NBFM transceiver.

Once the installation is done you can check the access to Pluto with the command:

ssh root@

The Pluto is physically connected by USB, but is accessible in ssh via an IP address The password is ‘analog’.

At this point the PlutoSDRsink and source blocks are available in ‘GNU Radio Companion’.

To remotely access Pluto, you must add the paramiko package.

apt-get install python3-paramiko

Websockets Installation

For python 3, you must add the websockets library which allows exchanges with the web browser. We install the pip installer, setuptools and websockets with the following commands:

apt install python3-pip
apt-get install python3-setuptools
pip3 install wheel
pip3 install websockets

Installation of Remote SDR V2 files

All the files necessary for the execution of Remote SDR V2 are to be installed in the / var / www / html folder of the web server. At first to facilitate the transfer from the source downloaded on Github to the Orange Pi, it is preferable to give all the permissions to the html folder.

chmod -R 777 html

Once the files are in place, you must ensure access rights. Go to the html, PY and cgi-bin folders to set the 777 rights for the .py files

chmod 777 *.py

Set for .txt files in PY

chmod 666 *.txt

Likewise for .sh files in cgi-bin.

chmod 777 *.sh

Likewise for the apache2 logs in var / log

chmod -R 777 apache2

For Remote SDR it is necessary to launch on loading (boot) a python program which will manage the whole. For that in cron jobs we create a launch line. Make:

crontab -e

Write the following line at the bottom of the page.

@reboot python3 /var/www/html/

Now your system will be ready after a last reboot.

Launch of Remote SDR v2

If you are using an Adalm-Pluto, only one Orange PI is needed. If you use a HackRF in transmission and an RTL-SDR or hackRF in reception, you will need 2 Orange Pi One Plus with the same configuration. You launch the application on one of the Orange PIs at the address:


You need a modern browser like Chrome or Edge. These do not give access to the microphone if the site does not have secure access in https. On your local network at home, you generally work in http simply. To get around this difficulty, the solution is to set up a derogation at the level of the web browser by accessing the “flags” parameters. you must type in the address bar:

with Chrome: chrome://flags

with Edge(2020): edge://flags

Look for the heading:

Insecure origins treated as secure

Fill in the field as below with the IP address of the orange PI which provides the pages.

Note that the exchanges are done in http on the usual port 80 for the contents of pages. Ports 8001 to 8003 are used to exchange data with the Orange Pi responsible for reception. Ports 8004 to 8005 are used to exchange data with the Orange Pi responsible for transmission.

Articles describing Remote SDR v2