Adalm Pluto ? Don’t think so


            

I have a love-hate relationship with Adalm Pluto. I bought it from Mouser in 2020 when it was roughly 100 euros (now it is almost double that price !) and I never managed to do anything useful with it.

Probably I am an idiot because by “useful” I do not mean some NASA-level project but rather a simple educational endeavour that would help me gain more insight into how SDRs work. Well, I would have been quote happy to manage to install those damn libraries on Mac ! Well, I know there is nobody to blame for this than me. A series of hurdles prevent me from discovering its secrets. I know it was heavily used in QO-100 setups and such but I was never interested in that. As years went by I began to think that this is almost a failed project: hardware-wise the oscillator sucks (almost each QO-100 project had it removed with a better TCXO) and the experience I had with the abstraction layer was borderline abysmal: libiio installation on Windows is flawed, on Mac is almost impossible to install and definitely a nightmare to build without some heavy wizardry and Raspberry simply is not powerful enough. I was left with only one option, to use a Linux system.

So my Pluto was kept unused for years and gathered dust. Today I decided to give it another go and try at least to connect it, write some python stuff and see how it behaves.

For starters, the installation of Python iio libraries on Linux was an adventure. Least to say. Old and obsolete in most parts (last updated documentation is from 2022). Even the only official tutorial is from 2019 !! By default, the tutorial at this link points out on using version 0.23. Which is wrong, because nothing works unless pylibiio is at version 0.25. So I had to manually remove all links. Next, installing pyadi-libiio is also a challenge. This:

pip3 install -r requirements.txt

just breaks everything up. Even if I take the precaution to use 0.25 branch

git clone –branch v0.25 https://github.com/analogdevicesinc/libiio.git

running the requirements check brings back the dreaded 0.23 version and nothing works anymore. Uninstall everything again, manually removing all dependencies, uninstalling pylibiio and pyadi-iio. Finally, checking the versions:

(pluto_test) tom@tom-ThinkPad-T560:~/programare/Python/pluto$ pip list
Package Version
———— ——-
bcrypt 5.0.0
cffi 2.0.0
cryptography 46.0.3
invoke 2.2.1
numpy 2.3.4
paramiko 4.0.0
pip 25.3
pyadi-iio 0.0.19
pycparser 2.23
pylibiio 0.25
PyNaCl 1.6.0
setuptools 80.9.0

Then, version check:

tom@tom-ThinkPad-T560:~$ iio_info -V
iio_info version: 0.25 (git tag:b6028fde)
Libiio version: 0.25 (git tag: b6028fd) backends: local xml ip usb

And the moment of truth:

tom@tom-ThinkPad-T560:~$ source ~/programare/Python/pluto_test/bin/activate
(pluto_test) tom@tom-ThinkPad-T560:~$ python3
Python 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import iio
>>> print(iio.version)
(0, 25, ‘b6028fd’)
>>>

Of course, that has to be done in a virtual environment because otherwise Python chokes on it…

However, checking Pluto’s environment variables

tom@tom-ThinkPad-T560:~$ ssh root@192.168.2.1

password being analog should return:

# fw_printenv attr_name
attr_name=compatible
# fw_printenv attr_val
attr_val=ad9364

So I had to carefully do the frequency hack because nothing works beneath that 300-ish MHz that the platform is limited to.

[some] Conclusions

Probably I am not on par with the expected skills somebody has to prove in order to use this piece of equipment but I still believe this is a flawed project from educational point of view. Unless the “educational” part of the entire experience has to do with tweaking software and troubleshooting installation issues (which might be interesting per se but not in this context). MY expectations were hugely different: I thought that this device was designed for experimentation and exploration – in a fun way – of the SDR universe. Well – far from it. It is an exercise in frustration. At least for me, as tried in the context of libiio and Python. I was expecting a quick plug-and-play experience and immediate dive into SDR stuff. I spent almost half a day troubleshooting iio library installation, I dealt with various Python whims and caprices. So no, DEFINITELY not for SDR-related education. What I should try, though, is to see if MATLAB handles it better. Mathworks claims that their Communications Toolbox™ Support Package for Analog Devices ADALM-Pluto Radio lets you use MATLAB and Simulink to design and verify practical wireless systems. Well, we’ll see. And that only if I consider renewing my MATLAB license. 😉

Otherwise sorry for the rant, Analog Devices. This is my 2c.

73

Categories: Equipment, Ham Radio Tags: , ,

Arduino serial data transfer with C structs

While doing some tests with a 9-axis sensor I wnated to read all the values and send them all via an Arduino (or any other μ-controller) serial interface. You generate that data at point “A”, the sensor, and you want that data to arrive at point “B” with minimal delay, for example a computer software […]

Alternative to ssh-copy-id on windows

Lately I am doing a lot of development on Raspberry Pi systems and I use Visual Studio Code Remote Development. This is a neat feature because it allows me to connect from the same platform to multiple systems at once and work in parallel if I need. Visual Studio Code includes a full featured integrated […]

Comments are closed.