Trying to get NVMe flashed on Jetson Orin Nano via VirtualBox Ubuntu 22.04 LTS

Hi NVIDIA Supporters :-)

Happy new year to you all :-)

I just got my new Jetson Orin Nano developer kit (upgraded to super). I use Debian12 as my main PC system, and I managed to get the my 128 GB sdcard flashed and have performed the initial firmware upgrades, so that I am now running Jetpack 6.1 via a 128 GB sdcard on my Jetson Orin Nano.

My next step was to have everything running from my 2TB Samsung MVNe 990 Pro drive. This drive shows up fine on my Jetson Orin Nano (via Disk manager), when booting from sdcard.

As I don’t have a spare PC for the old Ubuntu 22.04 installation, I created a VirtualBox PC, installed Ubuntu 22.04 LTS, installed Nvidia SDK Manager. After booting Jetson Orin Nano in recovery mode, SDK manager detected the board - and I went all the way to flashing, where SDK manager complains about the USB connection. I am attaching the log file.

SDKM_logs_2025-01-01_16-48-22.zip (315.8 KB)

Can you see what I am doing wrong?

Are there any alternative ways of getting the NVMe setup?

  • E.g. from within Jetpack 6.1OS (booted from sdcard)
  • E.g. flashing the system using balenaEtcher to NVMe using NVMe to USB adapter.

Thank you for any ideas and help :-)
Thomas

Update 1:

So I found that I can install balenaEtcher on Nvidia Jetson Nano by building the ARM version myself - I following instructions: https://github.com/futurejones/balena-etcher-arm

After downloading Jetpack 6.1 cdcard image - I flashed it to my system NVMe drive, resized APP partition to full size, powered down Jetson Nano - removed SD card - and booted - but seems boot loader is still expecting to find image at /dev/mmcblk0p1 (sdcard) instead of NVMe disk /dev/nvme0n1p1 - will investigate further later :-)

Update 2:

And finally I found that I can mount /dev/nvme0n1p1 to e.g. /mnt/nvme0n1p1.
Then as super user I can modify /mnt/nvme0n1p1/boot/extlinux/extlinux.conf, and change:

root=/dev/mmcblk0p1
root=/dev/nvme0n1p1

And then it boot from NVMe without sdcard or any need to using SDK Manager to flash it.

If you have a M.2 to USB adaoter, this should make it possible to flash the NVMe SSD on any linux system:

  1. Insert NVMe M.2 SSD into an M.2 to USB adapter.
  2. Use balenaEtcher to flash Jetpack sdcard image to NVM’e.
  3. Mount partition “nvme0n1p1” (use Disk manager to identify it name on your linux system)
  4. On the mounted partition, modify /boot/extlinux/extlinux.conf, so that root=/dev/mmcblk0p1 is placed with root=/dev/nvme0n1p1

Insert M.2 SSD into Nvidia Jetson Nano, boot and follow guide with display / keyboard attached.
(I will test this scenario tomorrow when my M.2 to USB arrives).

2 Likes

Hi @TRJensen,
Sorry for the delayed response.
And thank you so much for sharing your updates.

It’s great to hear that you got to figure out how to flash NVMe with the JetPack image.

Just to answer your original question regarding the VM usage;

Can you see what I am doing wrong?

I tried the same thing on my Windows 11 machine with VirtualBox and found that the problem is that the VM (Ubuntu) somehow cannot sense the device (Jetson) goes through reset (thus dropping USB connection) while the host can sense the USB connection drop, even when I set pass-through for the device in VirtualBox’s USB setting.
During the flash process, Jetson resets itself 3-4 times, but due to the above limitation, it fails to re-establish the USB connection, thus SDK Manager shows the error message like you saw.

As a twisted hack, I performed manual USB plug-off and plugged back in every time the host sensed the USB connection drop, forcing the VM to re-establish the USB connection, then I got to successfully flash Jetson using SDK Manager running inside a VM. https://www.youtube.com/watch?v=Uj_uiZe8xbY

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.