Your log shows a repeated QSPI corrupt memory error (see “NvTbootFailControlDoFailover
”). This in turn is part of QSPI memory.
The background is that SD card models of Jetsons only put the rootfs on the SD card. Jetsons in general do not have a BIOS, and so the equivalent of what a BIOS does has to be performed in software. That software has its own partitions (even if you can’t see them). eMMC models tend to put that content in ordinary eMMC partitions, but SD card models put that content in QSPI memory instead (which is located on the module itself).
Whenever you do a “normal” flash of any Jetson it is flashing everything. This means it is similar to flashing the BIOS of a PC’s motherboard, the bootloader, and the actual operating system. That content (for your case) is basically early boot software (before the bootloader even runs). You can’t really “brick” a Jetson since it does not have a BIOS, but it does mean you need to run flash software from another PC (in this case running Ubuntu 18.04).
When a Jetson is in recovery mode it becomes a custom USB device (and the micro-OTG port is used for flashing). Custom USB devices need their own driver, and the flash software (underneath the other layers) is called the “driver package”. When you download and install JetPack/SDK Manager to your host PC, this is part of the content it installs. JetPack is a GUI frontend to flashing, and the SDKM is a network utility on top of that. The actual content flashed is “Linux for Tegra” (L4T). Flashing the module itself will flash the QSPI. You’d just use the same release as that which created the SD card.
JetPack and L4T releases are tied together. Knowing which release of either will tell you the release of the other. You can check here for releases:
So basically you’d download and install sdkmanager
to your Ubuntu 18.04 host PC. Then you’d put your Nano in recovery mode, with the micro-B USB cable connecting it to the host PC. Finally, you could flash it. JetPack/SDKM might need to be told you don’t want to install extra software to the host PC (which can be used if you are developing), or that you don’t want to install extra packages to the Jetson (it might run out of storage space on some models). In general though, the docs for the particular release are on the same web page as that particular release.
When you install the flash software to the host PC, then it will create this directory:
~/nvidia/nvidia_sdk/JetPack_...version.../Linux_for_Tegra
You can run “sdkmanager
” as a regular user for the GUI, but you can also perform just flash steps (such as flashing QSPI) on command line if the Jetson has been connected to the PC in recovery mode. Within that “Linux_for_Tegra/
” subdirectory you will notice several “.conf
” files (see “ls *.conf
” when at the “Linux_for_Tegra/
” location). A typical Nano command line flash goes something like this from that location after consulting for the “.conf
” file matching your Jetson model (you might need to consult those docs for the 4GB model):
sudo ./flash.sh jetson-nano-qspi-sd mmcblk1p1
(thus there is a file “jetson-nano-qspi-sd.conf
”)
Note that eMMC models flash everything. SD card models often have the user create the SD card separately from flashing the Nano since QSPI is on the module itself and that content does not go on the SD card.
Incidentally, the first line of file “/etc/nv_tegra_release
” tells you the L4T release you have. You could mount your SD card on the host PC and examine that before downloading SDKM in order to get the same release. If you don’t mind changing release and losing the SD card, then you could ignore that and just get the most recent release compatible with the Nano.