Product Introduction

PlutoSky R2 is an upgraded high-performance software-defined radio (SDR) development platform launched by OpenSourceSDRLab, based on the classic ADALM-Pluto architecture. It adopts hardware main chip upgrade, abundant peripheral resources expansion, onboard hardware phase-locked loop and PL-side Ethernet optimization. It supports 70MHz-6GHz frequency range by firmware hack, 200K~20MHz bandwidth and full-duplex transceiver.

The core hardware adopts Xilinx Zynq XC7Z020-2CLG484I SoC, integrating dual-core ARM Cortex-A9 Processor System (PS) and FPGA Programmable Logic (PL). The RF front-end is equipped with AD9363 or AD 9361 RFIC, please choose the correct bundle in the product link.

Production Links: PlutoSky R2

修改图片内容.png

PlutoSky R2 Hardware Upgrade & Highlight Spec

Main hardware updates for the PlutoSky R2

1.The main chip has been replaced with XC7Z020-2CLG484I (formerly XC7Z020-2CLG400I), which has more resources. XC7Z020-2CLG484 has the same Z-7020 core resources, but offers much more usable external I/O.

2.Added a 10MHz reference clock, which can be used to lock the onboard crystal oscillator.

3.Short circuit with 2.54mm jumper cap, you can choose to use an external 40MHz clock (note that the device needs to have onboard Flash firmware and the jumper cap should be operated to short circuit the device when it is powered off).

Fig. 1  Onboard flash firmware boot mode using the jumper cap can be connected in this way to directly use an external 40M clock input

As shown in Figure 2, users can also use GPIO to control whether to use an external 40MHz clock or an internal onboard 40MHz clock (note that the device needs to be Tezuka firmware that requires an SD card, and the device needs to perform jumper cap short circuiting operation when powered off).

Fig. 2 SD card firmware boot mode using GPIO to control whether to use an external 40MHz clock or an internal onboard 40MHz clock

4.The network port has been added to the PL end (FPGA programmable logic program logic) instead of the traditional PS end (processor system PS). Customers can directly use logical resources for data transmission without the need for ARM cores to achieve data transparency.

Highlight Features

1. Two sets of firmware are pre installed on the board at the factory. The SD card firmware defaults to burning Tezuka firmware, which is compatible with PlutoSky R2 and will be continuously updated with new features; The onboard Flash firmware defaults to flashing the original ADALM PlutoSDR modified firmware.
2. Onboard hardware phase-locked loop, calibrated with a 10MHz reference to onboard 40M crystal oscillator. However, this product is a phase-locked loop implemented through hardware, and its performance is superior to software phase-locked loops of other similar products.
3. The board supports external GPIO expansion, and expansion daughter cards will be introduced in the future.
4. The product can be optionally equipped with an amplifier at the shooting end. Please distinguish between SKUs.

Hardware Specifications:

Without PA

With PA

SKU Code

PLUTOSKY-R2-9361-NOPA

PLUTOSKY-R2-9363-NOPA

PLUTOSKY-R2-9361-PA

PLUTOSKY-R2-9363-PA

RFIC

AD9361BBCZ

AD9363BBCZ

AD9361BBCZ

AD9363BBCZ

Processor

XC7Z020-2CLG484I

LO frequency

70M-6GHz

70M-6GHz(hack)

70M-6GHz

70M-6GHz(hack)

Bandwith

200K-56MHz

200K-20MHz

200K-56MHz

200K-20MHz

Power Amplifier

No

10dB gain, Bypassable

RF Interface

2T2R(Full-duplex)

DDR3

1GB

FLASH

32MB

1000/100/10M ETH

One (PL)

UART+JTAG

One(Type-C)

USB2.0

One(Type-C)

SD Card slot

One(PS Boot)

Extend IO

1.8V IO*19

RFIC CLOCK

IPEX/VCTCXO(Default VCTCXO)

Size

CNC:96x64mm

Power supply mode

USB/JTAG/Pin header

Functional Framework Description

The core architecture adopts Xilinx Zynq SoC, divided into PS (Processor System) and PL (Programmable Logic):

PS part: Equipped with 1GB DDR3 and 32MB SPI Flash, matches SD card boot circuit, UART/JTAG, USB 2.0 and power management modules.

PL part: Integrates Gigabit Ethernet, LVDS, Balun radio frequency matching circuit, and peripheral control circuits.

RF part: Matches dual-transmit dual-receive RF channels, optional PA modules, 10MHz reference clock, VCTCXO and external clock input interfaces.

Expansion part: Reserved external GPIO interfaces for secondary development and expansion daughter boards.

RF Performance Test Data

The table below shows the maximum transmit power (dBm) of 1MHz single-tone signal at different local oscillator frequencies. Comparison between PlutoSky R2 and standard ADALM-PLUTO (with/without PA, PA bypass state):

Functional framework

14c024721eceadc91c62fa7a060cf9d2

AD936x Series Chips

Chip Type

Frequency Range

Maximum Bandwidth

Byte-Wide

Common versions of PlutoSDR

AD9361

70 MHz- 6.0 GHz

56 MHz

12-bit

High-end version (rare)

AD9363

325MHz-3.8GHz

20 MHz

12-bit

Standard version (the most common one)

AD9364

70MHz-6.0GHz

20 MHz

12-bit

Mid-range version

The Method Of Connecting To The Computer

Connection Type

Advantage

Disadvantage

USB Device

Plug-and-play, no additional hardware required

Bandwidth-limited (actual speed is 20–30 MB/s)

Network Connection

It can be remotely controlled via devices such as IIO-Oscilloscope.

Depends on the RNDIS driver support of the operating system

List of Required Drivers and Software Dependencies

Module

Explain

Installation Method

Operating System Driver

Windows requires the RNDIS/CDC driver provided by ADI to be installed.

For Linux/macOS, additional drivers are usually not necessary.

Download from the ADI website

libiio

Cross-platform IIO (Industrial I/O) library, used for communicating with Pluto

Through the package manager or source code compilation

IIO-Scope/IIO-Oscilloscope

Graphical debugging tool

ADI offers pre-compiled versions

IIO-Scope/IIO-Oscilloscope

Graphical debugging tool

ADI offers pre-compiled versions

Startup Method and Firmware Architecture Details

The firmware included in PlutoSky R2 are the following.

Firmware type

Storage Location

Content

Effect

FSBL

Built-in SPI Flash

The initial boot program provided by Xilinx

Initialize PS and load the next stage

U-Boot + Linux Kernel + RootFS

Built-in SPI Flash (default) or microSD card

Complete embedded Linux system

Run the IIO service, network stack, and user applications

FPGA Bitstream

Packaged together with the Linux image (usually in /lib/firmware)

Configure the PL logic to implement the AD936x interface

Enable the RF data path

Key point: The FPGA bitstream is not an independent startup item. Instead, it is loaded into the PL at runtime by the Linux kernel through the devicetree and firmware_class mechanism.

Built-in Flash firmware vs SD card firmware

Project

Built-in SPI Flash firmware

MicroSD card firmware

Storage Medium

16 MB SPI NOR Flash

(Built-in)

The microSD card inserted by the user

Default startup priority

High (If the SD card has no valid image, it will boot from Flash.)

Low (starts from SD only when a valid boot.bin is detected)

Usage

Factory firmware, recovery mode, stable operation

Development testing, custom system development, firmware upgrade temporary carrier

Update Mode

Using USB, execute "fw_update -t pluto"

Manually copy the image file

Boot Mode

the external 40MHz clock can only be enabled by jumper short-circuit when powered off, and clock selection cannot be switched via GPIO.

No jumper cap is required. You can directly use GPIO pins to switch anytime between the external 40MHz clock and the onboard internal 40MHz clock.

Default startup behavior

Initiating Mode

Switch 1

(QSPI_D2/ MODE1)

Switch 2

(QSPI_D3/ MODE2)

Explanation

QSPI

1

Connected to VCC3V3

0

Connected to GND

The boot source is the on-board Quad-SPI Flash (the standard factory setting)

JTAG

0

Connected to GND

0

Connected to GND

The source is initiated through the JTAG debugging interface, which is used for development and debugging.

SD

1

Connected toVCC3V3

1

Connected to VCC3V3

The source is microSD card (the SD card must contain boot.bin)

Open Source Sources

Github Repo

PlutoSky-R2

Hardware Schematic file

PlutoSky-R2-schematic.pdf

Firmware Files

Firmware Files

Vivado Project

PlutoSky R2 Vivado2021.1 project.rar

Frequently asked questions (FAQs) 

1. Does the device support PPS (Pulse Per Second) input?
Answer: PPS calibration of onboard clock is not supported. However, when using an onboard 40MHz clock, it supports calibrating the onboard clock with a 10MHz input.

2. What are the functions of the three internal IPEX connectors on the circuit board?
Answer: They are 40M clock input, TX local oscillator, and RX local oscillator.

3.Does the device support internal clock and external clock switching?
Answer: PlutoSky R2 supports GPIO settings to determine whether to use an onboard 40MHz clock or an external 40MHz clock.

Windows System Usage Tutorial

PlutoSky R2 Windows User Manual Youtube Video

PlutoSky R2 communicates with the computer by default through a USB virtual network card or Ethernet port. Although its default IP address is 192.168.2.1 when it is manufactured, you can configure it flexibly according to the actual connection method. The following explains in two scenarios: USB direct connection and wired Ethernet port connection.

Using USB Virtual Bridge Connection and Required Drivers

When PlutoSky R2 communicates with the computer via the USB interface, it does not directly transmit the raw I/Q data. Instead, it utilizes the USB virtual bridge (RNDIS + CDC-ACM) technology to simulate the device as a virtual Ethernet card + virtual serial port. Thus, the host can access PlutoSky R2 through standard network protocols (such as TCP/IP), significantly simplifying cross-platform compatibility.

Connection advantages:

①No additional network cables or routers required

②Plug and play (after installing the driver)

③Supports all networked tools such as SSH, IIO, MATLAB, GNU Radio, etc.

④Default IP address is 192.168.2.1

However, on Windows systems, the official driver must be manually installed; otherwise, the device will be displayed as "unknown device" or will not be recognized as a network interface.

PlutoSDR-M2k-USB-Drivers.exe installation

This is the USB virtual network card driver package provided by ADI, which is used to enable Windows to recognize the RNDIS network function of PlutoSDR.

Step 1: Download driver

You can obtain the driver in the following two ways:

The driver file is included in the resource package.

The file is located in the "Windows system driver.exe file" folder. The file name is: PlutoSDR-M2k-USB-Drivers.exe

You can obtain it from the ADI website:

https://wiki.analog.com/university/tools/pluto/drivers/windows

Step 2: Run the installation program

Run the installation program as an administrator.

Double-click PlutoSDR-M2k-USB-Drivers.exe.

If a "Windows protects your PC" warning pops up, click "More Information" →"Still want to run".

Follow the wizard to complete the installation.

Click "Next" →"I accept the agreement" →"Next" → "Install".

Wait for the driver files to be decompressed and registered (about 30 seconds)

Click "Finish" to complete.

Step 3: Connect PlutoSky R2 and verify

Insert the PlutoSky R2 into the computer using a USB data cable.

When connecting for the first time, Windows will automatically install "Analog Devices USB Device".

Open the Device Manager (Win+X → Device Manager):

You should see "Network Adapter" added under it: PlutoSDR USB Ethernet/RNDIS Gadget

At the same time, the following appears under "Ports (COM and LPT)": PlutoSDR Serial Console (COMx)

If it has not been automatically installed, right-click the device →"Update Driver" →"Browse my computer for drivers" →Select the folder located in the installation directory (either "win10" or "win7").

Note: If the Pluto device is not detected after connection, insufficient power supply may be the cause. Please connect both USB ports and try again.

a6c3d427d6786fdbc55f6bf552255873

Installation of libiio-setup.exe

Libiio (Industrial I/O Library) is a cross-platform communication library developed by ADI. All the upper-layer software on PlutoSky R2 (such as IIO-Scope, GNU Radio, MATLAB) rely on it.

LIBIIO-SETUP.EXE is its Windows installation package, which includes:

LIBIIO.DLL (core communication library)

IIO_INFO.EXE (device information query tool)

IIO_OSCILLOSCOPE.EXE (graphical debugging tool)

USB backend support (for USB virtual bridge communication)

Step 1: Download driver

1.You can obtain the driver in the following two ways:

The driver file is included in the resource package.

The file is located in the "Windows system driver.exe file" folder. The file name is: libiio-0.26.ga0eca0d2-setup.exe

2.You can obtain it from the ADI website:

https://github.com/analogdevicesinc/libiio/releases

Step 2: Run the installation program

Double-click to run libiio-0.26.ga0eca0d2-setup.exe.

Select the language (English is recommended)

Click “OK”→“I accept the agreement”→“Next”

Click“Install”

Step 3: Verify successful installation

Open the Command Prompt (CMD) and enter:

iio_info -u ip:192.168.2.1

If the output shows the device information of PlutoSky R2 (such as ad9361-phy), it indicates that the communication is normal!

Note:

The USB driver must be installed first before libiio can find the device through the USB virtual bridge.

Before using iio_info for the first time, make sure the computer's IP address is set to 192.168.2.x.

Using network cable connection and required drivers

Step 1: Log in to PlutoSky R2 via the serial port (to gain control)

Since you are unable to log in via the network, you need to use the serial port for debugging.

Prepare hardware: Connect the USB-C cable to the debug port (in the middle)

2cf10f8ab6177d5b9fe12dedd4c21a39

You need a software to act as the "terminal" for communicating with the serial port device. Here are some common options:

For Windows systems, use PuTTY or Tera Term.

On macOS/Linux systems, use screen or minicom.

Set the baud rate to 115200

Restart PlutoSky R2:

Power off and then power on again (or short-circuit the reset pin)

The serial port window will display the startup log (U-Boot → Linux)

Log in to the system:

When "pluto login:" appears, enter:

Username: root

Password: analog

Step 2: Check the current network configuration

After logging in, enter the following command:

ifconfig

Or

cat /etc/network/interfaces

You will see something similar:

Step 3: Temporary modification of IP

Suppose you want to change it to 192.168.6.10 and the gateway to 192.168.6.1, execute:

# Set IP and subnet mask

ifconfig eth0 192.168.6.10 netmask 255.255.255.0 up

# Set default gateway (optional, for accessing the external network)

route add default gw 192.168.6.1

Step 4: Test the new IP

On the computer, change the network card IP to the same subnet (such as 192.168.6.20), and then ping:

ping 192.168.6.10

If it works, it means success!

Permanently modify IP:

If you want the changes to remain effective after a reboot, you need to edit /etc/network/interfaces:

vi /etc/network/interfaces

Modify the "address" field, save the changes and then restart.

PothosSDR Installation

The reason for recommending PothosSDR is that it can significantly simplify the setup of the development environment for PlutoSky R2. As a pre-compiled software package, it does not require manual compilation of underlying drivers and libraries such as libiio, SoapySDR, or gr-iio, avoiding complex dependency handling and compilation errors. It automatically integrates PlutoSky R2's dedicated support module (SoapyPlutoSDR) and provides a graphical device manager (PothosUtil) for connecting and debugging hardware, while being seamlessly compatible with popular SDR applications such as CubicSDR. Truly achieving out-of-the-box usability for PlutoSky R2, allowing developers to focus on signal processing and application development rather than environment configuration.

Download PothosSDR

You can obtain the driver in the following two ways:

1.The driver file is included in the resource package.

The file is located in the " Software Package " folder. The file name is: PothosSDR-2021.07.25-vc16-x64

2.Open your browser and visit the official release page of PothosSDR:

https://downloads.myriadrf.org/builds/PothosSDR/

Or

https://github.com/pothosware/PothosSDR/releases

Download the latest version of the Windows installation package (recommended 64-bit):

Such as:PothosSDR-2021.07.25-vc16-x64.exe

Install PothosSDR

Run the installation program as an administrator.

“Next”→“I accept”→“Next”

The installation path is recommended to be set to the default (such as C:\Program Files\PothosSDR).

Wait for the installation to complete (approximately 2–5 minutes), and no restart is required.

If there is a failure due to "path too long", you can try to remove the length restriction of the path, or directly open the installation program.exe file with a compression software and extract all the directories.

Here, we demonstrate how to solve the problem of an excessively long installation path using compression software (such as 7-zip).

Open your compression software (such as 7-zip)

Select PothosSDR-2021.07.25-vc16-x64.exe

Click the "Unzip" button

Just wait until the decompression is complete.

The CubicSDR software is located in the bin folder within the PothosSDR-2021.07.25-vc16-x64 folder.

PothosSDR will automatically register the relevant DLLs and plugins to the system path. When CubicSDR is launched, PlutoSky R2 support will be automatically loaded.

Installation and Use of CubicSDR

CubicSDR is an open-source, cross-platform, and powerful general-purpose software-defined radio (SDR) visualization tool that supports various SDR hardware, including PlutoSky R2. On the Windows platform, through the PothosSDR suite, all necessary dependencies (including drivers, libraries, and plugins) can be installed in one click, significantly simplifying the configuration process. This tutorial uses CubicSDR included in PothosSDR. Make sure to install PothosSDR first.

Method 1: Utilizing Ethernet Connection

Step 1: Connect PlutoSky R2 and confirm network connectivity

Premise: PlutoSky R2 has been connected to the computer via USB and the IP address has been configured (default 192.168.2.1).

If you have modified the IP of PlutoSky R2 to 192.168.6.10 as per the previous instructions, make sure the computer's network card is in the same network segment (such as 192.168.6.x).

Open the Command Prompt (CMD) and test the connection:

ping 192.168.2.1 or ping 192.168.6.10

If you see "Reply from 192.168.X.XX", it indicates a smooth network connection.

(Optional) Verify if PlutoSky R2 is recognized by SoapySDR:

Open the Start menu → Search for "PothosUtil" and run it

Click on the "Device Manager" tab

Check if the plutosdr device is listed (you may need to click "Refresh")

Step 2: Start CubicSDR and add the PlutoSDR device

Open the Start menu, search for and launch CubicSDR.

When you first start it, a "Device Configuration" window will pop up.

If it doesn't appear, you can click the menu bar "View" → "Device Configuration" to open it manually.

In the device list, click the " + Add" button at the lower left corner.

In the pop-up "Add Device" dialog box, fill in the following parameters:

driver=plutosdr, hostname=192.168.6.10

Driver fixed value, indicating the use of PlutoSDR driver

Hostname: Current IP address of PlutoSDR

CubicSDR will automatically fill in the default values Note:

Do not fill in http:// or port numbers

If using the default IP, this field should be filled with 192.168.2.1

Click "OK" to save

Return to the device list and you will see the newly added device, for example:

PlutoSDR #0 192.168.6.10

Select this device, click the bottom right "Apply" → "Close"

Method 2 (Recommended): Use a USB bridge for direct connection

Insert the USB cable into the USB port. If the driver is installed completely, the device can be correctly recognized in the Device Manager.

Start the CubicSDR located in the "bin" folder of the Pothos-SDR installation directory.

A default Plutosdr can be seen to appear. Click "start" to activate it.

If there are issues such as freezing or crashing, try unplugging and replugging the device or using an Ethernet connection.

Start using CubicSDR

The main interface of CubicSDR will automatically connect to PlutoSDR.Adjust the center frequency (e.g. 100 MHz) and bandwidth (e.g. 2 MHz).

You will see the real-time spectrum and waterfall graph.

It can receive FM radio, aviation ADS-B, NOAA satellite images, etc. (depending on the antenna and frequency) Congratulations! You have successfully used PlutoSky R2 on Windows via CubicSDR!

SDRangel Installation and Usage

Download and install SDRangel

You can obtain the driver in the following two ways:

1.The driver file is included in the resource package.

The file is located in the " Software Package " folder. The file name is: sdrangel-7.23.0-win64.exe

2.Open your browser and visit the official release page of SDRangel:

https://github.com/f4exb/sdrangel/releases

Note: For Windows, the PlutoSDR driver (from Analog Devices) needs to be installed separately; otherwise, the device cannot be recognized.

After the download is completed, double-click on sdrangel-7.23.0-win64.exe to run and start the installation.

“Next”→“I accept”→“Add sdrangel to the system PATH for all users”→“Next” →Select the location where you want to install. →“Install”

It will only take a few minutes for the installation to complete.

Configuring PlutoSDR and SDRangel

Step 1: Connect the device

Connect PlutoSky R2 via USB cable.

On Windows, the Device Manager should display "PlutoSDR".

Step 2: Start SDRangel

Open sdrangel and you will see a blank interface.

Make sure that the insertion device has been inserted and the driver installation has been completed. Click on this icon to add a new receiver.

Select "PlutoSDR" in the pop-up box, then enter the receiving interface as shown in the figure. Click the purple triangle to start the receiving device.

Sample Rate: It is recommended to set it to 2.4 Msps (the FM broadcast bandwidth is approximately 200 kHz, 2.4M is sufficient)

Center Frequency: Enter the FM frequency you want to listen to, for example 103.9 MHz

After starting, you can see the waterfall graph.

Click this button to add the demodulation channel.

In the "Demodulator Type" drop-down menu, select "Broadcast FM Demodulator"

Adjust the parameters in the newly appeared window. Once it's done, you will be able to hear FM radio broadcasts.

Advanced Suggestions

Remote Reception: PlutoSky R2 supports network mode (default IP 192.168.2.1), and can be remotely controlled via http://pluto.local.

Multi-channel Monitoring: SDRangel supports running multiple demodulators simultaneously (such as FM + DMR), making full use of Pluto's 20 MHz bandwidth.

Automation Script: By combining Python + pyadi-iio library, automatic frequency scanning and recording can be achieved.

Universal Radio Hacker (URH) Installation and Usage

Download and Installation of URH

You can obtain the driver in the following two ways:

1.The driver file is included in the resource package.

The file is located in the " Software Package " folder. The file name is: Universal.Radio.Hacker-2.10.0-x64.exe

2.Open your browser and visit the official release page of URH:

https://github.com/jopohl/urh/releases

URH offers an official installation program on Windows, eliminating the need for manual configuration of the Python environment.

After the download is complete, double-click on Universal.Radio.Hacker-2.10.0-x64.exe to start the installation process.

“I accept the agreement”→“Next”→Select the installation location→“Next”

The official binary package includes all the dependencies (NUMPY, PYQT, SOAPYSDR, etc.) and avoids any environmental conflicts.

Using URH to record FM signals

After starting the URH, click on the "File" button at the top of the main interface to find the red recording button (Record).

In the "Device" column, select PlutoSDR.

Click the green arrow to refresh the device.

Set the parameters as follows:

Center frequency: e.g. 103.9 MHz

Bandwidth: 4 MHz (recommended for beginners)

Sampling rate: 2 MSPS

Gain: 40 dB (can be adjusted later)

Click "Start", and after 10 to 30 seconds of recording, click "Stop"

On the waveform interface, click "Save" to save the FM broadcast as a standard complex32s file, which can then be used for subsequent analysis or sharing.

Installation and Use of SDR Console

Download and install SDR Console v3

You can obtain the driver in the following two ways:

1. The driver file is included in the resource package.

The file is located in the " Software Package " folder. The file name is: SDR-Radio V3.3, 64-bit, 2024-02-05_0741.exe

2.Open your browser and visit the official release page of SDR Console:

https://www.sdr-radio.com/download

After installation, restart the computer (make sure the drivers and network stack are correctly loaded).

Configure PlutoSDR to SDR Console

Open SDR Console v3.

Enter "Radio Definitions" (it will pop up automatically on the first startup).

Click “Definitions”

Click on "Add" → Select "PlutoSDR"

Enter connection information (you can also use the default parameters):

IP Address: 192.168.2.1

Port: 5110 (default IIO port)

Bandwidth: 20 MHz (recommended for FM reception)

Sample Rate: 2.4 MSPS (balance performance and bandwidth)

Click "OK"

Select PlutoSDR, and then click "Save"

Click "start" and then close. The first time you use it, it might take a while to load, but it won't affect the normal connection.

Note: If the connection fails, please check if the Windows Firewall is blocking SDR CONSOLE's access to the local network.

Receiving FM Broadcasting via SDR Console

Start the SDR Console, then click "Layout" on the main interface → Select "Broadcast" or choose the function you need.

Enter the local FM frequency (such as 103.9 MHz) in the frequency column.

Mode selection: "BC-FM" (or WFM)

Adjust the following parameters to optimize the sound quality: Filter BW: 150–180 kHz

Squelch: Turn off (FM broadcasting usually doesn't require noise suppression)

AGC: Enable (Automatic Gain Control)

Connect headphones or speakers, and you can listen!

The SDR Console has an RDS decoder built-in, which can display the station name (requires a strong signal).

Advanced Techniques

Remote Use: PlutoSky R2 supports remote control via the network. Just set up port forwarding (5110) on the router, and you can use the SDR Console to receive signals from the external network.

Multiple Virtual Receivers: SDR Console supports opening multiple receiving channels simultaneously, allowing you to listen to multiple FM radio stations at the same time.

Spectrum Recording: Use the "Record" function to save IQ or audio for later analysis.

GNURadio Usage

Important prerequisite!!

This tutorial uses GNU Radio included in PothosSDR. Make sure to install PothosSDR first.

If it has not been installed yet, please complete the "2.3 PothosSDR Installation" section mentioned above.

GNU Radio is a powerful open-source signal processing framework widely used in SDR application development. Through its graphical interface GNU Radio Companion (GRC), users can build complex wireless communication systems without writing code. This section will guide you to quickly build an FM radio receiver based on PlutoSky R2 using GRC.

Start GNU Radio Companion

After installing PothosSDR, search for:

"GNU Radio Companion" or "gnuradio-companion" in the Windows Start menu.

Or directly open GNU Radio Companion in the bin directory of PothosSDR.

Run as an ordinary user (no need for administrator privileges).

The first startup might be a little slow (requiring module loading), please be patient and wait.

8931b3bb06b4b30e952799748b51465c

If the error shown in the diagram occurs, please install the matching version of Python 3.9 (64-bit).The corresponding version must be installed:

https://www.python.org/downloads/release/python-3913/

Verify whether the support for PlutoSky R2 has been integrated

In the "Blocks" panel on the left side of the GRC interface, search for "Pluto".

If you see the "PlutoSDR Source" module, it indicates that the SoapyPlutoSDR plugin has been correctly loaded.

Creating FM Reception Flow Diagram Using GNU

We will construct a classic FM receiving chain:

Step 1: Add the PlutoSDR signal source

From the left module list, drag "PlutoSDR Source" (located under the "Sources" category) onto the canvas.

Double-click on this module and configure the following parameters:

The FM radio frequency band usually ranges from 88 to 108 MHz. Please select the appropriate frequency based on your location.

Step 2: Add FM demodulator and audio output

After adding the module, set the parameters as follows:

Ensure the global sample rate variable matches the hardware parameters.

Step 3: Connect all the modules

Click on the output port of a module (the small dot on the right), and drag it to the input port of the next module (the small dot on the left).

After the connection is successful, a black line with an arrow will appear.

Save and Run the Flowchart

Click the menu bar "File" → "Save As", and save as "pluto_fm_rx.grc".

Click the "Play" button on the toolbar to run the flowchart.

When you run it for the first time, GRC will automatically compile the Python code and start.

Wait for a few seconds, and you should be able to hear the FM radio sound from your computer speakers!

Conducting Loopback Testing Using GNU

Build the following flowchart in GNU Radio. Install antennas on TX1 and RX1, and then click the "Start Running" button.

If you can observe the following spectrum graph, it indicates that the transmission and reception have been successfully carried out.

Testing the cracking result of the AD936X chip

Use SDRSharp or other signal receiving software to test whether the equipment supports 70 MHz - 6 GHz.

The equipment itself is an AD9363 chip, but it has been cracked through software means and transformed into AD9361.

https://wiki.analog.com/university/tools/pluto/users/customizing

Here, CubicSDR is used for the demonstration.

It can be observed that when the center frequency is adjusted beyond 70 MHz, the spectrum graph undergoes changes.

Moving slowly near 6G, it can be observed that when the center frequency exceeds 6000 MHz, the translation does not exhibit spectral characteristics, indicating that the device has the capability to receive 70 MHz - 6 GHz.

Ubuntu System Usage Tutorial

PlutoSky R2 Windows User Manual Youtube Video

This section covers driver installation and basic dependency libraries for PlutoSky R2 devices.

Install Ubuntu Drivers & Base Dependencies

Open a terminal, update the package list, and install required tools and libraries.

sudo apt update

sudo apt install git cmake g++ libiio-dev libboost-all-dev libusb-1.0-0-dev

sudo apt install libiio-utils

Allow a few minutes for the process to complete.

Then clone SoapySDR from GitHub, build and install it.

git clone https://github.com/pothosware/SoapySDR.git

cd SoapySDR

mkdir build && cd build

cmake ..

make -j$(nproc)

sudo make install

Enter the following command to update the dynamic library cache:

sudo ldconfig

SoapySDRUtil -info

After success, the SoapySDR version and the plugin path will be displayed.

Install SoapyPlutoSDR Plugin & Verify Device

Enter the following command to return to the parent directory:

cd ../..

Clone and compile the SoapyPlutoSDR module.

git clone https://github.com/pothosware/SoapyPlutoSDR.git

cd SoapyPlutoSDR

mkdir build && cd build

cmake ..

make -j$(nproc)

sudo make install

Finally, perform connectivity verification and hardware detection for the PlutoSky R1 device.

PlutoSky R2 Connectivity and Device Detection

ping -c 3 192.168.2.1

Read PlutoSky R2 hardware device information

iio_info -u ip:192.168.2.1 | head -n 40

s

Probe PlutoSDR Soapy driver status

SoapySDRUtil --probe="driver=plutosdr,hostname=192.168.2.1"

If you see PlutoSDR information, the driver is ready.

Install SDRangel

On Ubuntu, it is recommended to install SDRangel via snap.

sudo snap install core

sudo snap install sdrangel

The Snap version of SDRangel runs with restricted permissions by default. Without proper permissions granted, it will fail to detect USB devices, manage networks, access hardware information, record audio or demodulate signals. Please run the following commands to complete the configuration.

For the Snap version, run the following commands first to enable this feature:

sudo snap connect sdrangel:raw-usb

sudo snap connect sdrangel:avahi-control

sudo snap connect sdrangel:network-manager

sudo snap connect sdrangel:hardware-observe

If you encounter dependency issues, run:

sudo apt -fix-broken install

Launch SDRangel:

Sdrangel

Using SDRangel to receive FM radio broadcasts

Firs,we need to connect the device to the computer via a USB cable,connect the antenna to RX1.

Once SDRangel is open, add a receiver and select “PlutoSDR”.

Set the center frequency to your local FM station (e.g., 103.9 MHz) and sample rate to 2.5 MHz.
Click the purple triangle to start reception.
In the “Channel” area, click “+” and add a “Broadcast FM Demodulator”.

Adjust the volume and you should hear the broadcast.

Install Gqrx

First, install the required dependencies before proceeding with the main application.

git clone https://github.com/pothosware/SoapyPlutoSDR.git

cd SoapyPlutoSDR

mkdir build

cd build

cmake ..

make -j$(nproc)

sudo make install

sudo ldconfig

sudo apt update

sudo apt install libfuse2

Go to this website https://github.com/gqrx-sdr/gqrx/releases to download the latest Gqrx binary file.

Place the downloaded Gqrx-2.17.7-x86_64.AppImage from the official website into the apps folder on your desktop. Open a terminal and run the command below to navigate to this directory:

cd ~/Desktop/apps

Note: If the file is stored in a different location, replace the command with the corresponding actual path.

Grant executable permissions to the program file Gqrx-2.17.7-x86_64.AppImage to allow the system to run it.

chmod +x Gqrx-2.17.7-x86_64.AppImage

Create a system symbolic link

Run the following command to create a symbolic link, so you can launch the program directly from the terminal:

sudo ln -sf /home/nyq/Desktop/apps/Gqrx-2.17.7-x86_64.AppImage /usr/bin/abc

This command creates a symbolic link named abc in the system global directory /usr/bin/ pointing to the Gqrx executable located in the apps folder on your desktop. After configuration, you can launch Gqrx quickly by entering abc or the full filename in the terminal.

Using Gqrx to receive FM radio broadcasts

At this point, take the Pluto Sky R2 as an example. Connect the device to the computer with a USB cable and plug the antenna into RX1.

Launch Gqrx and select PlutoSDR as the device. If the device is not detected, choose Other in the Device menu, enter ip:192.168.2.1 in the Device string field, then click OK.

The title bar at the top of the software displays device=PlutoSDR,driver=plutosdr,soapy=0,uri=usb:3.6.5, which indicates the PlutoSky R2 hardware has been successfully recognized via USB, eliminating the need to reselect the device. In the Frequency input box on the right panel, enter the target FM radio frequency point of 97400.000 kHz (equivalent to 97.400000 MHz). For Filter width, select Wide from the dropdown menu — this wide bandwidth complies with the domestic 88–108 MHz FM stereo broadcast standard of 200 kHz bandwidth, fully accommodating the full spectrum of FM signals. For Filter shape, choose Soft (soft roll-off filtering), which delivers smoother in-band waveforms and lower audio distortion. Under Mode, select WFM (mono) from the demodulation mode dropdown for wideband FM demodulation in mono, suitable for regular FM radio reception. Switch to WFM stereo mode if stereo audio output is required.

Click the play button to start listening to the radio.

Firmware Flashing Tutorial

PlutoSky R2 Firmware Operations Youtube Video

Three Boot Modes

There are three boot modes for the PlutoSky R2, JTAG boot mode, flash boot mode and sd card boot mode.

1.JTAG Mode: It is used for debugging and firmware flashing. It can flash firmware into the onboard Flash chip. Only JTAG mode supports flashing Flash firmware via VIVADO software in your computer. The PlutoSky R2 does not have DFU button. VIVADO flashing will erase Flash and DFU firmware, and the device will automatically enter into DFU mode after power-on. The DFU boot mode is used to recover when custom programs are flashed into the onboard Flash chip and cause firmware errors.

2.Flash Mode: Load boot files from onboard Quad-SPI Flash chip.

3.SD Card Mode: Load boot files from TF card which contains boot.bin.

The PlutoSky R2 supports both Flash boot and SD card boot by factory default.

DIP Switch Boot Mode Definition

Note: DIP switch settings must be operated when the device is powered off; settings are invalid under power-on state.

QSPI Boot Mode: Switch 1 connects to VCC 3V3, Switch 2 connects to GND. Factory default boot mode from onboard Flash.

SD Card Boot Mode: Switch 1 connects to VCC 3V3, Switch 2 connects to VCC 3V3. Boot from microSD card with boot.bin.

JTAG Debug Mode: Switch 1 connects to GND, Switch 2 connects to GND. Used for development debugging and firmware burning.

After setting the DIP switch, connect the PC to the Debug USB port with a data cable. The red POWER LED will light up after power-on.

When using SPI Flash firmware (QSPI boot mode): If you need to enable the external 40MHz clock, you must power off the device first, then use a jumper cap to short the corresponding pin area. The internal/external clock cannot be switched via GPIO.

When using microSD card firmware (SD boot mode): After switching to SD card boot via DIP switch, you can use GPIO pins to switch internal and external 40MHz clocks at any time, no repeated jumper operation is needed.

SD card firmware burning

If you want to use the SD card boot working mode, you need to do this sd card firmware flashing.The SD card firmware used is located in the folder: Pluto \SD Card Firmware

SD Card Burning Steps

Use a TF card and format it as FAT32 file system.

Copy all firmware files to the root directory of the SD card. We will provide the files need on our github wiki.

Power off the device, set DIP switch to SD card boot mode.

Insert the SD card into the device slot, connect device USB port to PC, then power on the device again.

Verify SD Card Firmware Startup

Method 1: Test via CMD command

Open CMD in the folder of iio_info.exe, input one of the following commands:

iio_info.exe -s

iio_info.exe -u ip:192.168.2.1 or iio_info.exe -u ip:pluto.local

Note that if you use the SD card boot mode, the default IP address of the PlutoSky R2 is 192.168.2.1. And you can also manually modify the IP address.

Method 2: Verify via IIO-Oscilloscope Software

Open IIO-Oscilloscope software, add new device, manually input IP: 192.168.2.1.

If the software recognizes AD9361 hardware and displays spectrum waveform, the firmware runs normally.

Flash Firmware via VIVADO in JTAG Mode

Note: The device is pre-burned with official firmware by factory default. Ordinary users do not need this operation.

This operation is only required when users use the board as a ZYNQ development board and flash custom programs, resulting in damaged and abnormal Flash firmware.

Enter JTAG Boot Mode

Power on the device in JTAG boot mode by switching the BOOT selector to JTAG when the device is powered off.

Hardware connection and power-on

Connect the PlutoSky R2’s DEBUG port to your computer via a Type C data cable. Power on the device; the POWER indicator will light up red.

Vivado Hardware Connection Operations

Launch the Vivado software → Click Open Hardware Manager → Wait for loading → Click Open target.

Solutions for Device Not Recognized by Vivado

If Vivado fails to detect the device: Navigate to .../nt64/digilent, run install_digilent.exe as Administrator, follow the wizard to install the driver, restart your computer, then reopen Vivado.

Configure Storage and Program Files

Once the device (e.g., xc7z020_1) is detected: Right-click and select Add Configuration Memory Device → Search for w25q128, select the x4 version and confirm → Import the provided boot.bin and fsbl.elf files → Set Address Range to the entire Flash → Check the 4 configuration options → Click Apply and wait 3-5 minutes for programming.

Then proceed with DFU firmware programming

Switch to Flash Boot Mode

Power off the device, switch the BOOT selector to Flash boot mode, then connect the device’s USB port to your computer via a data cable.

Verify the previous programming result

Open Device Manager on your computer; if USB download gadget appears under "Universal Serial Bus devices", the previous programming is successful. Otherwise, it means there was an error in the firmware flashing during the previous JTAG mode

Modify the path of the programming script

Open program_dfu.bat (in the programming folder) with Notepad++/Sublime Text. Only modify the file path before /Load (point to the location of pluto.dfu and uboot-env.dfu), save the file. Then modify the path in Load.bat in the same way.

Perform DFU programming and verification

Double-click program_dfu.bat and wait for automatic downloading via the command line. Reboot the device: programming is successful if the DONE LED is on and the LED blinks, or the device is detected in IIP Oscilloscope viaSetting→Connect.

Bricked Device Recovery Tutorial

Bricked Reason

The factory firmware has configured environment variables by source code, which hacked the AD chip from 9363 to 9361 by default.

If users manually execute hacked commands via Putty, repeated environment variable configuration may cause conflict and make the device bricked.

Recovery Steps

1. Preparation and Initial Setup

Format SD card as FAT32, copy BOOT.bin, devicetree.dtb, uEnv.txt, uImage, uramdisk.image.gz to SD card root directory.

Insert the SD card into the corresponding slot of the device.

Ensure the device is powered off, then switch it to the SD Card Boot Mode (adjust the mode switch according to the device hardware specifications).

Connect the DEBUG port of the device to the USB port of the computer using a compatible USB cable.

2. Connection Verification

After completing the connection, check the device indicators:

- The LED indicator flashes continuously.

- The DONE and PWR indicators remain steadily on.

If the indicators show as above, the connection is correct; otherwise, recheck the SD card insertion, mode switch and USB connection.

3. Serial Port Configuration and U-Boot Mode Access

Open the Device Manager on the computer, locate the USB COM Port (record the port number, e.g., COM3, for subsequent configuration).

Launch the PuTTY software, and configure the serial port parameters as follows:

Connection Type: Select Serial

Serial Line: Enter the COM port number

Speed (Baud Rate): Set to 115200

Click the Open button to establish the serial connection.

Press the RST button on the device; the LED indicator will stop flashing immediately.

Press the Enter key on the computer keyboard, wait for 3-5 seconds. If the prompt Pluto> appears in the PuTTY terminal, it indicates that the U-Boot mode is successfully accessed.

4. Flash Erasure Operation

In the PuTTY terminal (under Pluto> prompt), enter the following commands in sequence, and press Enter after each command to execute:

sf probe

sf erase 0x0 0x1000000

Note: The erasure process takes approximately 2-3 minutes. Do not power off the device or disconnect the USB cable during the erasure process, otherwise the device may be damaged.

Unplug and reconnect the device to the USB port. Check if the device is recognized in Device Manager. If detected, the device has been restored successfully.

This operation erases all wrong custom configurations in onboard Flash to eliminate boot failure.

After OK is displayed, reconnect the device (unplug and plug it back in), open Device Manager, and check if the device is recognized.

Confirm Real Chip Model

Problem Description

The boot serial information displays 7010, but the actual hardware is Zynq-7020. The number 7010 is only a firmware identification string, it does not represent the real hardware model, and there is no hardware fault.

Verify Chip Model

Power off the device, set DIP switch to JTAG mode, connect JTAG interface to PC.

Open Xilinx Vivado, enter Hardware Manager and connect target device.

Vivado will automatically read and display the real chip model xc7z020 to confirm hardware correctness.

Reference

https://www.rtl-sdr.com/adalm-pluto-sdr-unboxing-and-initial-testing/#:~:text=The%20PlutoSDR%20%28aka%20ADALM-PLUTO%29%20is%20a%20new%20RX,61.44%20MSPS%20sampling%20rate%20and%2020%20MHz%20bandwidth.

https://wiki.analog.com/university/tools/pluto/drivers/windows

https://github.com/analogdevicesinc/plutosdr-m2k-drivers-win/releases

https://wiki.analog.com/university/tools/pluto/prerequisites

https://wiki.analog.com/university/tools/pluto/users/firmware

The PlutoSDR supports USB 2.0 On-The-Go (OTG), and can be used in two different modes:

https://wiki.analog.com/university/tools/pluto

https://www.rtl-sdr.com/plutosdr-quickstart-guide/

https://wiki.analog.com/university/tools/pluto/users/quick_start

https://wiki.analog.com/university/tools/pluto/prerequisites

https://wiki.analog.com/resources/tools-software/linux-software/gnuradio

https://plutosdr.org/getting-started/

https://blog.csdn.net/goldenhawking/article/details/104072054

https://blog.csdn.net/weixin_42905573

https://blog.csdn.net/zhangxq0521/category_9812491.html

https://wiki.gnuradio.org/index.php/PlutoSDR_FMRadio

If you have any questions, please feel free to contact us at any time.

Follow our YouTube channel and you can access more video tutorials.

https://www.youtube.com/@OpenSourceSDRLab