top of page
Adiuvo Engineering & Training logo
MicroZed Chronicles icon

MicroZed Chronicles: PYNQ 3.1 and PYNQ.remote

Long-time readers of this blog will know that I am a huge fan of the PYNQ framework. We have used PYNQ in several blogs and Hackster projects, most recently in one that used a LIDAR to help control the safety of a robotic arm as it operated in its environment. PYNQ has also featured heavily in our webinars over the years.


I was therefore very excited to discover a few weeks ago that version 3.1 of PYNQ had been released.


This is the first release of PYNQ since version 3.0 in 2022. PYNQ 3.1 is based on the 2024.1 toolchain for Vivado, Vitis, and PetaLinux.


Named Carlisle, this release introduces several new features. The main highlights are:


PYNQ.remote


PYNQ.remote moves the Python API from the target on the PYNQ board to the host. To achieve this, PYNQ uses gRPC, which enables remote procedure calls to be executed on the target under the control of the host running the Jupyter notebook and PYNQ API.

ree

Using PYNQ.remote is ideal for compute-intensive applications where the host performs the complex computations while the target executes specialized tasks.


A key element of PYNQ.remote is PYNQ.cpp, a C++ API that runs on the target device and provides low-level access to the hardware. Using C++ on the target ensures higher performance on the device.


Building the SD Card Image


To use PYNQ.remote, we need to build a new SD card image, as no prebuilt images are provided. We can do this in two ways:


  1. Create a new SD card image using the instructions in the PYNQ help documentation.

  2. Integrate the PYNQ meta-layer into a custom PetaLinux build.


The second approach is more advanced but ensures that PYNQ can be integrated into any custom board.


To build the SD card image, the first step is to create either a physical or virtual machine with the following installed:


  • Ubuntu 22.04

  • Vivado 2024.1

  • Vitis 2024.1

  • PetaLinux 2024.1


You’ll also need to install qemu-user-static, which allows you to execute applications built for different CPU architectures.


Next, download the target board’s PetaLinux BSP, in this case, for the ZCU104, as well as the PYNQ source distribution (sdist) and rootfs tarballs. These can be downloaded from the AMD downloads page (BSP) and the PYNQ website (sdist and rootfs).


Clone the PYNQ Git repository. To build the SD card, follow the instructions defined in the Makefile within the README file under the SDBuild directory. This section explains how to install Docker, which is required for the build process.


Following these steps will generate an image file that can be written to an SD card and used to boot the PYNQ board, in this example, a ZCU104.



Installing the Host Application


Next, we need to install the host application. On the host PC, use pip to install PYNQ, the necessary Python packages, and the Hello World example for the target board:

pip install pynq
pip install jupyterlab matplotlib pillow wheel
set BOARD=ZCU104 && pip install --no-build-isolation pynq-helloworld
jupyter lab

Once complete, you can open JupyterLab and explore the Hello World example.

From the ZCU104, first obtain its IP address, the board must be on the same network as the host machine.

ree

The Hello World example demonstrates how to resize images using the PL. For PYNQ.remote, we’ll need to modify a few cells in the notebook to enable remote operation, most importantly, we must tell the host notebook where the target is located.


On the host, the bitstreams and hardware handoffs are stored. For this example, the files are stored in the AMD cloud, and links are provided to them.


Running through the notebook is the same as for any other PYNQ notebook, as if it were executing directly on the target.


As I’ve said before, I’m a big fan of PYNQ, and I believe this new remote capability will be extremely useful for several applications and projects I have in mind.


FPGA Conference

FPGA Horizons US East - April 28th, 29th 2026 - THE FPGA Conference, find out more here.


FPGA Journal

Read about cutting edge FPGA developments, in the FPGA Horizons Journal or contribute an article.


Workshops and Webinars:

If you enjoyed the blog why not take a look at the free webinars, workshops and training courses we have created over the years. Highlights include:



Boards

Get an Adiuvo development board:

  • Adiuvo Embedded System Development board - Embedded System Development Board

  • Adiuvo Embedded System Tile - Low Risk way to add a FPGA to your design.

  • SpaceWire CODEC - SpaceWire CODEC, digital download, AXIS Interfaces

  • SpaceWire RMAP Initiator - SpaceWire RMAP Initiator,  digital download, AXIS & AXI4 Interfaces

  • SpaceWire RMAP Target - SpaceWire Target, digital download, AXI4 and AXIS Interfaces

  • Other Adiuvo Boards & Projects.


Embedded System Book   

Do you want to know more about designing embedded systems from scratch? Check out our book on creating embedded systems. This book will walk you through all the stages of requirements, architecture, component selection, schematics, layout, and FPGA / software design. We designed and manufactured the board at the heart of the book! The schematics and layout are available in Altium here.  Learn more about the board (see previous blogs on Bring up, DDR validation, USB, Sensors) and view the schematics here.


Sponsored by AMD





bottom of page