PlutoSDR
The ADALM-PLUTO (PlutoSDR) is a portable and affordable software-defined radio developed by Analog Devices. It is designed for learning, experimenting, and prototyping in wireless communication. The PlutoSDR is based on the AD9363 transceiver chip, which supports both transmission and reception of signals across a wide frequency range.
Supported Models
Section titled “Supported Models”| Model | Frequency Range | Bandwidth |
|---|---|---|
| ADALM-PLUTO (standard) | 325 MHz to 3.8 GHz | Up to 20 MHz |
| Modified ADALM-PLUTO | ~70 MHz to 6 GHz (firmware patched) | Up to 56 MHz (modified) |
Key Features
Section titled “Key Features”- Frequency Range: 325 MHz to 3.8 GHz (standard), expandable with modifications
- Bandwidth: Up to 20 MHz, up to 56 MHz with firmware modifications
- Interface: USB 2.0 with support for power, data, and firmware updates
- Software Support: Compatible with GNU Radio, MATLAB, Simulink, and other SDR frameworks
- Onboard Processing: Integrated ARM Cortex-A9 processor for custom applications
Hackability
Section titled “Hackability”- Frequency & Bandwidth: The default range can be expanded to ~70 MHz to 6 GHz and bandwidth increased to 56 MHz via firmware modification (may affect stability)
- 2×2 MIMO: On Rev C models, 2×2 MIMO can be unlocked by wiring UFL to SMA connectors to the PCB
Limitations
Section titled “Limitations”- Bandwidth limited to 20 MHz by default (56 MHz with modification, may affect stability)
- USB 2.0 connectivity may limit data transfer rates compared to USB 3.0 or Ethernet-based SDRs
Linux Setup Instructions
Section titled “Linux Setup Instructions”The PlutoSDR is supported out of the box after installing RIA Toolkit OSS. The required Python package (pyadi-iio) is included in the toolkit’s dependencies.
1. Install libiio
Section titled “1. Install libiio”On most Ubuntu installations this is already present. If not:
sudo apt install libiio-dev libiio-utils libiio02. Install udev Rules
Section titled “2. Install udev Rules”For most users:
sudo udevadm control --reloadsudo udevadm triggerFor Radioconda users, create a symlink from your conda environment:
sudo ln -s $CONDA_PREFIX/lib/udev/rules.d/90-libiio.rules /etc/udev/rules.d/90-radioconda-libiio.rulessudo udevadm control --reloadsudo udevadm trigger3. (Optional) Build libiio or libad9361-iio from Source
Section titled “3. (Optional) Build libiio or libad9361-iio from Source”Only required if you need a version not available via apt. First install build dependencies:
sudo apt-get install -y build-essential git libxml2-dev bison flex libcdk5-dev cmake \ libusb-1.0-0-dev libavahi-client-dev libavahi-common-dev libaio-devBuild libiio from source:
cd ~git clone --branch v0.23 https://github.com/analogdevicesinc/libiio.gitcd libiiomkdir -p build && cd buildcmake -DPYTHON_BINDINGS=ON ..make -j"$(nproc)"sudo make installsudo ldconfigBuild libad9361-iio from source:
cd ~git clone https://github.com/analogdevicesinc/libad9361-iio.gitcd libad9361-iiomkdir -p build && cd buildcmake ..make -j"$(nproc)"sudo make install