MicroZed Chronicles: PYNQ 3.1 and PYNQ.remote
- Adam Taylor
- 7 minutes ago
- 4 min read
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.

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:
Create a new SD card image using the instructions in the PYNQ help documentation.
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.

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:
Upcoming Webinars Timing, RTL Creation, FPGA Math and Mixed Signal
Professional PYNQ Learn how to use PYNQ in your developments
Introduction to Vivado learn how to use AMD Vivado
Ultra96, MiniZed & ZU1 three day course looking at HW, SW and PetaLinux
Arty Z7-20 Class looking at HW, SW and PetaLinux
Mastering MicroBlaze learn how to create MicroBlaze solutions
HLS Hero Workshop learn how to create High Level Synthesis based solutions
Perfecting Petalinux learn how to create and work with PetaLinux OS
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
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