Jetson xavier nx devkit cannot be flashed (on NVMe)

Hello,
I have been trying to flash my Jetson xavier nx devkit (official devkit no emmc) with R35.4.1 to no avail.
for some reason the flash scripts (tried flash.sh l4t_initrd_flash and sdkmanager) do not write to the SSD. if I point to the SDCard it erase and rewrite successfully (and takes its time to write), with nvme0n1p1 option the scripts exit relatively fast and the SSD is untouched. then it fails with ssh not ready (and blinking cursor on the display)

I verified that the board can read the SSD by booting on the SD card and checking the SSD (i can format, create partition and even create files inside).

if I try to force it to write the /APP using

sudo ./flash.sh -r -k APP jetson-xavier-nx-devkit nvme0n1p1

it gets stuck at waiting for the applet to run --isapplet command

FYI flashing and booting on the same SSD worked for previous releases. updating to latest vesion (by updating the repo file) is what broke the boot and led me to reflash

Hi @sayf.eddine.hammemi ,
You can try with kernel flash instead or massflashing. You can check here for more details. But the command can look like this for massflash:

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1 \
-c ./tools/kernel_flash/flash_l4t_nvme_custom.xml -S 458GiB --showlogs \
--no-flash --massflash 5 --keep  jetson-xavier-nx-devkit-emmc nvme0n1p1

And then to flash it:

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1 \
-c ./tools/kernel_flash/flash_l4t_nvme_custom.xml -S 458GiB --showlogs \
--flash-only  jetson-xavier-nx-devkit-emmc nvme0n1p1

You will need to change the params to you case, for example the -S size, and the flash_l4t_nvme_custom.xml patition layout like overe here.

Regards,
Andres
Embedded SW Engineer at RidgeRun
Contact us: support@ridgerun.com
Developers wiki: https://developer.ridgerun.com/
Website: www.ridgerun.com

thank you for your message, I tried the first command which worked, but flashing fails with weird error

Waiting for target to boot-up...
Waiting for target to boot-up...
Waiting for device to expose ssh ......RTNETLINK answers: File exists
RTNETLINK answers: File exists
Run command: if [ -f /qspi/l4t_flash_from_kernel.sh ]; then USER=root /qspi/l4t_flash_from_kernel.sh --no-reboot --qspi-only ; fi on root@fe80::1%usb0
blockdev: cannot open /dev/sdd: No medium found
[ 0]: l4t_flash_from_kernel: Starting to create gpt for emmc
Active index file is /mnt/piratos/LAKE/nvidia/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/mfi_jetson-xavier-nx-devkit/tools/kernel_flash/images/internal/flash.idx
Number of lines is 67
max_index=66
writing item=43, 6:0:primary_gpt, 512, 19968, gpt_primary_6_0.bin, 16896, fixed-<reserved>-0, 7ffef8f47e298fd2aa25c5248f98190e3ea1ccee
Error: Error opening /dev/sdc: No medium found
SSH is not ready
Error flashing non-qspi storage
Error flashing qspi

why it is trying to create gpt for emmc then /dev/sdc … ? curious

To me it seems like qspi flash is failing, could you try a simple flash to emmc with the following command:

sudo ./flash.sh jetson-xavier-nx-devkit mmcblk0p1

To verify if the emmc and qspi can get flashed. Then try the massflash again. The other thing is to also plug in serial to get logs from the jetson during flashing

it works fine when I point to sdcard (mmcblk0p1) it flahes the qspi and write the APP to the sdcard, but keeps ignoring the ssd

You can try to get the serial logs, and after the massflash fails, via serial or if available keyboard and display. If you dont reboot the Jetson it will keep the temp fs that it set up to do the flashing. You can verify with lsblk if the nvme is detected or not, and if so try to mount it.

Hello, coming back after a couple of day of trying, nothing worked. normal flash or initrd flash. nothing seems to be able to write anything to the ssd. but I found a solution finally with trial and error
step 1: acquire pcie to usb and plug the ssd to your host machine
step2: use etcher to burn the sd card image from nvidia website to your ssd
step3: mount the first partition and modify /boot/extlinux/extlinux.conf replace /dev/mmcblk0p1 with /dev/nvme0n1p1 in the kernel command
step3: flash the qspi

 sudo ./flash.sh -c ./bootloader/t186ref/cfg/flash_t194_uefi_qspi_p3668.xml  jetson-xavier-nx-devkit-qspi nvme0n1p1

step4: boot the jetson and enjoy, (at least for me).

BTW: when you flash the jetson and the script reboots it and wait for ssh to be ready but you get blinking cursor, I checked the serial console and it seems it just booted to the initrd and opened a bash shell and waiting. hope that helps someone

1 Like

Perfectly it works…THANK YOU