I'm trying to run u-boot on a Pi Zero W, but after powering up, the Pi shows only the rainbow screen.

I used these instruction, but with a different config file, configs/rpi_defconfig.

I also tried the different methods, but had the same result, the rainbow screen.

May be someone knows the right configuration of U-Boot for the Pi Zero W? Or maybe the Pi Zero W isn't supported by U-Boot?

The software version is: buildroot 2017.05 which contains U-boot 2017.03.

Update 2017-06-30

I has found out u-boot doesn't support Pi Zero W and u-boot team doesn't have any plans about adding this support. So I decided to fix it and publish u-boot patch to comunity as well.

U-boot supports Pi A+. So if I understand key differences between Pi Zero and Pi A+ (like connection between BCM2835 and SD card, BCM2835 and HDMI and etc.), I will able to do it with less problems.

So right now I have only 2 question:

Is there full schematic of RPi A+ and RPi Zero W?

Or what is the key difference between RPi A+ and RPi Zero W?

Update 2017-10-19

I've made a path to support the RPi Zero W. It passed the review, but it was not accepted into master branch. To use it, download and apply:

git apply U-Boot-v2-1-1-add-support-for-Raspberry-Pi-Zero-W.patch

and after type to configure:

make rpi_0_w_defconfig

Update 2017-11-28

I fixed the build problem, you can download a new patch from link above or this one

  • Did you succeed? I'm in the same situation.
    – Udo G
    Oct 13, 2017 at 20:04
  • yes, see update part of the post
    – dessel
    Oct 19, 2017 at 8:36
  • I tried with the latest u-boot version (2018.03), copied u-boot.bin on the sd-card, renaming it kernel.img. It's not booting. The green light is flashing 7 times (kernel.img not recognized). Have you tried with the latest u-boot version? Which version where you using?
    – Rémi
    Apr 18, 2018 at 15:11
  • @Rémi, when I used it at the last time, my version was 2018.01
    – dessel
    Apr 19, 2018 at 13:19

3 Answers 3


No, there are no full schematics for RPi A+ or RPi Zero W and there won't be according to the statement of Ben Nuttall (foundation employee):

Raspberry Pi has never been open hardware. All our software is open source, and we release as much of the hardware schematics as we can.

But there are device tree sources for the firmware and personally i made a RFC patch series on linux-rpi-kernel.

Important differences regarding to U-Boot:

  • both boards have different revisions in the OTP of the BCM2835 (mapping entry for RPI Zero W is currently missing in U-Boot)
  • RPi Zero has Bluetooth which is connected to UART0
  • RPi Zero has Wifi which is connected to MMC/SDIO interface

I answer to myself question, sorry for that.

My patch was accepted into the u-boot main branch, and now if you want t on to run u-boot on a Pi Zero W, you can just use u-boot main repository.

  • Hi, have you tested this with QEMU?
    – JustWe
    Jan 13, 2020 at 13:14

I downloaded u-boot from DENX and applied the patch you created, which created the rpi_0_w_defconfig.

$ gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609

I created a build script in the /uboot directory:

export PATH=$PATH:/usr/gcc-linaro-7.1.1-2017.08-x86_64_arm-linux-gnueabihf/bin
which arm-linux-gnueabihf-g++
make distclean
make clean
make mrproper
make -j12 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- rpi_0_w_defconfig all

I applied the patch successfully, however when I build rpi_defconfig I am successful. When I build rpi_0_w_defconfig I receive the following error from make:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- rpi_0_w_defconfig all
from arch/arm/lib/asm-offsets.c:15:
./arch/arm/include/asm/barriers.h:33:24: error: operator '>=' has no left operand
 #if __LINUX_ARM_ARCH__ >= 7
Kbuild:64: recipe for target 'arch/arm/lib/asm-offsets.s' failed
make[2]: *** [arch/arm/lib/asm-offsets.s] Error 1
Makefile:1332: recipe for target 'prepare0' failed
make[1]: *** [prepare0] Error 2
make[1]: *** Waiting for unfinished jobs....
  HOSTLD  scripts/dtc/dtc
Makefile:461: recipe for target '__build_one_by_one' failed
make: *** [__build_one_by_one] Error 2

Any suggestions?

update 2017-11-12

U-Boot buildroot-2017.08.1 successfully builds with patch applied through git with both board names "rpi" and "rpi0". Once I applied the patch in the source directory buildroot/ I was also able to successfully build with board name "rpi_0_w".

The patch in the DENX ftp download was placed in uboot/config/ rather than the source directory uboot/. Upon moving to uboot/ and applying the patch using Git, I received the following errors with regard to the device tree compiler and the device tree binaries:

  SYM     u-boot.sym
  DTC     arch/arm/dts/bcm2836-rpi-2-b.dtb
  DTC     arch/arm/dts/bcm2835-rpi-a-plus.dtb
  DTC     arch/arm/dts/bcm2835-rpi-b.dtb
  DTC     arch/arm/dts/bcm2837-rpi-3-b.dtb
  DTC     arch/arm/dts/bcm2835-rpi-b-plus.dtb
  DTC     arch/arm/dts/bcm2835-rpi-b-rev2.dtb
  DTC     arch/arm/dts/bcm2835-rpi-a.dtb
  DTC     arch/arm/dts/bcm2835-rpi-zero-w.dtb
arch/arm/dts/bcm2835-rpi-zero-w.dtb: ERROR (phandle_references): Reference to non-existent node or label "alt3"

ERROR: Input tree has errors, aborting (use -f to force output)
scripts/Makefile.lib:319: recipe for target 'arch/arm/dts/bcm2835-rpi-zero-w.dtb' failed
make[3]: *** [arch/arm/dts/bcm2835-rpi-zero-w.dtb] Error 2
dts/Makefile:32: recipe for target 'arch/arm/dts/bcm2835-rpi-zero-w.dtb' failed
make[2]: *** [arch/arm/dts/bcm2835-rpi-zero-w.dtb] Error 2
Makefile:876: recipe for target 'dts/dt.dtb' failed
make[1]: *** [dts/dt.dtb] Error 2
Makefile:461: recipe for target '__build_one_by_one' failed
make: *** [__build_one_by_one] Error 2
  • Could you tell me which buildroot version did you use?
    – dessel
    Nov 7, 2017 at 13:45
  • 1
    Welcome to Raspberry Pi! If you have another question, please ask it by clicking the Ask Question button.
    – Ghanima
    Nov 7, 2017 at 14:31
  • @Barrett, see updates of my post, the u-boot master branch has git commits which clashed with my patch.
    – dessel
    Nov 28, 2017 at 8:22
  • @dessel patch 3-1-1 in u-boot/ directory from git.denx.de successful. "<stdin>:5:10: fatal error: bcm283x-rpi-usb-host.dtsi: No such file or directory" from buildroot/ with patch listed in make nconfig -> Bootloader -> U-Boot -> Custom U-Boot Patch, and board name as rpi_0_w.
    – Barrett
    Nov 29, 2017 at 22:25
  • @Barrett - you can try to remove line the #include "bcm283x-rpi-usb-host.dtsi from file bcm2835-rpi-zero-w.dts Are you sure you updated the u-boot master branch?
    – dessel
    Nov 30, 2017 at 10:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.