raspberrypi / cmprovision

Provisioning system for CM4 products
BSD 3-Clause "New" or "Revised" License
88 stars 11 forks source link

CM4s not network booting after eMMC is erased #50

Closed djr-spectrummfg closed 1 month ago

djr-spectrummfg commented 1 month ago

I am able to use cmprovision to image new CM4 modules just fine. I am trying to reset some already-flashed modules to the fresh state so they can be reused for training - i.e. I don't want to reimage them directly over USB.

To do this, I used rpiboot and then used dd to copy zeros to the beginning of the eMMC, overwriting the partition table and boot partition contents completely. However, it seems this is not enough to get the modules to perform a network boot again. There must be some more state that has not been reset.

My cmprovision project is configured to update the EEPROM firmware to pieeprom-2024-01-22.bin (the settings are left at the defaults of BOOT_UART=0, WAKE_ON_GPIO=1, POWER_OFF_ON_HALT=0. Does updating the firmware in this way change disable network booting?

maxnet commented 1 month ago

Does updating the firmware in this way change disable network booting?

Correct. RPI firmware does not network boot by default. (CM modules have alternate non-default settings when they come out of factory).

Just create a new "wipe device" project with no image set, a firstboot script of:

dd if=/dev/zero of=${STORAGE} count=1

And an EEPROM configuration that includes:

BOOT_ORDER=0xf21 

And let cmprovision rpiboot the device. It runs by default on the cmprovision server, just attach both USB and Ethernet cable, and set the right jumper/switch on your CMIO board.

(That is if you really want to have it network boot again. Doing so is usually not really necessary. Can also let cmprovision rpiboot it and install what you want right away...)

djr-spectrummfg commented 1 month ago

Great, thank you.