.. _pluto: 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 the field of wireless communication. The PlutoSDR is popular among students, educators, and hobbyists due to its versatility and ease of use. The PlutoSDR is based on the AD9363 transceiver chip, which supports both transmission and reception of signals across a wide frequency range. The device is supported by a robust open-source ecosystem, making it ideal for hands-on learning and rapid prototyping. Supported models ---------------- - **ADALM-PLUTO:** The standard model with a frequency range of 325 MHz to 3.8 GHz and a bandwidth of up to 20 MHz. - **Modified ADALM-PLUTO:** Some users modify their PlutoSDR to extend the frequency range to approximately 70 MHz to 6 GHz by applying firmware patches with unqualified RF performance. Key features ------------ - **Frequency Range:** 325 MHz to 3.8 GHz (standard), expandable with modifications. - **Bandwidth:** Up to 20 MHz, can be increased to 56 MHz with firmware modifications. - **Connectivity:** USB 2.0 interface 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 and signal processing. Hackability ------------ - **Frequency Range and Bandwidth:** The default frequency range of 325 MHz to 3.8 GHz can be expanded to approximately 70 MHz to 6 GHz, and the bandwidth can be increased from 20 MHz to 56 MHz by modifying the device's firmware. - **2x2 MIMO:** On Rev C models, users can unlock 2x2 MIMO (Multiple Input Multiple Output) functionality by wiring UFL to SMA connectors to the device's PCB, effectively turning the device into a dual-channel SDR. Limitations ----------- - Bandwidth is limited to 20 MHz by default, but can be increased to 56 MHz with modifications, which may affect stability. - USB 2.0 connectivity might limit data transfer rates compared to USB 3.0 or Ethernet-based SDRs. Set up instructions (Linux) --------------------------- 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. Ensure ``libiio`` is installed at the system level. On most Ubuntu installations this is already present. If not: .. code-block:: bash sudo apt install libiio-dev libiio-utils libiio0 .. note:: PlutoSDR devices are discoverable over both USB and network (mDNS). Network discovery uses Avahi — if ``avahi-daemon`` is not running, network discovery will be skipped but USB discovery still works. 2. Install a ``udev`` rule to allow non-root device access: For most users: .. code-block:: bash sudo udevadm control --reload sudo udevadm trigger For **Radioconda** users, create a symlink from your conda environment instead: .. code-block:: bash sudo ln -s $CONDA_PREFIX/lib/udev/rules.d/90-libiio.rules /etc/udev/rules.d/90-radioconda-libiio.rules sudo udevadm control --reload sudo udevadm trigger Once you can communicate with the hardware, you may want to perform the post-install steps detailed on the `PlutoSDR Documentation `_. 3. (Optional) Building ``libiio`` or ``libad9361-iio`` from source: This step is only required if you need a version not available via ``apt``. First install build dependencies: .. code-block:: bash 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-dev .. code-block:: bash # Build libiio from source cd ~ git clone --branch v0.23 https://github.com/analogdevicesinc/libiio.git cd libiio mkdir -p build cd build cmake -DPYTHON_BINDINGS=ON .. make -j"$(nproc)" sudo make install sudo ldconfig .. code-block:: bash # Build libad9361-iio from source cd ~ git clone https://github.com/analogdevicesinc/libad9361-iio.git cd libad9361-iio mkdir -p build cd build cmake .. make -j"$(nproc)" sudo make install Further information ------------------- - `PlutoSDR Documentation `_ - `PlutoSDR Setup with Radioconda `_