Can Ubuntu OS be ran from USB instead of microSD?

Currently I’m running 3 Jetson Nanos connected to POE and the Ubuntu OS is on microSD. The speed is very slow and have to wait for the circle cursor to stop moving for every click. I’m just wondering can I load Ubuntu onto a USB stick and run from there. From other places I’ve read USB is at least double the speed than microSD. I also have problem networking the Jetson Nanos together, there would be a message popup stating network not connected. I only have 1 wifi adapter would it help if I get 2 more wifi adapters for each of the boards? I’ve read somewhere the boards needs to be synced to the correct time for network to work. Any help is appreciated.


Welcome to the NVIDIA Developer forums! You posted in the community feedback area, I am going to move this over to the Jetson Nano category where we have staff there to answer Jetson related questions.


Great. Could you at least provide link to the conversation? There are so many posts I don’t know where my questions would go thanks.

You’re in the right place!

You cannot completely remove the microSD for the developer kit models. You can offload most of the boot to a USB hard drive though. Not sure if a thumb drive would work since it isn’t SATA over USB, but it might…but I have doubts that any kind of thumb drive would be any faster than the microSD card.

1 Like

So I don’t really know why my setup is running so slow. My MicroSD have 1TB memory. I thought the higher the memory it would run faster. Also every time there would be a popup at top of screen that says “Connection failed”, “Activation of network connection failed”. Do I need a wifi adapter for each of the boards? Thanks.


Just responding to the issue of running Ubuntu from USB - with release 32.5 (JP4.5), you can now have the entire rootfs on a USB stick and have your Nano boot it (via U-Boot) instead of the SD-card. We’ve also moved all of the boot components (except the kernel/ramddisk/rootfs) onto QSPI on Nano 2GB & 4GB devkits in R32.5. So that should (a) free up space in your rootfs and (b) speed up post-kernel boot somewhat. On the Nano 4GB (original) devkit, all 4 USB ports are USB3.x, but on Nano2GB, make sure you use the USB port that’s by itself (not the 2-port stack), as that’s the USB3.x port (and be sure to use a USB3.x drive, of course).

Note that you’ll need to enter U-Boot’s command prompt to change the boot_targets env var to remove ‘mmc1’, or just move ‘usb’ to the front, and then save your env changes out to QSPI so they’ll be in effect every boot.

printenv boot_targets
setenv boot_targets usb mmc1 pxe dhcp
printenv boot_targets

Leave your SD-card in, or you’ll get a 5-second delay & warning BMP splash screen about the missing SD-card (also a new 32.5 feature) if you have a HDMI display connected. If no HDMI, you can pop the SD-card out, there’ll be no BMP splash w/o HDMI.

Also, there’s a procedure in the Nano User’s Guide that shows the correct method of copying your SD-card rootfs to a USB drive. Look for ‘Flashing to a USB Drive’, or search the forums here, many people have done it.

Finally, your assertion that ‘I thought that the higher the memory it would run faster’ doesn’t apply to boot media like SD-cards and USB media. Increasing the DRAM size can help the OS run better/faster, but increasing the size of the storage device doesn’t affect any boot KPIs, it just increases the amount of room for the OS and apps, etc. Just like adding a larger HDD to your PC won’t make it run faster, necessarily, unless it also upgrades the I/O protocol (ATA → SATA, etc.).




Where is the actual physical memory which stores this? When using saveenv is it correct that this is not part of the SD card on dev kits? I only ask because if it is part of the SD card memory, then the environment telling the Jetson to look at USB would be missing.

As I suspected. I knew the other post about SD card being slower than USB couldn’t be wrong. I’m getting 3 USB and loading Ubuntu to it and also getting 2 more wifi adapters. Thank you for help.

I’ve run into problem. While updating programs in Ubuntu UI it resetted. Below message is from the computer. I’ve tried numerous times to reset and hope it goes back to UI but it doesn’t. Please help thanks.

mount: wrong fs type, bad option, bad superblock on /dev/mmcblk0p1,
missing codepage or helper program, or other error

          in some cases useful info is found in syslog - try
          dmesg I tail or so.

bash: cannot set terminal process group (-1): inappropriate ioctl for device
bash: no job control in this shell


Nano2GB/4GB (devkits) save the U-Boot env to the end of QSPI. Saving to SD-card, as you point out, would be useless for boot, as it may not be present, and in R32.5, the SD-card is like the HDD in a PC - it houses the OS, but no boot components (aside from the kernel/ramdisk). QSPI is now like the PC BIOS - it contains everything necessary to load and boot an OS, whether it’s on SD-card, USB, NVMe, network, etc.


1 Like

My experience with Jetson Nano so far have been less than satisfactory. Right now I have 2 bricked up kits that only display Nvidia insignia and one that only display the above message with Bash-4.3. I might have to reflash all 3. I would like to know if there’s any ways around that (any command I can input so it will start the program updata again). Thank you.

This is good news! What release does this start with for all in QSPI? I am guessing it is new with R32.5.

The above does tend to mean either the initrd or the actual rootfs partition are invalid (or perhaps boot content does not point at them). If you’ve changed anything related to where the pointer directs for searching for devices (USB or SD for example), then this would account for the problem (but it wouldn’t be a hardware failure). If you’ve followed the documentation for this, then the next step would be to provide a serial console boot log (and this can see boot even from stages before Linux ever starts). See:

No, I added the QSPI env save to the Nano devkit quite some time ago. I can’t tell you what release that was, but it was soon after launch.


I’ve typed help from the Bash-4.3# and whole bunch of command comes up, could you tell me what command to type to get the serial console boot log? I did not want to go through what the video suggested since I didn’t change anything on the hardware. This happened while I was updating software in Ubuntu, it suddenly just reset itself and then I arrived at bash and not able to continue the updating process. Thanks.

Wow, I think I found out why my setup is running so slow. The data transfer rate on a MicroSD is only up to 80mb/sec while the USB 3.x can transfer up to 5GBPS. I will have to reflash everything to USB thanks for helping.

Serial console means you’ve connected a serial UART and are recording from the host PC. See:

Nah, I’ve decided I’m going to reflash the MicroSDs and boot entirely from USB memory. When I first got everything and follow the Jetson Nano setup it says to load Ubuntu to MicroSD, that took an entire night to flash and install 3 MicroSDs, not knowing that the data transmission rate for MicroSD is only 80mbps. I think it’s why my setup is running so slow, and will continue to run slow for all future applications. I cannot have that.

For me actual transfer rate for MicroSD is up to 727mbps, and for USB up to 3gbps (5gpbs is theoretical limit but it is usually not achievable in practice). The difference is not noticeable for most everyday tasks, but if using swap or other workloads bound by disk speed, using USB SSD is worth it, since it is few times faster (and in some specific workloads it can be even more than order of magnitude faster).

By the way, I have some bad MicroSD cards which cannot exceed 80-90mbps and it indeed may take a while to flash them and bad cards may make the system feel slower than with HDD. If it takes entire night to flash and install 3 MicroSD cards, they are not good for Jetson Nano. High quality MicroSD cards are much faster and their data rate can exceed 700mbps.

I think even 700mbps will not suffice for the applications to run. I’m planning to run Pytorch and other AI applications, and they are data intensive will need fast data transmission. Also the way that MicroSD is mounted is not efficient for mount/dismount memories. I have a acrylic rack and have to screw in the kits, now I have to unscrew the kits and then put in the MicroSD cards, that’s just a lot of headache when I could have just plugged USB through the back.