I have a Jetson Orin Nano that is part of a 1/18th scale self-driving car for educational applications, which I bought from a third party.
When I first started it up, it worked fine. A NVIDIA splash screen would appear, and it would boot normally to an Ubuntu 20 desktop environment, which the vendor had customized to include some software specific to the car.
I made significant changes to the installed software while testing, and wanted to “roll back” to the car’s initial state. The vendor recommended that I remove the NVMe storage, plug it into an M.2 reader, and use dd or balenaEtcher to copy the contents of an .img file directly to the NVMe storage.
I did this, and after reinstalling the NVMe card, the Orin would not boot. The NVIDIA splash screen still appeared, but was followed by some error messages from the bootloader (sorry, I did not screenshot these).
Note: the vendor uses the production version of the Orin Nano, I think it is theJetson Orin Nano reference carrier board (P3768-0000)
.
I decided to try a clean install of JetPack 6 using the SDK Manager to re-flash the car. I prepared a dedicated Ubuntu 22.04 laptop for this purpose (no WSL, no Docker, clean Ubuntu 22 install) and followed along with the dialogs in the SDK Manager. It was easy to place the Orin Nano into recovery mode and it was recognized by SDK Manager right away. However the flashing process failed around 99%. I tried several times, and also tried manually running the flash.sh
script, but the process always failed (sorry, did not save the logs).
At this point, booting the car showed nothing at all. No error messages, no NVIDIA splash screen. I had not wired up the USB-serial converter yet so I don’t have any serial console logs from this part.
Finally I opted to revert to JetPack 5 (the vendor informed me they won’t support Ubuntu 22 anyway, so I need to stick with 20.04). I wiped my laptop, did a clean install, and tried installing 5.1.3. Same problem as before: the car can easily be placed into recovery mode and the flashing process starts without issue, but it always fails around 99%. I tried from the console with flash.sh
and it always fails while waiting for the car to reboot. The serial console logs indicate that the car has not successfully booted up. The problem must be very early in the boot process, because the initrd environment used to flash the NVMe card is never started.
Because the SDK manager kept failing, I tried flashing directly with:
./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -p "-c ./bootloader/t186ref/cfg/flash_t234_qspi.xml" -c ./tools/kernel_flash/flash_l4t_t234_nvme.xml --showlogs --network usb0 jetson-orin-nano-devkit nvme0n1p1
But this failed with Waiting for target to boot-up...
. Here are the logs (from host CLI and Orin Nano serial terminal):
2024-08-24_11-02_host_terminal_log.txt (276.5 KB)
2024-08-24_11-02_serial_terminal_log.txt (112.3 KB)
Later on, I tried directly re-flashing the QSPI only. This process completed without any error messages, but the Orin Nano still fails to boot or show a splash screen. Here are the host CLI transcript and serial terminal output:
qspi-reflash-host-log.txt (118.2 KB)
qspi-reflash-serial-log.txt (114.2 KB)
From the serial console, it appears that the error is VERY early in the boot process, so early that the UEFI bootloader written to QSPI is not loaded. The last message I see on the serial console is:
ˇ‰E/TC:?? 00 get_rpc_alloc_res:645 RPC allocation failed. Non-secure world result: ret=0xffff0000 ret_origin=0
E/LD: init_elf:486 sys_open_ta_bin(bc50d971-d4c9-42c4-82cb-343fb7f37896)
E/TC:?? 00 ldelf_init_with_ldelf:131 ldelf failed with res: 0xffff000c
ˇ·
The boot process halts there and nothing further happens. Even the cooling fan appears unable to spin up (and the Orin Nano will start getting quite hot if I don’t shut it off).
What am I doing wrong? Why is the failure so early in the process? Why won’t the UEFI bootloader run?
Thanks so much! I’m at a loss…I’ve been at it for 3 days no with nothing to show for it.