M
muq
a68a325cb4
All checks were successful
Build Sphinx Docs Set / Build Docs (pull_request) Successful in 6m4s
Build Project / Build Project (3.10) (pull_request) Successful in 11m52s
Build Project / Build Project (3.11) (pull_request) Successful in 11m50s
Build Project / Build Project (3.12) (pull_request) Successful in 11m51s
Test with tox / Test with tox (3.11) (pull_request) Successful in 12m10s
Test with tox / Test with tox (3.12) (pull_request) Successful in 6m22s
Test with tox / Test with tox (3.10) (pull_request) Successful in 12m28s
Fix Sphinx build errors: - Add missing blank lines in rtlsdr.rst code-block directives - Rename duplicate label in examples/sdr/index.rst - Fix field list indentation in usrp.py and hackrf.py docstrings Update SDR setup guides (all guides now cover both pip/venv and Radioconda): - rtlsdr: switch to rtl-sdr-blog fork (required for rtlsdr_set_dithering symbol), add pyrtlsdr==0.3.0 and setuptools==69.5.1 version pinning, preserve Radioconda blacklist and udev symlink paths alongside new steps - pluto: simplify primary path to apt install libiio, add Avahi network discovery note, preserve Radioconda udev symlink as alternative - hackrf: note out-of-box support, preserve Radioconda udev symlink - blade: note no extra Python packages needed, preserve Radioconda udev symlinks - usrp: add build-from-source path for pip/venv users with cmake flags, Python binding copy step, and version mismatch warning; keep conda install as primary option; preserve Radioconda udev symlink - thinkrf: add lib2to3 install step, Python <=3.12 restriction, and full Python 3 patching command to replace internal script reference Update copyright year to 2026 in conf.py
124 lines
4.5 KiB
ReStructuredText
124 lines
4.5 KiB
ReStructuredText
.. _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 <https://wiki.analog.com/university/tools/pluto>`_.
|
|
|
|
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 <https://wiki.analog.com/university/tools/pluto>`_
|
|
- `PlutoSDR Setup with Radioconda <https://github.com/radioconda/radioconda-installer?tab=readme-ov-file#iio-pluto-sdr>`_
|