Hmm, nice approaches.
If I would have to do that I would simply use rpiboot (https://github.com/raspberrypi/usbboot) , run the Pi5 as usb-mass-storage-gadget and let rpiimager flash the OS to the NVMe on the Pi5 DUT.
DON'T connect the Pi5!!!! Just connect a good USB-C cable to your host for now!
Start rpiboot from your host (for me the host was a CM4IO in this example, target Pi5 has a 256GB NVMe connected) and wait for below message to be displayed
In case of an RPi5 there is no EMMC_DISABLE / nRPIBOOT jumper; you will have to press and hold the power button when connecting the USB-C cable to the Pi5 target. Make sure to release the button (asap) after you've connected the USB-C cable
Your host will now enumerate a new USB device!
Checking what is there on USBWill show you the Pi5 MSD as ‚Bus 001 Device 006: ID 0a5c:0104 Broadcom Corp. Raspberry Pi multi-function USB device‘.
Now start RPiimager, select Pi5, the OS of your choice and under target select the NVMe on the Pi5 DUT. Flash the OS image as usual and proceed with your setup.
Looks more simple to me than jumping through the loops of flashing uSD -> NVMe etc
If I would have to do that I would simply use rpiboot (https://github.com/raspberrypi/usbboot) , run the Pi5 as usb-mass-storage-gadget and let rpiimager flash the OS to the NVMe on the Pi5 DUT.
DON'T connect the Pi5!!!! Just connect a good USB-C cable to your host for now!
Start rpiboot from your host (for me the host was a CM4IO in this example, target Pi5 has a 256GB NVMe connected) and wait for below message to be displayed
Code:
pi@raspberrypi:~/usbboot $ sudo ./rpiboot -d mass-storage-gadgetRPIBOOT: build-date 2025/12/17 pkg-version local c041bb57Please fit the EMMC_DISABLE / nRPIBOOT jumper before connecting the power and USB cables to the target device.If the device fails to connect then please see https://rpltd.co/rpiboot for debugging tips.Loading: mass-storage-gadget/bootfiles.binUsing mass-storage-gadget/bootfiles.binWaiting for BCM2835/6/7/2711/2712...Code:
Sending bootcode.binSuccessful read 4 bytes Waiting for BCM2835/6/7/2711/2712...Second stage boot serverFile read: mcb.binFile read: memsys00.binFile read: memsys01.binFile read: rp1c0fw1.binFile read: memsys02.binFile read: rp1c0fw2.binFile read: memsys03.binFile read: bootmainLoading: mass-storage-gadget/config.txtFile read: config.txtLoading: mass-storage-gadget/boot.imgFile read: boot.imgSecond stage boot server doneChecking what is there on USB
Code:
pi@raspberrypi:~/usbboot $ lsusbBus 001 Device 006: ID 0a5c:0104 Broadcom Corp. Raspberry Pi multi-function USB deviceBus 001 Device 003: ID 1a40:0101 Terminus Technology Inc. HubBus 001 Device 002: ID 0424:2514 Microchip Technology, Inc. (formerly SMSC) USB 2.0 HubBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubpi@raspberrypi:~/usbboot $ Now start RPiimager, select Pi5, the OS of your choice and under target select the NVMe on the Pi5 DUT. Flash the OS image as usual and proceed with your setup.
Looks more simple to me than jumping through the loops of flashing uSD -> NVMe etc
Statistics: Posted by aBUGSworstnightmare — Wed Dec 17, 2025 7:18 am