AB9IL.net: ADALM-PlutoSDR

Written and curated by Philip Collier / AB9IL
HOME Software Defined Radio WiFi Antennas Air and Space Radio Linux or Windows Digital Audio Liberation Tech Video Gallery Photo Gallery

Live Internet SDR List Radio Caroline BBC Radio 4 LW


For a while now, the top hardware for engineering students, experimenters, and hobbyists to get hands-on experience making and breaking software defined radios have been the HackRF and LimeSDR. Now they have company, called the ADALM-PLUTO SDR. Analog Devices calls it an "active learning module" enabling in depth learning of many aspects of radio communications - basic science through advanced hardware and software engineering. Both devices run at low electrical power, but there is no upper limit on ingenuity that they can spawn. Information on the HackRF is abundant on the internet. Below, you will find information on the PlutoSDR and links to more in depth data and applications. Find other PlutoSDR users in forums on PlutoSDR.com, the BATV Forum, and RTL-SDR.com.

Airband Radio on the RTL-SDR
How to maximize RTL-SDR performance for aeronautical comms.

PlutoSDR Hardware

The PlutoSDR is, in a way, similar to other high end RTL2832 radios, but there is more to this device.. To call it a super RTL-SDR would sell it short, as it is capable of full duplex transceiving and tuning vastly wider spectrum. It can operate with as much as a full 20 MHz bandwidth, putting out a stream of 12 bit quadrature data. At its heart is the AD9363 or AD9364 System on a Chip. Transmit output power is about 7 dBm.

Tuning is accomplished in a manner familiar to Softrock and RTL-SDR users: a tunable quadrature oscillator mixing RF in a quadrature sampling detector. Output from the QSD is fed to a dual ADC capable of 61.4 megasamples per second. For computers using USB 2.0, expect good performance up to about 3 MSPS and lost samples at higher rates. For better tuning accuracy and stability, the radio really needs a better clock: a TCXO or GPSDO. Perhaps there will eventually be some mods and hacks for this.

Regarding dynamic range and weak signal performance, the PlutoSDR is quite sensitive but prone to RF intermodulation and desensing in strong signal environments. Use a good RF filter for clean, hassle free performance. For details, see this series of 9A4QV Youtube Videos.

There are currently no direct sampling mods for the PlutoSDR. Expect them eventually. It would be nice to have a full DC to 30 MHz capability, though the ability to have a 3, 4, or up to 20 MHz wide IQ stream of HF data would be a welcome added capability. Being a transceiver, a direct sampling mod will require more care than for RTL-SDRs.

PlutoSDR Tweaks and Hacks

First among software mods for the PlutoSDR is the one broadening the operating range from 70 MHz through 6 GHz. Prototypes and early production versions of the SDR used an AD9364 transceiver chip, operating across the full tuning range. Later production runs switched to the AD9363, which was limited by software to the official 325 MHz to 3.8 GHz range. By changing the software, the original limits may be restored, though actual performance may not be as good on radios using the AD9363. Making the change requires making a serial connection to the radio and issuing a set of commands.

The username is root and the password is analog. If the radio contains the AD9363, the commands "fw_printenv attr_name" and "fw_printenv attr_val" both return the error message "not defined" as shown below. Note that the pound sign "#" means "you are the root user":

# fw_printenv attr_name
Error: "attr_name" not defined
# fw_printenv attr_val
Error: "attr_val" not defined

Change the radio's internal configuration to operate as an AD9364 equipped device by setting environmental variables to "compatible" and "ad9364" as shown below:

# fw_setenv attr_name compatible
# fw_setenv attr_val “ad9364”
# pluto_reboot reset

Check the new configuration by logging in again and sending a query for the environmental variables:

Welcome to Pluto
pluto login: root
Password:
# fw_printenv attr_name
attr_name=compatible
# fw_printenv attr_val
attr_val=ad9364
#

If all is well, send a logout command, disconnect, and enjoy your new fully capable PlutoSDR.

GUI Software for PlutoSDR

User interfaces are small in number due to the PlutoSDR being so new. Expect wider inclusion in the popular SDR interfaces over time. GNU Radio (Linux) and SDR# (Windows) are the main apps to look at for using PlutoSDR devices. Mac users should be able to work out support through Windows or Linux virtualization methods. Below are instructions for Debian / Ubuntu based Linux systems, adaptable to Arch, Slackware, and other Linux flavors.

CubicSDR and other applications using the SoapySDR library can compile support from code on Github. Be sure to install the dependencies libiio, libad9361-iio, and SoapySDR first. Then build the SoapyPlutoSDR plugin:

cd ~
git clone https://github.com/jocover/SoapyPlutoSDR
mkdir SoapyPlutoSDR/build
cd SoapyPlutoSDR/build
cmake ..
make
sudo make install
sudo ldconfig

There is a method of getting Gqrx to work with PlutoSDR hardware for users who have installed Gqrx from the special PPA maintained by Alexandru Csete. John Hagensieker posted a nice tutorial on his blog. The heart of his tutorial is getting dependencies, Gqrx, and gr-iio from PPAs, then compiling gr-osmosdr-gqrx from Csete's git repository. It is simple and works fine.

For using Gqrx to operate a PlutoSDR, follow these steps to get dependencies and build it from source code. Remember that source and prepackaged installations don't coexist well, so do this in a virtual machine or one where Gqrx and its dependencies have been cleanly purged. Begin the process by installing (or reinstalling) tools for handling source code and the prerequisites for building Gqrx:

sudo apt update
sudo apt install autoconf git build-essential bison cmake flex qtbase5-dev qt5-default qtscript5-dev libssl-dev qttools5-dev qttools5-dev-tools qtmultimedia5-dev libaio-dev libasound2 libavahi-client-dev libcdk5-dev libqt5svg5-dev libqt5webkit5-dev libsdl2-dev libxml2-dev libxmu-dev libxi-dev freeglut3-dev libasound2-dev libjack-jackd2-dev libserialport-dev libusb-1.0-0-dev libxrandr-dev libqt5xmlpatterns5-dev libqt5xmlpatterns5 libqt5xmlpatterns5-private-dev pulseaudio swig3.0

On some, but not all systems, it may be necessary to get a fresh version of libserialport:

cd~
git clone git://sigrok.org/libserialport
pushd libserialport
git checkout libserialport-0.1.1
./autogen.sh
./configure
make
sudo make install
sudo ldconfig

Compile and install libiio:

cd ~
git clone https://github.com/analogdevicesinc/libiio
mkdir libiio/build
cd libiio/build
cmake ..
make -j
sudo make install
sudo ldconfig

Compile and install support for the Analog Devices Systems on Chips:

cd ~
git clone https://github.com/analogdevicesinc/libad9361-iio
mkdir libad9361-iio/build
cd libad9361-iio/build
cmake ..
make -j
sudo make install
sudo ldconfig

Get gr-iio:

cd ~
git clone https://github.com/analogdevicesinc/gr-iio
cd gr-iio
mv include/gnuradio/iio include/iio
rm -r include/gnuradio
sed -i 's/gnuradio\/iio/iio/g' CMakeLists.txt
sed -i 's/gnuradio\/iio/iio/g' swig/*
sed -i 's/gnuradio\/iio/iio/g' include/iio/*
sed -i 's/gnuradio\/iio/iio/g' lib/*
sed -i 's/gnuradio\/iio/iio/g' python/iio/*
sed -i 's/from\ gnuradio\ import\ iio/import\ iio/g' grc/iio_pluto_sink.xml
sed -i 's/from\ gnuradio\ import\ iio/import\ iio/g' grc/iio_pluto_source.xml
mkdir build
cd build
cmake ..
make -j
sudo make install
sudo ldconfig

Compile and install GNU Radio OsmoSDR Gqrx support:

cd~
git clone https://github.com/csete/gr-osmosdr-gqrx
cd gr-osmosdr-gqrx/
git checkout plutosdr
mkdir build
cd build/
cmake ../
make
sudo make install
sudo ldconfig

After the above dependencies are installed, install the experimental branch of Gqrx:

cd~
git clone https://github.com/csete/gqrx
cd gqrx.git
mkdir build
cd build
cmake ..
make
sudo make install

If the "make install" step completes without errors, Gqrx should be ready to run.

PlutoSDR Applications

There are some interesting uses for the PlutoSDR. One of the more interesting applications is in a coherent, multichannel, software beam forming system. Another is G4GUO's PLUTO-Express digital amateur television project.

If you have installed the software to use the PlutoSDR on a Linux system, then it is just a little bit more work to compile and install Dupmp1090 for following air traffic. For the pretty maps, multiple aggregator feeds, or multilateration, a bit more work is necessary. However, the commands below will result in a working basic dump1090 binary with config files for the PlutoSDR.:

cd~
git clone https://github.com/PlutoSDR/dump1090
cd dump1090
make

This device works fine for more ordinary uses, and does very well indeed on VHF through at least L band without the need for a receive preamplifier. For transmitting, yes, consider amplification to achieve usable power levels. PlutoSDR devices are sensitive enough to receive L band GPS, Wxsats, Iridium, and INMARSAT downlinks from a good antenna. It certainly seems to make a fune ADS-B receiver. With the AD9364 software mod, the PlutoSDR should work fine above 3.8 GHz, though specifications are not guaranteed. Try it and find what works!




© 2005 - 2024 AB9IL.net, All Rights Reserved.
About Philip Collier / AB9IL, Commentaries and Op-Eds, Contact, Privacy Policy and Affiliate Disclosure, XML Sitemap.

This website is reader-supported. As an Amazon affiliate, I earn from qualifying purchases.