Remote SDR v4 – Manual Installation

Raspberry Pi 4 B

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

Sources are available on Github

https://github.com/F1ATB/Remote-SDR

Orange Pi Zero 2

This version 4 of Remote SDR is built around the OS Armbian (Bullseye) for the Orange Pi Zero 2 and Raspberry OS (Bullseye) for the Raspberry 4B. GNU Radio for the signal processing is now 3.8.

Remote SDR V4 – 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). See the presentation here:
https://f1atb.fr/index.php/fr/2021/05/03/remote-sdr-v2/

The Orange Pi Zero 2 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 €. Remote SDR also runs on a Raspberry Pi 4B with 2GB of memory or more. The main features provided by this new version of Remote SDR are:

  • Processing of SDRs:
    • Adalm-Pluto,
    • HackRF One,
    • RTL-SDR,
    • SA818 transmitter module in NBFM
  • Reception in SSB, NBFM, WBFM and AM,
  • Emission in NBFM or SSB with Pluto or HackRF One,
  • Reception spectrum on 2048 FFT points up to 2 MHz band,
  • Interfacing with Gpredict to compensate the Doppler of low orbit satellites,
  • 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:

Téléchargez le système d’exploitation Linux pour processeurs ARM , Armbian Bullseye (Octobre 2021) sur armbian.com pour l’Orange pi zero 2 et le charger sur une carte microSD.

Obtain the IP address and connect in SSH. The detailed procedure to install the system and an Apache server can be found here:

Orange Pi Zero 2 – Bullseye

The Raspberry Pi OS version in Bullseye version is now available here. Select the version with desktop only.

  • Install Apache as explained in the procedure above for the Orange Pi Zero 2
  • Make a raspi-config in a terminal or go to the settings to activate SSH access and VNC access.
  • Configure Samba if you want to access files from your Windows PC rather than SSH.
Note for VNC on Raspberry Pi 4

As of this date (November 2021), VNC with Bullseye has a low resolution and is very slow if a monitor is not connected. To resolve this difficulty, pass in root (sudo su)and type raspi-config :

First, update raspi-config and then select Display Options.

For all the commands to follow, I prefer to work directly as root. Done in terminal one:

sudo su

At this point you should have a full 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. At this time for Debian Bullseye version 3.8 is considered stable.

apt-get install gnuradio

Pour les Orange Pi, installez LXTerminal

apt install lxterminal

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

[grc]
xterm_executable = /usr/bin/lxterminal

Switch to graphics mode using VNC (extension in chrome or TightVNC) if you are remote. Port 5901 for Oranges Pi.

Launch ‘Gnu Radio Companion’ if you want to find out. It is a fantastic graphical tool for creating signal processing chains. Examples can be found in the / usr / share / gnuradio / examples folder.

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

Some of these applications may already be available on your system.

Installation of SDR drivers

Depending on the SDR models you want to use, you have to install the corresponding driver or install all of them to be universal.

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 approximately 30 MHz to 1.7 GHz in reception only with 8-bit coding. It is a very interesting low cost SDR.

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 or the / home / pi / Downloads folder for Raspberries:

cd /home/USER/Downloads ou cd /home/pi/Downloads
git clone https://github.com/osmocom/rtl-sdr.git

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

cd rtl-sdr
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON -DDETACH_KERNEL_DRIVER=ON
make
make install
ldconfig

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 USB port of the Orange / Raspberry PI, you can check its presence by installing the hackrf package and typing in a terminal:

apt install hackrf
hackrf_info

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

rtl_eeprom

or

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 article : https://f1atb.fr/index.php/2021/03/09/frequency-extension-of-pluto-sdr/

The Pluto interfaces through the USB port which behaves like an ethernet port. It should not be powered from the Orange / Raspberry Pi’s USB port, as there are breaks in the link. In addition add an external 5V2A power supply. The Pluto has a micro USB input to power it.

Check that the following modules are present with:
lsmod.

They are missing with some versions of Armbian / Debian.

  • cdc_acm,cdc_ether
  • rndis_host
  • rndis_wlan
  • usbnet

If a module is missing type:

modprobe « name of the module »

modprobe adds the modules with their dependencies, so by adding for example cdc_ether, usbnet will also be added. After each installation make an lsmod to check.

With the orange pi zero 2, not all of these modules are available on the Armbian bone, but this does not seem to interfere with the operation. Cdc_ether and usbnet are missing. Likewise with the Rasopberry Pi 4, usbnet is missing.

As recommended on the Analog Device website, add in the folder :
/etc/udev/rules.d/
the rules file : 53-adi-plutosdr-usb.rules below. Type :

nano /etc/udev/rules.d/53-adi-plutosdr-usb.rules

# allow "plugdev" group read/write access to ADI PlutoSDR devices
# DFU Device
SUBSYSTEM=="usb", ATTRS{idVendor}=="0456", ATTRS{idProduct}=="b674", MODE="0664", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2fa2", ATTRS{idProduct}=="5a32", MODE="0664", GROUP="plugdev"
# SDR Device
SUBSYSTEM=="usb", ATTRS{idVendor}=="0456", ATTRS{idProduct}=="b673", MODE="0664", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2fa2", ATTRS{idProduct}=="5a02", MODE="0664", GROUP="plugdev"
# tell the ModemManager (part of the NetworkManager suite) that the device is not a modem, 
# and don't send AT commands to it
SUBSYSTEM=="usb", ATTRS{idVendor}=="0456", ATTRS{idProduct}=="b673", ENV{ID_MM_DEVICE_IGNORE}="1"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2fa2", ATTRS{idProduct}=="5a02", ENV{ID_MM_DEVICE_IGNORE}="1"

To make Adalm-Pluto work with GNU Radio, you need to install the following packages:

  • apt-get install gr-iio
  • apt-get install libiio-utils
  • apt-get install gqrx-sdr

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

ssh root@192.168.2.1

The Pluto is physically connected by USB, but is accessible in ssh via an IP address 192.168.2.1. 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

Raspberry Pi 4 et Adalm-Pluto

To test the interface with Adalm-Pluto, check that it is visible in the list of devices connected via USB by typing in a terminal: lsusb

Installation Serial Interface for SA818

SA818 – VHF/UHF – NBFM

The SA818 module allows to transmit in VHF or UHF in NBFM with a power of 1w. It interfaces to the Orange Pi Zero 2 through the UART5 serial port and the ‘Line Out’ analog audio output. You have to install the python library for access to the serial port:

pip3 install pyserial-asyncio

Installation Remote SDR V4 files

All the files necessary for the execution of Remote SDR V4 must 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 / Raspberry Pi, it is preferable to give all the permissions to the html folder.

chmod -R 777 /var/www/html

The same goes for the apache2 logs in / var / log

chmod -R 777 /var/log/apache2

Later, once everything is installed and operational, you can limit the access rights.

For Remote SDR it is necessary to launch on loading (boot) a python program which will manage the whole. For this in cron jobs we create a launch line. You absolutely have to be root to create the crontab attached to root. Make:

crontab -e

Write the following line at the bottom of the page.

@reboot python3 /var/www/html/start_radio_manager_at_boot.py

Now your system will be ready after a last reboot.

Please note that upgrading from Remote SDR V2 to Remote SDR V4 can only be done by completely replacing the OS as described in this article. We go from version 10 of Debian to version 11 and we go from version 3.7 to version 3.8 of GNU RADIO.

Launch of Remote SDR v4

If you are using an Adalm-Pluto, only one Orange PI Zero 2 or one Raspberry Pi4 is needed.

If you use a HackRF in transmission and a hackRF in reception you will need 2 Orange Pi Zero 2 with the same configuration or a single Raspberry Pi 4. You launch the application on one of the Orange PI at the address :

http://192.168.xx.xx

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(2021): edge://flags

Look for:

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, via websockets, with the Orange / Raspberry Pi responsible for reception. Ports 8004 to 8005 are used to exchange data with the Orange / Raspberry Pi responsible for the transmission.

With version v3 of Remote SDR, it is possible to interface with Gpredict via port 8006 for the receiver and 8007 for the transmitter.

In the case of a single processor, it processes all the exchanges on ports 8001 to 8007.

Software Architecture

Posts about Remote SDR

Leave a Reply

Your email address will not be published. Required fields are marked *