Setting Up PYNQ on Legacy Zybo (xc7z010clg400-1): Complete Boot and WiFi Guide

Setting Up PYNQ on Legacy Zybo (xc7z010clg400-1): Complete Boot and WiFi Guide

hardware zynq embedded-linux PYNQ Zynq-7000 Zybo xc7z010 ARM Cortex-A9 FPGA SoC Embedded Linux WiFi driver rtl8188gu DHCP Ethernet setup kernel modules

This guide walks through installing PYNQ on the original Zybo (xc7z010clg400-1) and enabling WiFi via a USB dongle. The official PYNQ releases do not directly support this legacy board revision, so additional steps are required.

By the end of this post, you will have:

  • A bootable PYNQ system on Zybo
  • Ethernet-based internet access
  • A compiled and working USB WiFi driver

Hardware and Software Used

ComponentVersion / ModelNotes
BoardDigilent Zybo (xc7z010clg400-1)Original revision
SoCZynq-7000 (XC7Z010)Dual-core ARM Cortex-A9
PYNQ Image3.0.1 (community build)Board-specific fix
WiFi DongleD-Link USBRTL8188GU chipset
Kernel Driver Sourcelwfinger/rtw88Compiled natively
Host OSUbuntu 22.04 LTSFor flashing + DHCP sharing
SD Card16GB+Class 10 recommended

Why Official PYNQ Images Fail

Official PYNQ images target:

  • Zybo Z7-10
  • Zybo Z7-20

These use updated BSP configurations incompatible with the older xc7z010clg400-1 board.

Typical symptoms if you try an official image:

  • Board does not boot
  • HDMI shows no output
  • Stuck before kernel load

If this happens, the issue is not your SD card. It is a device tree / BSP mismatch.


Flashing a Compatible PYNQ Image

A community-maintained image exists for this legacy board:

Repository: https://github.com/nick-petrovsky/PYNQ-ZYBO

Download the patched image: Zybo-3.0.1-fix-boot-bin-fix-havege.img.xz

Flash the Image

On Linux:

unxz Zybo-3.0.1-fix-boot-bin-fix-havege.img.xz
sudo dd if=Zybo-3.0.1-fix-boot-bin-fix-havege.img of=/dev/sdX bs=4M status=progress
sync

Replace /dev/sdX carefully.

If flashing fails:

  • Reformat SD as FAT32 first
  • Try a different SD card
  • Avoid USB hubs during flashing

Insert SD card, set boot mode to SD, power on.

You should see Linux boot over HDMI or serial.


Getting Temporary Internet (Ethernet Sharing)

The default image does not include full WiFi driver support. To compile drivers, you need internet access first.

Option: Share Internet From Laptop

Step 1: Connect Ethernet directly to laptop

Step 2: Enable Internet Sharing (Ubuntu example)

Go to: Settings → Network → Wired → IPv4

Set:

  • Method: Shared to other computers

This turns your laptop into a DHCP server.

Step 3: Verify on Zybo

On Zybo terminal:

ifconfig

You should see an IP like:

192.168.42.x

Test connectivity:

ping google.com

If this fails:

  • Restart NetworkManager on laptop
  • Replug Ethernet cable
  • Check if firewall blocks DHCP

Compiling WiFi Driver Natively

The PYNQ image lacks support for RTL8188GU-based dongles.

Your D-Link adapter uses this chipset. Confirm with:

lsusb

Look for:

Realtek Semiconductor Corp. RTL8188GU

Clone Driver Source

We use:

https://github.com/lwfinger/rtw88

On Zybo:

sudo apt update
sudo apt install build-essential git dkms

git clone https://github.com/lwfinger/rtw88.git
cd rtw88
make
sudo make install

If compilation fails:

  • Ensure kernel headers are installed
  • Run:
uname -r

Then install matching headers.


Load the Module

sudo modprobe rtw88_8188gu

Verify:

dmesg | grep rtw

If the module does not load:

  • Check kernel version mismatch
  • Reboot and retry
  • Ensure Secure Boot is not interfering (rare in this case)

Connecting to WiFi

Scan networks:

iw dev wlan0 scan | less

Connect:

sudo nmcli device wifi connect "SSID_NAME" password "PASSWORD"

Verify:

ifconfig wlan0
ping google.com

You should now have wireless connectivity.


What You Now Have

  • Working PYNQ 3.0.1 on legacy Zybo
  • Native ARM-compiled WiFi driver
  • Wireless network access
  • Fully usable Jupyter environment

Access PYNQ notebook from browser:

http://<board-ip>:9090

Common Failure Points

IssueLikely CauseFix
No bootWrong PYNQ imageUse legacy-compatible build
Ethernet no IPDHCP not enabledEnable “Shared to other computers”
WiFi not detectedDriver missingCompile rtw88
Module loads but no wlan0Kernel mismatchReinstall headers
Slow performanceWeak PSUUse stable 5V supply

Why Native Compilation Matters

Cross-compiling drivers for Zynq is possible but complex. Compiling directly on ARM:

  • Avoids architecture mismatch
  • Ensures correct kernel symbol linking
  • Reduces debugging overhead

On constrained boards, native builds are often more predictable.


Final Notes

This setup is specific to:

  • Zybo xc7z010clg400-1
  • Community PYNQ 3.0.1 image
  • RTL8188GU WiFi chipset

If you are using:

  • Zybo Z7 → Use official PYNQ builds
  • Different WiFi dongle → Check chipset before compiling