π¦ S01E12 β I, Frankenstein β
"It's not dead. I'm not dead. You shut up." β the Pi, paraphrased
Plot
Verdict at session-end 2026-05-11: Pi Zero 2 W appears DOA. All LEDs dark. Order replacement. Verdict next morning: Pi flashes PINN multiboot OS, boots fine. Verdict at episode close: the Pi was alive the whole time. Our SD card was broken. And we believed a false claim about LEDs.
Cold open β
End of S01E11. We'd just shipped the entire bootstrap pipeline. Mac side worked: Multipass VM, debootstrap, partitioning, dd, eject. The whole thing was beautiful. We popped the SD into the Pi, plugged power, and⦠nothing. Black silicon. No LEDs. The board looked like it had been shot.
We filed #386: Hardware diagnosis + replacement plan, listed the diagnostic ladder (PSU swap, cable swap, multimeter check, replacement parts), closed the session, ordered a backup board.
A confident bullet in that issue read:
"Without the SD, the red PWR LED should come on solid. If it doesn't, the board is fried."
That bullet was the trap.
Plot twist β
User in the morning:
"Turns out it's not dead. You fucked up somewhere in the image creation. I just flashed PINN multiboot to it and it booted!"
The Pi worked. Always had. We'd been wrong about the symptom.
Specifically: the Pi Zero 2 W has ONE LED, not two. Just a green ACT LED. No red PWR. So "no red light" wasn't a sign of death β there's no red light to begin with. The board was idling silently because it couldn't read our SD card.
This is one of those moments where the rabbit hole is your own confident assertion.
The receipt β
# What we should have done
WebFetch raspberrypi.com/documentation β confirm LED count
# What we did
recalled from training β declared 2 LEDs (1 red, 1 green)
β user looked at board β "no red light" β misdiagnose β close sessionβ feedback_fact_check_hardware_claims.md was written immediately after.
Boss fight: where's the bug? β
The Pi reads bootcode.bin from the SD card's FAT BOOT partition. If bootcode.bin isn't there, or isn't at the right location, the mask-ROM has nothing to load. No GPU init. No kernel. No LED activity. Looks dead, isn't.
We mounted PINN's working SD card on the Mac, ran ls /Volumes/RECOVERY/, and compared against the layout of our broken SD card's staging directory.
The two layouts side-by-side
PINN (working):
/Volumes/RECOVERY/
βββ bootcode.bin β at root
βββ start.elf β at root
βββ start4.elf β at root
βββ fixup.dat β at root
βββ fixup4.dat β at root
βββ kernel8.img β at root
βββ bcm2710-rpi-zero-2-w.dtb β at root
βββ overlays/ β at root
βββ config.txt β at root
βββ cmdline.txt β at rootOur SD (broken):
/Volumes/BOOT/
βββ config.txt β at root
βββ cmdline.txt β at root
βββ boot/
βββ bootcode.bin β NESTED!
βββ start.elf β NESTED!
βββ start4.elf β NESTED!
βββ kernel8.img β NESTED!
βββ bcm2710-rpi-zero-2-w.dtb β NESTED!
βββ overlays/ β NESTED!The mask-ROM (in silicon) can't find bootcode.bin if it's nested in boot/. Stage 1 fails. Nothing else even starts.
Why was it nested? Because our build-rootfs.sh script created $FW_STAGE/boot/, copied firmware files in there, tarred boot/ as the top-level entry of boot.tgz, and then build.sh extracted the tarball verbatim onto the SD's FAT partition. Whoever wrote the original script (π us) probably mirrored the Debian rootfs convention of /boot/firmware/. But the SD's FAT partition has no rootfs context. Files there go at the root.
Resolution β
E13 was filed: #387 β bootcode.bin must live at FAT root, not /boot/ subdir. Issue #386 closed.
Lessons banked β
Fact-check hardware claims. Saved as
feedback_fact_check_hardware_claims.md. When asserting any physical-board claim (LEDs, ports, voltages, button locations), verify against primary docs before typing the claim. A 30-second webfetch beats a 10-hour rabbit hole.LED state β power state on the Pi Zero 2 W. Saved as a permanent reference memory. The board has exactly one green ACT LED. "Off" doesn't mean "no power" β it means "no SD activity." To check power, use a USB power meter inline. To check boot, use the LED blink pattern (the Pi firmware uses encoded blink codes for specific errors).
Direct observation beats recall. If the user sees something and you don't believe it, they're right by default. Update your memory, don't argue.
Final scene β
"I am ALIVE." β the Pi, finally allowed to boot once
bootcode.binlands at the FAT root.
β Next: E13 β Stage One, Where Art Thou?
Source links β
- Raspberry Pi Zero 2 W Boot EEPROM docs
- #386 β Hardware diagnosis + replacement plan (closed)
- #387 β bootcode.bin must live at FAT root
- Commit
ef0aa1fβ stage boot firmware at FAT root
Memes β
"It's just a model." β Patsy, Monty Python and the Holy Grail
The Pi was always real. The diagnosis wasn't.