This guide walks through the complete deployment of the PlutoSky R2 running Tezuka firmware: hardware and software preparation, SD‑card firmware deployment, three boot modes and DIP‑switch operation, IIO context verification, config.txt parameter configuration, web dashboard activation, the built‑in Maia‑SDR waterfall, and brick recovery via Flash erasure and DFU programming, along with full hands‑on demonstrations.

YouTube Video Link: https://www.youtube.com/watch?v=c4ZYFDh0o9Y

Overview

We elaborate from eight perspectives.

• Device Preparation

• Three Boot Modes and DIP Switch Definition

• Factory Firmware Backup

• SD Card Firmware Deployment and Boot Verification

• First Connection and IIO Context Verification

• config.txt Parameter Configuration and Web Dashboard Activation

• Built-in Maia-SDR Waterfall and RF Path Verification

• Brick Recovery: Flash Erasure and DFU Programming

Chapter 1 Device Preparation

Covers the hardware and software checklist, and the firmware download and package structure, the foundation for later flashing and experiments.

Red line: Under no circumstances shall you flash QSPI Flash via the .frm method; this will brick the device. The R2 is equipped with an SD‑card slot — always use the SD‑card boot method.

1.1 Hardware Checklist

Item

Requirement / Notes

PlutoSky R2 unit

Confirm the hardware revision is R2 (XC7Z020-2CLG484I)

microSD card

8–32GB, formatted as FAT32. A genuine card is mandatory — counterfeit cards are the number one cause of boot failure

USB-C data cable x 2

One to the USB port (data plus power), one to the Type-C DEBUG composite port

1.2 Software Checklist (Windows)

Software

Purpose

PlutoSDR-M2k-USB-Drivers.exe

ADI official RNDIS virtual network adapter driver, mandatory for USB connection

libiio-setup.exe

Provides the iio_info command-line tool

SSH client (PuTTY or similar)

Log into the device to investigate problems

1.3 Firmware Download and Package Structure

Step 1 Download the correct asset

Go to https://github.com/F5OEO/tezuka_fw/releases and download only tezuka-plutoskyr2-*.zip.

Step 2 Identify the two folders

After extraction the package contains exactly two folders:

sdimg/ — for SD card boot. This is the one you use.

flash/ — for QSPI programming. Do not touch.

Chapter 2 Three Boot Modes and DIP Switch Definition

The R2 carries two complete firmware sets simultaneously, and which one runs is decided purely by hardware before any software executes.

2.1 DIP Switch Boot Mode Table

The R2 carries a DIP switch block that must only be operated with the device powered off. Settings changed while powered are ignored, because the Zynq BootROM samples these pins once at power-on.

Boot Mode

Switch 1

Switch 2

Purpose

QSPI Flash

VCC3V3

GND

Factory default, runs the modified stock PlutoSDR firmware

SD Card Boot

VCC3V3

VCC3V3

Runs Tezuka firmware — the target mode of this tutorial

JTAG

GND

GND

Development debugging and brick recovery

2.2 The Dual Firmware Architecture

An R2 normally ships with both firmware sets present: Tezuka pre-installed on the SD card, and the modified stock PlutoSDR firmware in the QSPI Flash.

Chapter 3 Factory Firmware Backup

Before any file is written to the SD card, both factory firmware sets must be archived.

3.1 Back Up the Factory SD Card

Step 1 Copy the entire card

Copy the full contents of the factory SD card to a computer and archive it. Do this before formatting, not after.

Step 2 Confirm against the official backup

The official backup location for the factory SD card firmware is the repository OpenSourceSDRLab/PlutoSky-R2, under firmware/SD card firmware/. It contains five files:

• BOOT.bin

• devicetree.dtb

• uEnv.txt

• uImage

• uramdisk.image.gz

All five must be present. A backup missing any one of them will not boot.

3.2 Back Up the Factory Flash Firmware

The factory Flash firmware lives in the same repository under firmware/Flash firmware/, and contains program_dfu.bat.

Chapter 4 SD Card Firmware Deployment and Boot Verification

The actual Tezuka installation, which takes roughly five minutes, plus the standard boot self-test criteria for judging a successful deployment.

4.1 SD Card Deployment Steps

Step 1 Format the card

Format the microSD card as FAT32. Cards larger than 32GB require a third-party tool to force FAT32.

Step 2 Copy the firmware contents

Extract the firmware zip, enter the sdimg/ folder, select everything inside the folder, and copy it to the root directory of the SD card.

Step 3 Set the boot mode

With the device powered off, set the DIP switch to SD Card Boot mode (Switch 1 VCC3V3, Switch 2 VCC3V3).

Step 4 Connect and power on

Insert the SD card and connect the USB-C ports, then apply power. Connect both ports — one to the USB data port, one to the Type-C DEBUG composite port. Powering from a single port provides insufficient current and causes repeated reboots.

Step 5 Wait for boot

Allow approximately 20 to 30 seconds for the boot to complete.

4.2 Boot Self-test Criteria

Normal boot criteria:

• A removable drive (virtual mass storage) appears on the computer, containing config.txt

• A new adapter named PlutoSDR USB Ethernet/RNDIS Gadget appears in the network adapter list

Chapter 5 First Connection and IIO Context Verification

The fastest objective proof that the firmware is alive and the RF front end is enumerated correctly, using the libiio command-line tools.

5.1 Command Line Verification

Step 1 Confirm the IIO context

Run the following, where the default device IP under SD card boot is 192.168.2.1:

iio_info -u ip:192.168.2.1

Step 2 Log into the device

SSH into the device using username root and password analog:

ssh root@192.168.2.1

Run the following commands in sequence:

uname -a

iio_info | grep fw_version

iio_info

dmesg | grep ad936

ifconfig

The following verifications can be completed: The SD card firmware boots normally and the Linux operating system runs properly; Retrieve the current firmware version of the device (tezuka-v0.3.17); Confirm that the AD9361 RF hardware driver is loaded and the device is recognized successfully; Check the network IP configuration to ensure the host PC can establish communication with the device via the SSH / IIO protocol

5.2 The Four Expected IIO Devices

The iio_info output must list the following four devices with no errors reported.

Device Name

Function

ad9361-phy

RF front-end control (frequency, gain, bandwidth)

cf-ad9361-lpc

Receive data channel

cf-ad9361-dds-core-lpc

Transmit data channel / DDS signal source

xadc

Zynq-7000 internal system monitor (FPGA die temperature, VCCINT / VCCAUX / VCCODDR supply rails). Unrelated to RF

If any of the first three is missing, the FPGA bitstream did not load and the deployment must be repeated. The xadc device is a system monitor only and has no bearing on RF operation.

Chapter 6 config.txt Parameter Configuration and Web Dashboard Activation

6.1 Baseline Edits

Open config.txt on the TEZUKA drive and make the two baseline changes:

Change callsign = NOCALL to callsign = TEST

Change mode = 1r1t to mode = 2r2t

6.2 Parameter Reference Table

Adjust the remaining parameters according to your own configuration.

Purpose

Parameter

Section

Change

Use RX2 for reception by default

rf_input

[TEZUKA]

rx1 → rx2

Use TX2 for transmission by default

rf_output

[TEZUKA]

tx1 → tx2

Accept a 10 MHz external reference clock

refclk_source

[TEZUKA]

internal → external

Supply power to a satellite LNB

lnb_power

[TEZUKA]

off → on

Change the device IP address

ipaddr

[NETWORK]

default 192.168.2.1

Change the host-side IP address

ipaddr_host

[NETWORK]

default 192.168.2.10

Avoid hostname collisions with multiple units on one network

hostname

[NETWORK]

default PlutoSkyR2, change to PlutoSkyR2-01 or similar

6.3 The Save Procedure

Step 1 Save and eject

After editing the parameters, click save, then eject the device properly — this is not the same as simply unplugging it.

Step 2 Wait for re-enumeration

Wait three seconds. The device disappears and reappears. A file named SUCCESS_ENV_UPDATE appearing on the drive confirms the parameters were written successfully.

Step 3 Power cycle

Disconnect the device power, wait three seconds, and reapply power.

6.4 Web Dashboard Activation

Open a browser and navigate to http://192.168.2.1/index.html

The expected first-run behaviour, frequently mistaken for a fault: the page shows only an "Operator / Station identity" form, the Identity card on the right reads SWL-Anonymous.

This is not a bug. The dashboard is gated behind a configured callsign.

Step 1 Enter a callsign

Fill the Callsign field with your callsign, for example TEST. Operator name and Grid locator may be left blank.

Step 2 Save

Click Save changes. The button briefly changes to "Saved" and a yellow notice appears below reading "Callsign changed — reboot the device for it to take effect".

Step 3 Reboot

Reboot the device

Step 4 Hard refresh

Press the refresh button in the browser.

6.5 Dashboard Normal-state Criteria

The dashboard is correctly activated when all of the following are true simultaneously.

Location

Expected State

Top right

MQTT indicator is green

Bottom left

Shows TEST, not SWL-Anonymous

Next to BASEBAND

The tag is a green 2R2T

Device card at page bottom

Reads connected 192.168.2.1:9001

Command line cross-check

iio_info -u ip:192.168.2.1 returns 11 / 10 / 12 / 4

Once activated, the Tezuka dashboard reports device model, serial number, FPGA version, firmware build version, kernel version, U-Boot version, root filesystem, hostname, USB IP and MAC address, and the Ethernet MAC address.

Chapter 7 Built-in Maia-SDR Waterfall and RF Path Verification

The fastest possible go/no-go test of the receive path, requiring no host software at all.

7.1 Open the Waterfall

Navigate to http://192.168.2.1/waterfall/

This is the Maia-SDR instance integrated into the firmware. Because it needs no host application installed, it is the quickest way to establish whether the receive path works, and it should be the first test performed on any unit reported as faulty.

7.2 Interpretation

A live, moving waterfall with a visible noise floor confirms that the FPGA bitstream loaded, the AD9361 is configured, and the receive data path is streaming.

Chapter 8 Brick Recovery and Rollback

Two recovery scenarios and the exact procedures for each.

8.1 Case A: Tezuka Will Not Boot

Remove power, replace the SD card contents with the factory files archived in Chapter 3, and reapply power. That is the entire procedure.

The core value of SD card boot: no matter what goes wrong with Tezuka, the factory firmware in the QSPI Flash remains intact, so the device can never be genuinely bricked.

Two practical notes before reaching for the factory files. First, if the unit was working and is now not, substitute a second known-good SD card before anything else, since counterfeit cards are the leading cause of boot failure. Secondly, after restoring the device using the factory SD firmware, the unit will operate in the modified stock PlutoSDR mode. When accessing http://192.168.2.1/index.html, the Tezuka dashboard and waterfall page will no longer be available. This absence is expected and shall not be regarded as evidence of a failed restore.

8.2 Case B: Bricked due to incorrect Flash flashing

Bricking only occurs when Tezuka is written into the QSPI Flash via the .frm method.

The recovery principle is not to repair the damaged Flash contents. It is to boot a healthy U-Boot from the SD card, use it to erase the QSPI, and then reprogram the factory firmware over DFU.

8.3 Prerequisites

Item

Requirement

A bootable SD card

FAT32, with the five factory files in the root directory

Type-C data cable

Connected to the board's DEBUG port, not the plain USB data port

PuTTY

Serial, 115200 baud, 8N1, no flow control

Programming package

program_dfu.bat, Load.bat, pluto.dfu, uboot-env.dfu

ADI driver

PlutoSDR-M2k-USB-Drivers.exe, mandatory, or the DFU device will not be recognised

The entire recovery process consists of three parts: Flash erasure operation, JTAG firmware programming, and DFU firmware programming. Flash erasure is the prerequisite and basic step for all recovery procedures, which is used to clear the damaged firmware on the device. Under normal circumstances, the factory firmware can be flashed and the device repaired through DFU mode after erasure. If the computer fails to recognize the DFU device and the DFU programming process cannot be performed after Flash erasure, the JTAG firmware programming method can be adopted as a fallback solution. JTAG programming and DFU programming are two independent alternative solutions, and there is no need or possibility to execute both processes simultaneously.

8.4 Flash Erasure Procedure

Step 1 Boot from SD and open a serial session

With the device powered off, set the DIP to SD Card Boot, insert the SD card, connect the Type-C cable to the DEBUG port, and apply power.

Confirm the indicators before continuing: the LED indicator flashes continuously, and the DONE and PWR indicators are steadily on. If they are not, recheck the SD card seating, the DIP setting and the USB connection before going further.

Open Device Manager, find the USB COM Port and note its number. Launch PuTTY, set Connection Type to Serial, enter the COM port, set Speed to 115200, and click Open.

Step 2 Enter U-Boot

Press the RST button on the device. The LED indicator stops flashing immediately. Then press Enter on the keyboard and wait three to five seconds. The prompt Pluto> appearing in the terminal confirms U-Boot has been reached.

Step 3 Erase

At the Pluto> prompt, enter each command in sequence, pressing Enter after each:

sf probe

sf erase 0x0 0x2000000

sf probe initialises the SPI Flash subsystem and probes the chip, printing its model, page size, erase sector size and total capacity. Read that output: the total should be 16 MiB. sf erase then erases 0x1000000 bytes, which is 16,777,216 bytes, from offset zero — on this 16 MB W25Q128 that is a full-chip erase. Note that the second argument is a length, not an end address.

The erasure takes approximately two to three minutes, and the terminal will appear frozen throughout. This is normal. Do not remove power and do not disconnect the USB cable during erasure, or the device may be genuinely damaged. An OK message indicates completion.

8.5 Flash Firmware via VIVADO in JTAG Mode

Applicable scenario: After Flash erasure is completed, if the computer cannot recognize the USB download gadget and the DFU procedure is unavailable, use this fallback solution to restore the device.

Step 1 Switch to JTAG boot mode

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

Step 2 Hardware Connection and Power‑up

Connect the DEBUG port of PlutoSky R2 to your computer with a Type-C data cable.Power on the device; the PWR indicator will light up red.

Step 3 Vivado Hardware Connection Operation

Launch the Vivado software → Click Open Hardware Manager → Wait for loading → Click Open target →Click Auto Connect→ Select and right-click XC7z020_1

Step 4 Solutions for Vivado Failing to Recognize Hardware Devices

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.

https://blog.csdn.net/weiweiliulu/article/details/106576366

Step 5 Configuration Memory and Programming 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.

Flash programming success.

Close Program

8.6 DFU Programming Procedure

Applicable scenario: After Flash erasure is completed, if the computer can normally recognize the USB download gadget, this standard recovery solution is preferred.

Step 1 Switch to Flash boot mode

Power off the device, set the DIP to Flash boot mode, remove the SD card to eliminate any ambiguity about the boot source, connect the USB port to the computer with a data cable, and power on.

Step 2 Verify DFU entry

Open Device Manager. USB download gadget appearing under "Universal Serial Bus devices" confirms the device is in DFU mode and ready to be programmed.

If it does not appear, the Flash was not fully erased or the ADI driver is not installed. Recognising this device means only that programming can begin — it is not a sign that recovery is complete.

Step 3 Correct the script paths

Open program_dfu.bat with Notepad++ or Sublime Text, not Notepad. Modify only the file path preceding /Load so that it points at the actual location of pluto.dfu and uboot-env.dfu, then save. Modify the path in Load.bat the same way. The two paths must match, and should avoid spaces and non-ASCII characters.

Both .dfu files are required. uboot-env.dfu cannot be skipped: the factory firmware relies on environment variables to present the AD chip as a 9361 rather than a 9363, and a unit recovered without them will connect but operate with restricted frequency and bandwidth.

Step 4 Program

Double-click program_dfu.bat and wait for the command-line download to complete. Then reboot the device.

8.7 Recovery Verification

Programming is successful when the DONE LED is on and the indicator LED blinks, or when the device is detected in IIO Oscilloscope through Setting → Connect.