PiZZa v0.1-preview — Zephyr on the Raspberry Pi Zero 2 W
Pre-releasePre-built Zephyr image for the Raspberry Pi Zero 2 W, ready to drop onto a
PINN-imaged microSD card.
Install steps live in jetpax/PiZZa. TL;DR:
git clone https://github.com/jetpax/PiZZa.git
cd PiZZa
./install-to-sdcard.sh /Volumes/RECOVERY <path-to-zephyr.bin>Then eject, insert into the Pi, and plug a micro-USB cable from the Pi to your
laptop. The Pi powers itself from the cable and presents a USB-CDC ACM
serial device (/dev/tty.usbmodem* on macOS, /dev/ttyACM0 on Linux, COM port
on Windows). Mini-UART @ 115200 on GPIO 14/15 is the fallback / log console.
A peace-symbol neofetch banner shows up on every host re-connect and pizza
gives you a device summary.
Build provenance
- Source:
jetpax/zephyr@026e063c596(branchpizza-v0.1, offrpi-zero-2w-portHEAD726037c7a94) - hal_broadcom:
jetpax/hal_broadcom@5e1318dd - Toolchain: Zephyr SDK 1.0.1 / aarch64-zephyr-elf-gcc 14.3.0
- Sample:
samples/boards/raspberrypi/rpi_zero_2w_pizza
Built with:
EXTRA_ZEPHYR_MODULES=$HOME/zephyrproject/modules/hal/broadcom \
west build -p always -b rpi_zero_2w \
-s samples/boards/raspberrypi/rpi_zero_2w_pizzaImage checksum
b0b7d56e00e6137bd0e6902810ed3e5e2db095dafa7abe5b45abbd8507e3a991 zephyr.bin
Verify after download:
shasum -a 256 -c zephyr.bin.sha256What's enabled
- BCM2710 SoC + rpi_zero_2w board
- Primary console: USB-CDC ACM over the micro-USB port
- Fallback console: mini-UART (uart1) on GPIO 14/15 @ 115200
- microSD card (external slot) via BCM283x SDHost — mountable FAT / LittleFS
- SDIO Wi-Fi (CYW43439) via brcmfmac — WPA2-PSK scan / connect / RSSI / multicast RX
- DMA, SPI, I²S
- HWINFO (64-bit OTP board serial via VC firmware)
- VC die-temperature sensor
- Networking: TCP/IP, DNS, DHCPv4, HTTP server
- Shell with
pizza(neofetch-style device summary),device list,kernel,
hwinfo,sensor,wifi,net,mount, plus per-subsystem commands.
What's not in this image
- SMP (single-core only — upstream Zephyr BCM2710 limitation, on the roadmap)
- Bluetooth (CYW43439 BT side not exercised)
- HDMI / display
- USB host (the USB-OTG port runs in device mode for the CDC console)
Hardware compatibility
- Raspberry Pi Zero 2 W — ✅ supported and tested.
- Original Pi Zero / Pi Zero W — ❌ not compatible (BCM2835 / ARM11 ARMv6 32-bit; this image is aarch64).
- Pi 3 / 3B / 3B+ —
⚠️ untested. Same Pi 3 family / BCM27xx silicon; likely needs config tweaks for the different Wi-Fi blob and Ethernet PHY. - Pi 4 / Pi 5 — use the upstream
rpi_4b/rpi_5boards, not this image.
Known limitations
- Pi runs at the BCM2710's idle clock (~600 MHz) when powered from a laptop
USB-2 port. Use a separate 5 V supply for higher sustained clock if you're
CPU-bound. - Boot to shell takes ~6 s (Pi firmware + Wi-Fi firmware upload).
- CDC-connect banner uses a colour-matched fake
uart:~$placeholder; the
real shell takes over the moment you press a key (see source comments in
samples/boards/raspberrypi/rpi_zero_2w_pizza/src/main.cfor the
shell-from-non-shell-thread rationale).
Source PRs / RFC
This image bundles the contribution that's being staged into upstream Zephyr.
The umbrella RFC is at
zephyrproject-rtos/zephyr#109880.
Three smallest PRs already open:
| PR | What |
|---|---|
| #108775 | drivers: timer: arm_arch: allow custom interrupt controller |
| #108776 | drivers: serial: uart_bcm2711: return -1 from poll_in when no char |
| #108777 | drivers: serial: uart_bcm2711: read-modify-write IER bits |
The remaining ZP-3..16 PRs (board, drivers, brcmfmac) are staged on branches
at jetpax/zephyr pending the RFC
outcome.
License
Apache-2.0 for the Zephyr binary content. The brcmfmac firmware bytes inside
zephyr.bin come from
rpi-distro/firmware-nonfree
under their original non-redistributable license, fetched via
west blobs fetch hal_broadcom at build time and compile-time-included in the
kernel image.