Remote SDR v4

“Remote SDR” or “SDR Distant” is a web application allowing to remotely control an amateur radio transceiver between 1 MHz and 6 GHZ. Its first application was the duplex control of a station allowing links to the geostationary satellite QO-100 / Es’Hail 2.

Remote SDR version 4.0 is available on Github.


  • SDR in reception:
    • RTL-SDR (example: NESDR SMArt from Nooelec) or,
    • HackRF One or,
    • Adalm-Pluto
  • Frequency: 1 MHz to 6 GHz (depending on the chosen SDR)
  • Spectral band processed: 2 MHz on 2048 points (depending on the chosen SDR)
  • Audio: 1 channel
  • Demodulation: NBFM, WBFM, AM or SSB
  • Automatic band scan
  • Hardware:
    • HackRF One or,
    • Adalm-Pluto (common with the receiver) or,
    • NBFM VHF / UHF SA818 module from G-NiceRF
  • Frequency: 1 MHz to 6 GHz (depending on the chosen SDR)
  • Power: 1 dBm to 30 dBm (depending on the chosen SDR)
  • Audio: 1 channel
  • Modulation: NBFM or SSB
  • Transmitter modulation compressor
  • CTCSS encoder
  • DTMF encoder
  • 1750 Hz encoder
  • Programmable frequency offset for relays
Radio processing
  • Hardware:
    • Orange Pi Zero 2 or Orange Pi One Plus, or
    • Raspberry Pi 4B (2 GB)
  • Software:
    • Operating System: Armbian / Debian Bullseye
    • Web server: Apache 2
    • Signal processing: GNU Radio 3.8
    • Remote SDR (version v3 minimum)
      • Html
      • Javascript
      • Python 3
  • Network interface: wired Ethernet or WIFI
  • Interfacing with Gpredict to compensate the Doppler of low orbit satellites
  • Display and Audio: WEB page on PC, tablet or smartphone


Remote SDR – Adalm-Pluto – Raspberry 4
– Well-known RPI4
– Wifi or Ethernet
– 12 bits of Pluto dynamic
– poor stability in frequency of the Adalm-Pluto

May require the addition of an external oscillator and the extension of the Adalm-Pluto band.

Remote SDR – Adalm Pluto – Opi Zero 2 – Wifi
Avantages Disadvantages
– optimized for cost
– Wifi or Ethernet
– 12 bits of Pluto dynamic
– poor stability in frequency of the Adalm-Pluto

May require the addition of an external oscillator and the extension of the Adalm-Pluto band.

Mixed Configuration HackRF – RTL-SDR – Orange Pi Zero 2
RTL-SDR – HackRF One – Orange Pi zero 2
Avantages Disadvantages
– optimized for cost
– good frequency stability of the TX if a TCXO mounted on the HackRF One
– different frequency coverage of RX and TX
– RX frequency stability depends on the chosen RTL-SDR model
– 8 bits of SDR dynamic
Mixed Configuration HackRF – RTL-SDR – Raspberry Pi 4
Remote SDR – HackRF One and RTL-SDR – Raspberry Pi 4
Avantages Disadvantages
– Well-known RPI4
– good frequency stability of the TX if a TCXO mounted on the HackRF One
– different frequency coverage of RX and TX
– RX frequency stability depends on the chosen RTL-SDR model
– 8 bits of SDR dynamic
Configuration 2 Hack RF One
Remote SDR – 2 HackRF One – Raspberry Pi 4B
Avantages Disadvantages
– Well-known RPI4
– good frequency stability of the TX and RX if a TCXO mounted on the HackRF One or shared between them
– large frequency coverage
– 8 bits of SDR dynamic
Configurations RTL-SDR and SA818
VHF or UHF NBFM Transceiver
VHF and UHF NBFM Transceiver
Avantages Disadvantages
– cost around 100 €
– power 1w HF
– VHF 2m and/or UHF 70cm only
– only NBFM transmission, no SSB

Details on the one band transceiver here.

Details on the two bands transceiver here.

These configurations make it possible to locate the HF part near the antennas, which is essential for links above GHz. In the transmission chain, amplifiers must be added to bring the HF signal to the desired level as well as filtering to ensure that unwanted lines are not emitted. The SDR of the reception chain can be either an HackRF One, an RTL-SDR or a Pluto depending on the frequency band you want to cover. Not all RTL-SDR models cover the same band. The transmission reception is carried out in full-duplex which is essential during satellite connection to hear the return of its own signal.

As of today (October 2021), the Raspberry Pi 4B (2 GB) is a good solution, but there are supply difficulties. The “Orange Pi” are processors similar to the Raspberry Pi running under the Armbian or Debian Operating System. In 2020 I used the Orange Pi One Plus, now in 2021 the Orange Pi Zero 2 also offers a 64-bit / 4-core processor, but also an ethernet or wifi connection. They serve as a web server and perform radio signal processing.

Example Transceiver QO-100

F1ATB QO-100 Transceiver since May 2020

Example UHF Transceiver – Wifi – Orange PI Zero 2

New configuration with the Orange Pi Zero 2 which allows communication via WIFI. No more wired Ethernet link, only 220v near the transmitter / receiver.

Experimental 432 MHz (70 cm) transceiver

Note that you need a USB Hub between the Pluto and the Orange PI One Plus (not for the Orange Pi Zero 2). This corresponds to a system bug.

Code Source et Image

The source code and the image for Orange Pi and Raspberry Pi 4B are available on Github https://github.com/F1ATB/Remote-SDR .

Key points of Remote SDR

In addition to being able to locate the HF treatment near the antennas, other points should be noted such as:

Data rate reduction

An SDR like the Pluto requests 1.4 M samples / s (minimum) * 2 Bytes (16 bits) * 2 channels (I and Q) = 5.6 M Bytes / s for reception. It is the same for the emission. Which gives us more than 10M bytes / second.
With Remote SDR, output on Ethernet or WiFi requires:

  • 10 k samples / s * 2 bytes for the audio in reception
  • 10.24 k sample / s * 2 bytes for the received spectrum
  • 10 k sample / s * 2 bytes for transmit audio
    We are at less than 100 k bytes / s by adding the control data.

There is therefore a reduction of approximately 100 in the communication speed required, which facilitates remote control via internet / ethernet without loss of quality through data compression.

The mini remote computer

Indeed, we have a remote computer which has a GPIO to which it is possible to add functions. For example, controlling an antenna rotor, measuring electrical voltages, temperatures, etc., … It is possible to access the system via the web (Apache server), in SSH to launch an application in terminal mode, or in graphical mode by the desktop and VNC.

Posts Remote-SDR

VHF and UHF NBFM Transceiver

RTL-SDR is a low-cost receiver solution, covering VHF / UHF and using SDR (software radio) technology. SA818 is also a low-cost NBFM transceiver solution in VHF and UHF. Why not combine the 2 to create a transmitter / receiver similar to an SDR managed by a nanocomputer or SBC (Single Board Computer). Viewing and listening is done remotely via a web browser on PC, tablet or smartphone using the “Remote SDR” application.

SA818 / RTL-SDR NBFM transceiver


  • Hardware: RTL-SDR (example: NESDR SMArt from Nooelec)
  • Frequency: 30 MHz to 1.7 GHz
  • Spectral band processed: 2 MHz
  • Audio: 1 channel
  • Demodulation: NBFM, WBFM, AM and SSB
  • Hardware: SA818 from G-NiceRF (Aliexpress)
  • Frequency: VHF amateur band of 2 m and UHF band of 70 cm
  • Power: 1W
  • Audio: 1 channel
  • Modulation: NBFM

Hardware: Orange Pi Zero 2
Software: Remote SDR (version v3 minimum)
Connection: wired Ethernet or WIFI
Display and Audio: WEB page on PC, tablet or smartphone


Reception diagram

The antenna signal passes through a pin diode switching, to reach the RTL-SDR receiver. Different models exist on the market, that of Nooelec is more accurate on the quartz side, with a TCXO allowing to have a good precision and stability in frequency. It remains a simple SDR encoding the signals on 8 bits, which limits the dynamics of the processed signals. But it is sufficient for a simple transceiver. The output is done by the USB directly connected to the Orange Pi Zero 2 which takes care of the signal processing and allows to digitize a band 2 MHz wide, which is perfect for covering the entire 2 m band with one eye and monitor the various OMs or relays. In addition, WBFM and AM detections allow listening to music or aviation channels.

Transmission diagram

For this project, only the transmitting part of two SA818 modules from G-NiceRF is used. The SA818-V to cover VHFs and the SA818-U to cover UHFs. For less than 20 €, you can buy a minimum of 2 from Aliexpress.

The SA818s are connected to the Orange Pi Zero 2 which provides them with the desired working frequency via a serial bus. The ‘Line-Out’ analog output of the Orange Pi Zero is connected to the microphone input of the SA818. The antenna output of each SA818 is connected to the pin diode antenna switching relay to select the transmit module.


In a previous article, a simple configuration with a single transmitter in VHF or UHF was discussed. Here the transmission channel is doubled to handle VHF and UHF. The use of 2 SA818 modules requires the switching of some signals by diodes, because they cannot simply be put in parallel when one is working and the other is on standby.

TX-RX et traitements
The receiver

The RTL-SDR key receives the signals from the antenna, digitizes them in the chosen band and passes the samples to the processing processor, the Orange Pi Zero 2. It is a Chinese-made processor, running on Linux / Armbian and similar to the well-known Raspberry PI, but for a lower QSJ. The key is plugged into the USB port of the Orange Pi Zero-2. The 30 MHz to 1.7 GHz coverage allows listening to many broadcasts using the Remote SDR software. The audio signal at the demodulation output and the spectrum of the entire listening band are sent to the web browser (Chrome or Edge) for display and control.

The transmitters

The audio signal to drive the microphone inputs of the transmitters is available on the Line-Out output of the Orange Pi zero. 640 kΩ resistors are used to adjust the input level. The transmission frequency is provided by a UART5_TX and UART5_RX serial link. A diode circuit makes it possible to exchange information with the active SA818 module and to isolate itself from the inactive one. It is not possible to change the frequency during the transmission phase. It is the Orange Pi, with the outputs on pins 16 and 18, which activates and deactivates the SA818s using their ‘Power Down’ input. The HF output is on pin 12 of SA818.


The command to switch to transmission is not done by a simple change of state of an output of the GPIO of the Orange Pi for security reasons. In the event of a processor crash, the state of the output is not known and the transmitter risks being blocked in transmission.

The web client sends an audio signal from the microphone sampled at 10 kHz and encoded in 2 bytes. These 2 * 10,000 samples, per second, are sent in packets of 512. This makes about 40 packets per second sent only in the transmission phase. Each time a package arrives, pin 26 changes state. This will generate us a square wave of 20Hz or a period of 50ms. This signal attacks a monostable (CD4538) which will be active as long as audio samples arrive from the browser. It attacks the PTT entry of SA818. In the event of stop or crash of the processor, the monostable falls again and the emission stops.


An Orange Pi Zero 2 is responsible for processing the signal on reception and transmission. It is a 64-bit 4-core processor with analog audio inputs / outputs and an Ethernet connection by cable or Wifi. It runs the Remote SDR application (minimum version V3), common to other SDRs. A web server provides the viewing page, audio output to headphones or loudspeakers and microphone input to a PC, tablet or smartphone.

The reception of I and Q data from the RTL-SDR sampled at 2.4 MHz is done through the USB port of the Orange Pi.

GPIO / Pins / Functions of the Orange Pi Zero 2

To isolate the system from the electrical noise, generated by the Orange Pi, remember to decouple the power supply with capacitors of more than 100 μF and capacitors of 10 nF to absorb the HF and voltage peaks. Bad decoupling is found in background noise on the audio of the transmitter.

If the Orange Pi Zero 2 overheats, a small fan powered by 5V starts up if the temperature exceeds 65 ° C. GPIO pin 7 goes to 1 and attacks a 2n2222 serving as a switch.

SA818 Pinout

The 2 models, the VHF or the UHF have the same pinout.

Pins du SA818

The SA818 tends to heat up, especially if supplied with 5V. It accepts lower voltages as proposed here with a 1n4007 diode which lowers the voltage (VDC) around 4.5v. On the golden part of the SA818, near the antenna, we can add a heat sink.

HF filtering and switching

The SA818s directly output a signal at the desired frequency, around 1w. A spectral analysis shows some residuals of harmonics 2 and 3. In order to have a cleaner signal, each module is followed by a low pass filter with 2 inductors and 3 adjustable capacitors.

  • 144 MHz
    • Adjustable capacitors: 30pF
    • Inductances : 3 turns on diameter 6 mm in electrician’s copper wire 1.3mm in diameter
  • 432 MHz
    • Adjustable capacitors: 10pF
    • Inductances : 1 turn on diameter 6 mm in electrician’s copper wire 1.3mm in diameter
Filtrage et commutation HF

Three pin diodes are used to connect the antenna to the receiver or to one of the two transmitters. PNP switching transistors (BC327 or other), establish the logic to send the current to the pin diode which must let the passage of the HF. The maximum current is set by the resistor of 120 Ω which passes through LED diodes which make it possible to check the correct operation in RX, TX VHF or TX UHF. Ferrite chokes, type ‘VK200’, make it possible to separate the direct current and the HF. The switching orders come from the monostable CD4538 and the Orange Pi Zero 2. It is a negative logic, with 0v which opens the transistors.

NBFM Transceiver 144 MHz and 432 MHz

Remote SDR Application for SA818

The “Remote SDR” application processes various SDRs in transmission, such as HackRF or Adalm Pluto. In the case of the SA818, there are some specificities to adapt to its interfaces.

Programming transmission frequency

It is a serial link at 9600 baud, connected to the Uart5 port of the Orange Pi Zero 2. A python program receives the frequency order from the web client using websocket technology. This order is adapted to the format required for the SA818. The python application uses the pyserial-asyncio library installable by the commands:

apt install python3-pip
pip3 install pyserial-asyncio

The serial ports available on the card are given by:

dmesg | grep tty

found in / dev / ttys5 …

CTCSS code

The CTCSS code, useful for opening certain relays, is generated by the SA818 which receives, through the serial port, a channel number between 1 and 38 which corresponds to the frequency entered in the configuration table TX.js. This CTCSS code is not generated directly in the audio signal at the web client level as for other SDRs, because the SA818 cuts all signals below 300Hz.

Modulation by microphone audio signal

The microphone signal is digitized at the PC level by the web browser, then sent to the Orange Pi which outputs it in analog form on the 2 Line Out outputs. A python program built with the Gnu Radio Companion application performs the digital to analog conversion. The analog output level is set by the system audio mixer. Its level is defined each time the application is launched in the asound.state file in the PY folder. If you want to modify the modulation level, you must open the audio mixer in a terminal window with:


Use the arrows to adjust the ‘Line Out’ output level to adjust the modulation rate in NBFM. Once the correct setting has been found, saved it in the asound.state file with the command:

alsactl --file /var/www/html/PY/asound.state store

If you want to test the audio output with a wav file:

aplay -D hw:0,0 test.wav

Remote SDR

Remote SDR, installs on the Orange Pi Zero 2. The application includes signal processing and the web server that provides the page to the transceiver control web browser. The easiest installation is to download on Github, the Remote SDR image (at least version 3) for Orange Pi Zero 2 which includes the Armbian Bullseye OS and all the necessary libraries.

Remote SDR

Please note that the ability to drive an SA818 is only available for Orange Pi Zero 2. Not to be confused with the Orange Pi Zero which is a 32-bit processor. Raspberry PI 4s, used with other SDRs, which do not have an analog output directly, cannot interface with the SA818.

TX amplifier

The output of the SA818 provides approximately 1W of signal. If you want more power, there are amplifiers on the market. Do not forget a band pass filtering to get rid of any parasitic signal that could be at the output of the SA818.

Post on the Orange Pi Zéro 2