Remote SDR V2 – Software Architecture

Remote SDR V2 is a hardware and software set to create a radio transmitter / receiver based on SDR (Software Design Radio) that can be remotely controlled by the web. For an introduction to Remote SDR V2 see here.

Remote SDR V2, runs for the signal processing part on an Orange Pi (see a Raspberry Pi) and on a conventional computer (PC, Mac etc.) for viewing in a Web page. The technologies used are diverse such as:

  • DEBIAN or ARMBIAN for the system
  • Python / GNURADIO for the upstream signal processing part
  • HTML / Javascript for downstream signal processing and visualization.

The Receiver

Functional diagram of the radio receiver

The Orange PI controls the SDR and performs on the I and Q signals supplied by it, a Fourier transform (FFT) to analyse the spectrum on 2048 points around the central reception frequency. In parallel in the SDR reception band (1 or 2 MHz), an audio channel demodulated in AM, NBFM, WBFM or SSB is extracted. The spectrum on 2048 points is sent 5 times per second to the computer in charge of remote viewing in a web page. The audio channel sampled at 10kHz (which is sufficient for voice) is sent to the same computer for analogue broadcast. Signal processing in the Orange Pi is modelled using the very powerful GNU-Radio Companion 3.7 graphical tool which automatically generates C and Python 2 code.

The Transmitter

Functional diagram of the radio transmitter

From the web page of the remote computer, we define the transmission frequency, the type and the modulation rate (NBFM, USB, LSB). The microphone signal is sampled at 10 kHz then sent to the Orange Pi in charge of the emission which passes the modulated signal to the SDR.

The Network

The exchange between the Orange Pi (s) and the remote display computer is carried out via the local ethernet , WIFI network or internet. This architecture, with the main part of the processing carried out at the bottom of the antenna, makes it possible to reduce the throughput by approximately 100. The input / output data rate of an SDR is of the order of 10 MB / s. The input / output data rate of the Oranges Pi is less than 100 KB / s. This facilitates transport to the remote computer which does not need any dedicated software installation.

The Remote Computer

The remote computer to control the transceiver only uses a web browser like Chrome or Edge. It does some signal processing in Javascript (filtering and FFT on the audio) and real-time visualization. There is only one constraint, as we use the microphone and do not work in secure https mode, access authorization must be configured in the browser (see the Remote SDR V2 installation procedures).

The Files

All files and folders are located in the Apache server folder / var / www / html. If we use 2 Oranges Pi, the structure is the same and we address one of the Oranges Pi at the address: http: //<orange-pi ip>

3D et build
Folders where the files of the linux penguin 3D modeling of the home page are located.

cgi-bin
Files called by the apache server for dynamic pages such as receiver demodulation selection, transmitter modulation, pin26 test (pin 10 for an orange pi zero 2) of the orange pi one plus (see emission protection).

css
Style files for web pages

JS
Important javascript files like remote_sdr.js which mainly manages reception, remote_TX.js which manages transmission and tools.js which manages the tooling functions of the tools page.

log
Some logs that can be found in the tools page.

PY
All signal processing source and python 2 files. Each modulation type has a corresponding GNU Radio file which is started according to the chosen modulation.

configurationRX.js
You can see its content in the tools page but you have to adapt it with a text editor to your own system configuration and preferences.

configurationTX.js
Preferences for the transmitter to be adapted.

index.html
Home page with the TUX penguin.

remote_sdr.html
Remote SDR main page

start_radio_manager_at_boot.py
File launched at the boot of the orange pi which manages the launch of the various python scripts specific to each modulation. It is called by a cron job. In a terminal do: crontab -e and put the following line at the bottom of the file.

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

tools.html
File giving access to various tools to check the correct functioning.

Articles sur Remote SDR v2