ADALM-PLUTO (SDR rx/tx) notes

Uit Projectgroep .540
Ga naar: navigatie, zoeken


The PG540 group is experimenting continuously. Every 2 weeks our groupmeeting is overloaded with people bringing in their (usually quite experimental) setups and gear. SDR has been on the agenda for along time - the first SDR notes on the PG540 group wiki date from 2014.

In the Summer of 2018, the ADALM-PLUTO SDR came to our attention. Rene PA1RKT decided to buy one, followed by others in the Autumn of 2018. This wiki page reflects our experiences, and just that - so it is not a review nor an objective performance measure of the Pluto. We just experiment with it and write down what we find.

The ADALM-PLUTO is an SDR for RX and TX with a broad frequency range. It is slowly being backed by operating systems and applications, the most notable being:

  • GNU Radio (on Linux, Windows) - a multi-purpose, Python based signal processing platform with many ready-built modules
  • DATV-Express (DATV transmitter under Windows), covers DVB-S, DVB-S2 and even DVB-T. Works nice with vMix videomixer software
  • SDR Angel - a multi-purpose signal processor tool for modulating and demodulating a range of signals, including analog ATV (Linux,, Windows)
  • SDR Console (very nice modular SDR receiving software under Windows) also has a nice transmitting section, mainly for phone and some rudimentary CW
  • There are some nice, smaller specific tools that might work woth the ADALM-PLUTO (like HackTV?), but as long as they are not in this list I do not have any significant experience nor luck with them ;-)
  • Evariste, F5OEO, has produced very nice alternative firmware for the Pluto. It basically implements transmitting software for (D)ATV, SSTV, SSB transmissions - with a streaming server on board so you can stream the actual content to it from various applications under Linux or Windows. For DATV experiments, this currently (January 2020) is my favorite setup. See below for more detailed info.

Connecting and detecting / GNU Radio

Windows: The original ADALM-PLUTO website covers all aspects of connecting and detecting the ADALM-PLUTO, especially the things to check when using it on a Windows computer. The Device Manager is your friend on Windows.

Under Linux, my main objective is to experiment with the PLUTO and GNU Radio. This can be a bit cumbersome, as at the time of my first experiments (summer 2018) GNU Radio did not support the ADALM-PLUTO block 'out of the box' - so there is/was no binary support. I had to build the complete GNU Radio suite from the source, building and integrating the PlutoSDR block along the way. I decided to go the [Pybombs] route for this. This took a lot of time and frankly, this is not a very transparent process to me. I managed, though, BUT I can at this moment not reproduce how I got there. I hope there will be out-of-the-box support in ordinary binary distributions soon.

If the GNU Radio software has been installed using Pybombs, there is a specific method to start the software. First, you must cd to the installed PyBombs environment (this is the 'gr-sdrplay' directory in my user directory), then set the environment for the Python scripts that GNU Radio relies on, and then start gnuradio-companion.

cd gr-sdrplay



In GNU Radio, you now have PlutoSDR source and sink blocks to use for receiving and transmitting respectively. They are filed under "Industrial I/O" in the GNU Radio comapnion UI.....

Transmitting experiments

Warning: the ADALM-PLUTO is not RF sealed and is also very sensitive regarding electric currents and shocks. If any common mantle currents or other electric discrepancies exist, the ADALM-PLUTO might not even show up in your system and appear dead. In this case, disconnect all other wires, leaving only the ADALM-PLUTO, even the antenna terminals not connected and see if the ADALM-PLUTO resurfaces.

I (PA1RKT) prefer to experiment with the Pluto in the 70cm and 23cm amateur bands, preferably on our PG540 'channel 2' frequency of 432.540 MHz (see Huisfrequenties) for NFM and SSB. For WFM I use 1277.500MHz and for DATV I regularly use the inputs of the PI6HLM repeater that is close: 436MHz or 1252.600MHz for DVB-S.

Using GNU Radio, it is not very hard to find an example of a NBFM transmitter/receiver. Just replace the source (in case of receiver) and/or the sink (in the case of transmitter) with the PlutoSDR block. Its use is quite straightforward.

For those who like to produce some real nice 'phone' signal (SSB, AM, FM), the recent versions of SDR Console contain a very nice transmitting feature. It works quite smooth and clean. Also SDR Angel works out of the box, but its user interface really has some quirks (or I just do not understand the way the author's brain works :-).

For DATV use, I know of some options i.e. using VLC and some extra Java based applications, or (on Linux) use ffmpeg directly. However, the easiest way to get a DATV signal in the air (to me) is the Express DVB-S Transmitter which can produce DVB-S, DVB-S2 and even DVB-T signals. If you use this together with the free version of vMix for video/audio mixing you have quite a comfortable interface for live DATV broadcasts.

The PLUTO pushes out a few milliwatts (they say it is max. +6dBm, but I have no ways to measure this accurately - I think it is is less than +6dBm). The signal sounds clean. However, when trying to use it as a real transmitter (or even transceiver), some problems (features :-)) have to be overcome.

The local oscillator (LO) is always on

The Pluto has 2 independent LO's: one for receive and one for transmit. That means you can use it in full duplex mode. However, when you stop transmitting, the end-stage of the Pluto will stop working, but the LO-TX will keep oscillating. This can be very annoying if e.g. you want to make a simplex QSO - the receiver will experience interference from the TX-LO. The only way I have found to circumvent this is to set the LO-TX to some other frequency when not transmitting. There are a few drawbacks to this approach: the Pluto will break-in really ugly as it is re-adjusting to the right frequency when you start transmitting. Not really smooth. Furthermore, if you use some amplifier line after the Pluto (like my 'repeater experiment' see another paragraph in this Wiki) and you choose a 'dummy' frequency within the band that the amplifier(s) work in, you might damage the amplifiers in the long run as they will run continuously. I damaged some broadband 'Chinese' amplifiers/LNA's with this approach. Make sure the dummy frequency is far out of range of your amplifying chain of components. I prefer to make it a very high frequency, so there are no harmonics in the way. It's even better if you apply a bandpassfilter between your Pluto and the first amplifying stage. This will prevent the out-of-band LO-TX signal from reaching your amplifier(s) even more while receiving.

Note: there seems to be a trick to switch off the LO while receiving. Some software (i.e. SDRConsole) manages to switch off the LO. Something to look into...

Filtering the signal

While being an extraordinary piece of (affordable) engineering, a few corners have been cut - I think to make the Pluto affordable for folks like us :-) One of them is that the Pluto has no RF shielding. It is very sensitive to overloading and external interference. This makes experimenting with amplifying stages etc. a bit messy. I have taken the route to be OK with it as I am experimenting now, but if you want to use the Pluto in a 'real' operating environment, like a HAM shack, and for real QSO's or even more serious stuff ((D)ATV seems to be a good candidate, but the 540 group still has to find that out (december 2018)) - shield your amplifiers, and filter filter filter your signal.

That leads us to the subject of filtering the signal.

The signals that the PLUTO produces are not real sinuses. They are a bit blocky and therefore do have a bit phase noise and harmonics. Directly amplifying this signal leads to a messy signal. I managed to destroy our DVB-C signal in the living room quite easy with just a few Watts of unfiltered signal. Putting a band filter in between the PLUTO and the amplifier stage(s) greatly improves signal purity and the efficiency of the amplifier. In some cases, the bandfilter makes a big difference - i.e. no signal at all when not filtered.

Ideally, you want a bandpass filter after each amplifier stage, but that can be quite costly :-)

My guess is that there might be structural solutions to this, but I have proven to be too lazy to figure them out yet. I just try to circumvent them. Just be aware. Caveat emptor.

Earthing / shielding sensitivitiy - the 'pfiew' sound

I found out very early just how sensitive the ADALM-PLUTO is for ripples and other discontinuities in its 'earthing' path - the first night of my experiments, there was a big hazard and sometimes when the lightning stroke, I heard a loud popping 'pfieuw' sound from my speakers and the PLUTO was knock-out, only to be recovered by pulling and re-plugging the USB connection. But also without lightning, the PLUTO proves to be quite sensitive - in very many application scenarios, there is some difference in earthing/grounding between the 'RF' side (usually fed with external DC power) and the 'computer side' (usually some switched USB signal). For the PLUTO, this can be very disturbing. I try to setup the ground before I start the PLUTO and not change it during the experiment. Even connecting a new sound source to my mixer can cause problems....

F5OEO alternative firmware

Evariste, F5OEO, has compiled very good firmware as an alternative firmware upgrade to the Pluto. It enhances the functionality of the Pluto itself to become a basic transmitter, with the transmitting software running in the firmware itself, so the Pluto transforms into some kind of semi-standalone transmitter (and maybe even a transceiver in later versions :-).

I must say semi-standalone because you still need a computer to provide useful content to the Pluto. For DATV I use vMix (on Windows only) or OBS (under Windows or Linux). These applications can provide the Pluto with a stream that then is modulated and transmitted. With the parameters of the stream you can control the transmitter of the Pluto - frequency, the modulation to use, bandwidth, other characteristics are all controlled by parameters in the stream.

Info on the firmware itself, and the configuration of the stream with all parameters, is on the Pluto itself. Just point your webbrowser to the ip address of your Pluto. Usually this is [1]

73 Rene PA1RKT