Remote SDR v5

Web based Transceiver

“Remote SDR” 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 5.0 is available on Github.
New features as :

  • New SDRs processed:
    • SDR Play RSP1, RSP1A,
    • MSI.SDR
  • Sharing the receiver between multiple users
  • https protocol (port 443) grouping all communications

Listen to QO-100 live with Remote SDR


  • SDR in reception:
    • RTL-SDR (example: NESDR SMArt from Nooelec) or,
    • HackRF One or,
    • Adalm-Pluto
    • RSP1, RSP1A
    • MSI SDR
  • 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, SSB or CW
  • RTTY decoder
  • Automatic band scan
  • Equalizer on the audio channel
  • Notch filter
  • Noise filter
  • 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, SSB or CW
  • RTTY encoder
  • Transmitter modulation compressor
  • Audio equalizer
  • CTCSS encoder
  • DTMF encoder
  • 1750 Hz encoder
  • Programmable frequency offset for relays
  • Automatic CW Manipulator (Iambic A and Iambic B)
Radio processing
  • Hardware:
    • Orange Pi Zero 2 , or
    • Raspberry Pi 4B (2 GB)
  • Software:
    • Operating System: Armbian / Debian Bullseye
    • Web server: Node JS /Express
    • Signal processing: GNU Radio 3.9
    • Remote SDR (version v3 minimum)
      • Html
      • Javascript
      • Python 3
    • Chrome, Edge or Chromium web browser. Don’t use Firefox.
  • Network interface: wired Ethernet or WIFI
  • Interfacing with Gpredict to compensate the Doppler of low orbit satellites
  • Interfacing with GS-232 type rotator
  • 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

In degraded mode, it is possible to extend reception in the 0.5 MHz – 30 MHz band with an RTL-SDR V3.

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

In degraded mode, it is possible to extend reception in the 0.5 MHz – 30 MHz band with an RTL-SDR V3.

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 in June 2022

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 .


Since version 5.0, it is possible to update, online,Remote SDR to the last version. Go to the “Tools” page and click on :
Look for updates / Recherche des mises à jour

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

F1ATB André

Ham Radio - Home automation - Photovoltaic

You may also like...

41 Responses

  1. ON8HZ - Lieven says:

    Hello André,

    thank you for this new release. I am testing it out on an RPi4 with the image you provide via github.

    I have some feedback:
    * even after resetting the browser settings and cache I have the strange behaviour that when I enable RX auto frequency correction to track the beacons. Every time I do so and no matter which manual frequency correction I set, the ‘man correction’ field jumps to -140 kHz when I select the ‘auto correction’ selector box.
    Whenever I perform an update to bring the beacons more in line with the actual required frequency, the next time the correction is updated automatically, it jumps back to 140 kHz.
    * When I try to set the TX to ‘QO100-up’, the selected frequency band jumps back to 70 cm (432 000 000 Hz).
    * I get a notification on the front screen that version 5.01 is available. I don’t think I find it back on either your website or the github pages. Is this intended?

    For your reference: I have also tried the QO100 remote listening station that you have setup on your website and that one works fine. I also see that site is running 5.01, so maybe the issues I am seeing are merely due to me running an initial version of remote SDR?

    All the best,
    ON8HZ Lieven

    • F1ATB André says:


      For the frequency correction, you have to set a frequency window in which the system will look for the beacons. It depends on your system. For example -20000,+150000. It’s define in the “Settings” page, RX configuration, Frequency Bands.
      For the version 5.01. It’s a minor bug correction for RTTY. You can update from 5.00 to 5.01 in the Tools page. Click on “Look for updates”.
      For the TX, don’t forget to enter the access key. 1234


      • ON8HZ - Lieven says:


        thanks a lot for the fast response. After entering the access key in the setting screen, a lot became clear to me. All frequency settings get unlocked and new buttons appear in the tools menu.

        It was a PICNIC (Problem In Chair, Not In Computer) 😉

        Thanks and have a nice weekend,

  2. Hugo says:

    Hi Andre, good morning, I’m having problems activating the PLUTO in TX mode, in version 5.02 the TX was working well, I ended up upgrading to version 5.04 and it’s not working anymore, I did the whole browser reset procedure, clear in the settings from the browser, reboot on adalm pluto via remote sdr tools and I couldn’t solve the TX, do you have any suggestions to solve this problem?
    Just for the record this also happened in version 5.01 I could not key the pluto transmitter, when I updated to version 5.02 everything worked again, another information for registration when I have another IP address configured on the Pluto USB the TX does not work, only when I change to the default that returned to work the TX in version 5.02.

  3. Hugo says:

    Hello Andre,
    I solved the problem I did not inform that I switched for another pluto that was with version 0.31 and did not work when updating to version 0.34 the tx is working, ask a new question, I realized that CHROME and Edge made updates and in these new updates I can no longer give a BYPASS in the security message tried everything but it alerts on the site safe and does not allow me more access the server https, already had this problem?

  4. Robert says:

    Hello Andre,
    While looking for a GUI for HackRF Transmitter, I found your project. I tested Remote SDR v5.02 on PC + NodeJS (Linux Ubuntu/ Windows 10) + 2x HackRF + GNURadio 3.10.2. TX transmitter and RX audio works fine except the RX spectrum refresh. It doesn’t run smoothly. You can see the step changes of the spectrum. I tested on localhost and remote client (Firefox/Chrome) – it’s the same.
    In version 4.5 you used the UDP protocol for GNURadio communication. Why did you move to TCP in 5.x?
    I suspect a problem in network communication, because compared to HDSDR, the spectrum speed is not the best.
    Robert SQ5SAG

    • F1ATB André says:

      The refresh rate is around 5 spectrums per second. It’s a compromise. If I increase it, the workload will be higher and the data rate on the network also.
      You can, if you want to suppress the smoothing function. Click on the bottom right of the spectra to modify the setting.

  5. Peter HB9PAE says:

    Hello André
    Thank you for this wonderful Software!

    I tried to install V5 on a HP-Computer (Debian 11 ), all the installation steps without problems (you made an excellent Gide). After start Radio_Server.js the program fails. I believe due to missing GPIO.
    root@hp:/remsdr# node Radio_Server.js
    throw err;
    Error: EINVAL: invalid argument, write
    at Object.writeSync (node:fs:924:3)
    at Object.writeFileSync (node:fs:2213:26)
    at exportGpio (/remsdr/node_modules/onoff/onoff.js:18:8)
    at new Gpio (/remsdr/node_modules/onoff/onoff.js:172:36)
    at Object. (/remsdr/remsdr_modules/CPU.js:26:15)
    at Module._compile (node:internal/modules/cjs/loader:1126:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
    at Module.load (node:internal/modules/cjs/loader:1004:32)
    at Function.Module._load (node:internal/modules/cjs/loader:839:12)
    at Module.require (node:internal/modules/cjs/loader:1028:19) {
    errno: -22,
    syscall: ‘write’,
    code: ‘EINVAL’
    How to disable the GPIO-Functions? (RPI4 boards are not available on the market)
    Thank you in advance
    Peter, hb9pae

    • F1ATB André says:


      All GPIO functions are located in /remsdr/remsdr_modules/CPU.js

      For the GPIO adressing the temperature:
      – remove line 26 Fan_Pin=…..
      – clean the content of the function ReadTemperature() in line 27

      Do similar actions on the GPIO ‘Oscillator TX’
      Do similar actions on SetGPIO


    • Shaman says:

      Hello. Move the Ram DDR folder to the root and everything will work for you.

  6. f8cjs says:

    Pourquoi n’est-il pas possible de faire fonctionner un Hackrf one en half-duplex?
    Pb de temps de configuration logiciel?
    Paul f8cjs

    • F1ATB André says:

      Pas encore trouvé la solution logiciel acceptable au niveau des drivers du hackRF. Maintenant en réception, mettez un equivalent RSP1 chinois si vous ne montez pas plus haut que 2GHz. C’est pas cher et vous aurez 12 bits de dynamique, c’est mieux que le hackRF.

  7. Nick says:

    Hi Andre
    Trying to locate the pages under the tools.html so I can correct the spelling gpredixt but I cannot locate it
    Also when Memories are saved where are they stored?
    I save memories on one m/c expecting them to follow to another m/c but they are not retained.

    Thanks again



  8. Nick says:

    Hi Andre
    Trying to locate the pages under the tools.html so I can correct the spelling ‘gpredixt’ but I cannot locate it
    Also when Memories are saved where are they stored?
    I save memories on one machine expecting them to follow to another machine but they are not retained.

    Thanks again


    Nick G1BVI

  9. fouyer says:

    Bonsoir André
    Config raspberry pi4 et adalm pluto vers qo100…
    rx ok
    Tx impossible a faire passer le pluto en tx , code de protection rentré .
    Merci pour votre aide.

    • F1ATB André says:

      Allez sur le site et la page dépannage et passez en revu les tests. En général avec le Pluto, c’est le câble USB, l’alimentation ou une vieille version du firmwate

  10. IU2FRL says:

    Hello Andrè, is there any chance to add other transceivers? it would be nice to use it to control an IC-705 or IC-9700 via Ethernet/IP

  11. Jörn Uwe says:

    Hello Andrè,
    hello F1atb,

    is it possible to connect the Plute with the PI4 via ETH?

    My QO-100 planing:

    Sat-DishLNBPlutoUSB2ETHLANPI4( Singnal processing Web-Server)LANRouterVPNRemote-SDR-Client

    All single parts are clear, but provide your “Singnal processing Web-Server” a TCP-IP connection via ETH onto the Pluto?

    Regards,73 DL6GU
    Jörn Uwe

  12. Sebastian says:

    Does the SDR software work with the Lime SDR mini? It has RX and TX capabilities. Thanks!

  13. Jonathan says:

    Dear Andre,
    I recently came across your impressive work on the creation of Remote SDR, which allows for the remote control of Software-Defined Radios through a web browser. I must say, I’m truly impressed by your innovation in this field.

    I’m particularly interested in exploring the possibility of automating the Remote SDR system for various applications. I believe that automation could enhance its functionality and make it even more versatile. Before I dive into this project, I wanted to reach out to you and seek your guidance on the matter.

    Could you please share some insights on whether it’s possible to automate the Remote SDR system? If it is indeed feasible, I would greatly appreciate any information or resources you could provide to help me get started. This could include documentation, code samples, or any specific requirements I should be aware of.

    Additionally, if you have any recommendations on best practices for integrating automation into the Remote SDR system, I would be eager to hear them. Your expertise in this area would be invaluable in helping me embark on this endeavor.

    Thank you for your time and consideration. I look forward to your response and the opportunity to explore the potential of automating the Remote SDR system further.

    Best regards,

    • F1ATB André says:

      I don’t know what you have in mind by automation. Don’t forget that there are some rules which impose to be sitted close to the transmitter.

      • Jonathan says:

        Hi André,

        I hope you’re doing well. I wanted to inquire about the feasibility of adding an interface to the program that would allow users to transmit WAV. I’m curious to know if it’s possible and, if so, how we can go about implementing this feature.

        Could you please provide some insights or guidance on whether this can be done, and if it’s possible, any initial steps or considerations we should be aware of? Your expertise on this matter would be greatly appreciated.
        Best Regards,

  14. Jörn Uwe says:

    Hello F1ATB, gread piece of work. I setup the Remote-SDR-Image 5.0i.. One small question: I like to shutdown the Pi by SSH command, but i can’t finde “user/password” at the doc’s. Can you help me? Thanks. 73, DL6GU

  15. F1ATB André says:

    New Issue with recent Browser on TX Audio . Proposition to solve it by R5AU

  16. Nick says:

    That works but Chrome wants to update all the time and I am finding it difficult to prevent it.
    Edge also does not now work

    • F1ATB André says:

      I have to redesign Remote SDR to take into account OS , GNURADIO, Web browser and Node.js evolutions. Huge work.


    • Sergey says:

      Nick , you need to disable all services related update process of Chrome before start browser : win autostart processes – 3 services via msconfig, Win Service – put disable related to google chrome update and probably (depends on version of Chrome) necessary to rename folder C:\Program Files (x86)\Google\Update ex.: to C:\Program Files (x86)\Google\Update_old, that all folks.

  17. don says:

    Very nice software André !
    I’ve fixed the TX issue with rolling back Chrome to 104 version (ether 32 or 64b) and following method 1 in
    With Group Policy, it is possible to disable gogole update.
    73′ F4BSP

    • F1ATB André says:

      Thank you to provide this solution before I redesigned completely and create Remote SDR V6.



      • Sergey says:

        André, thank you for nice SW one small !, i am using “dual” pluto setup with 2 x RPI4 and 2 x PlutoPlus, unfortunately all PlutoPlus has similar USB id and can`t split by SW for 2 instance. Nevetheless pls support “dual” setup in Remote SDR V6 as well !

Leave a Reply

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