
About a month ago, I got tired of waiting for the
newest member of
the Raspberry product
lineup
to be sold in Mexico, and I bought it from a Chinese reseller through
a big online shopping platform. I paid quite a bit of premium (~US$85
instead of the advertised US$15), and got it delivered ten days
later

Anyway, it s known this machine does not yet boot mainline Linux. The
vast majority of ARM systems require the bootloader to load a
Device
Tree file, presenting the hardware characteristics map. And while the
RPi Zero 2 W (hey what an
awful and confusing naming scheme they
chose!) is mostly similar to a RPi3B+, it is not quite the same
thing. A kernel with RPi3B+ s device tree will refuse to boot.
Anyway, I started digging, and found that some days ago
Stephan
Wahren sent a patch to the linux-arm-kernel mailing
list
with a matching device tree. Read the patch! It s quite simple to read
(what is harder is to know where each declaration should go, if you
want to write your own, of course). It basically includes all basic
details for the main chip in the RPi3 family (BCM2837), pulls in also
the declarations from the BCM2836 present in the RPi2, and adds the
necessary bits for the USB OTG connection and the WiFi and Bluetooth
declarations. Registers the model name as
Raspberry Pi Zero 2 W,
which you can easily see in the following photo, informs the kernel it
has 512MB RAM, and Well, really, it s an easy device tree to read,
don t be shy!

So, I booted my RPi 3B+ with a
freshly downloaded Bookworm
image,
installed and unpacked
linux-source-5.15, applied Stephan s patch,
and added the following for the DTB to be generated in the arm64 tree
as well:
--- /dev/null 2022-01-26 23:35:40.747999998 +0000
+++ arch/arm64/boot/dts/broadcom/bcm2837-rpi-zero-2-w.dts 2022-02-13 06:28:29.968429953 +0000
@@ -0,0 +1 @@
+#include "arm/bcm2837-rpi-zero-2-w.dts"
Then, ran a simple
make dtbs, and Failed, because
bcm283x-rpi-wifi-bt.dtsi is not yet in the kernel .
OK, no worries: Getting wireless to work is a later step. I commented
out the lines causing conflict (10, 33-35, 134-136), and:
root@rpi3-20220212:/usr/src/linux-source-5.15# make dtbs
DTC arch/arm64/boot/dts/broadcom/bcm2837-rpi-zero-2-w.dtb
Great!
Just copied over that generated file to /boot/firmware/, moved the SD
over to my RPiZ2W, and behold! It boots!
When I bragged about it in
#debian-raspberrypi, steev suggested me
to pull in the
WiFi patch, that has also been
submitted
(but not yet accepted) for kernel inclusion. I did so, uncommented the
lines I modified, and built again. It builds correctly, and again
copied the DTB over. It still does not find the WiFi;
dmesg still
complains about a missing bit of firmware (
failed to load
brcm/brcmfmac43430b0-sdio.raspberrypi,model-zero-2-w.bin). Steev
pointed out it can be downloaded from
RPi Distro s GitHub
page,
but I called it a night and didn t pursue it any further ;-)
So I understand this post is still a far cry from saying
our
images properly boot under a RPi 0 2 W ,
but we will get there