Jetson Orin Nano does not boot after flashing Jetpack 6

The QSPI fails to erase. It’s easy to see in the log above as the (obviously incorrect) erase operation takes 1s when in reality it should take much longer (maybe even up to 30 seconds? I don’t recall from the top of my head now)

Same problem as described here: Flash.sh (and tegraflash.py) fails to erase QSPI on non-SDK modules (P3767 Orin Nano 8GB)

The problem is that the protection bits are set in the QSPI (This is factory default according to the datasheet). And the code in mb2 not only fails to clear these bits before erasing, nor does it check if the erase completes successfully or fails.

The workaround is to boot into Linux which will just immediately clear those protection bits in the QSPI. Then they never get set again and you can reflash it as many times you want from mb2.

Now, the problem is that QSPI is only exposed to Linux if you boot Linux directly from recovery mode (RCM). If Linux is booted from the QSPI flash the flash itself it not visible to Linux. Unclear to me why this is the case.

The l4t_initrd_flash.sh script will do this and use Linux to flash the QSPI in which case you would never see this problem.