Low writing speed with USB3.2 memory stick

I’m working with a Jetson Orin Nano hoping to store data on a memory stick using the full speed offered by USB3.2.

The memory stick is a “SanDisk extreme pro dual drive”. It’s supposed to be a USB3.2 Gen2x1 device, compatible with the Jetson Orin Nano capability. I do see the device listed as “3.2” in lsusb, and speed of either 10000 or 5000 on lsusb -tv. I needed to connect to the USB-C port to see it listed as 10000.

Testing the write speed using dd or pv I can only ever obtain a speed of 70-90MB/s, not the advertised 900MB/s. Any advice on how to test/debug this? Has anyone ever tried something similar and attained full speed?

*** Please note that this reply is generated by LLM automatically ***

The issue you’re facing with the Jetson Orin Nano and the SanDisk Extreme Pro Dual Drive is related to the USB 3.2 Gen 2x1 speed. While the device is listed as 10000 (which corresponds to USB 3.2 Gen 2x1) in lsusb -t, the actual speed you’re getting is around 7090 MB/s, which is significantly lower than the advertised 900 MB/s.

There are a few things you can try to debug and potentially improve the speed:

  1. Verify the USB port: Ensure that you’re using the correct USB-C port on the Jetson Orin Nano. As you’ve already done, try connecting the device to the USB-C port next to the 40-pin header, which is the recommended port for USB 3.2 Gen 2x1 devices.
  2. Check the USB cable: Verify that the USB cable you’re using is a high-quality, USB 3.2 Gen 2x1 compliant cable. A low-quality cable might be limiting the speed.
  3. Disable USB power management: Run the command sudo echo "0" > /sys/bus/usb/devices/usb*/power/control to disable USB power management. This might help improve the speed.
  4. Increase the USB buffer size: Run the command sudo echo "131072" > /sys/bus/usb/devices/usb*/buffer_size to increase the USB buffer size. This might help improve the speed.
  5. Use a different testing tool: Instead of using dd or pv, try using a tool like usb-devices or usb-storage to test the speed. These tools might provide more accurate results.
  6. Check for firmware updates: Ensure that the SanDisk Extreme Pro Dual Drive firmware is up-to-date. You can check the firmware version using the lsusb command and then check the manufacturer’s website for updates.
  7. Compare with other devices: Try testing the SanDisk Extreme Pro Dual Drive with other devices, such as a PC or a laptop, to see if the issue is specific to the Jetson Orin Nano.

In comparison to other devices, the Jetson Orin Nano has a USB 3.2 Gen 2x1 controller, which should be capable of achieving speeds up to 900 MB/s. However, the actual speed you’re getting is around 7090 MB/s, which is lower than expected.

To give you a better idea, here are some comparison points:

  • The Jetson AGX Orin Developer Kit has a USB 3.2 Gen 2x1 controller and can achieve speeds up to 900 MB/s.
  • The Jetson Xavier NX Developer Kit has a USB 3.2 Gen 2x1 controller and can achieve speeds up to 900 MB/s.
  • The SanDisk Extreme Pro Dual Drive is a USB 3.2 Gen 2x1 device and is capable of achieving speeds up to 900 MB/s.

In summary, while the Jetson Orin Nano should be capable of achieving speeds up to 900 MB/s with the SanDisk Extreme Pro Dual Drive, the actual speed you’re getting is lower than expected. By trying the above steps, you might be able to improve the speed or identify the cause of the issue.

*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***

Hi,
Please try the command and see if can achieve target throughput:
Jetson Xavier NX suppor NVMe SSD max speed - #8 by carolyuu

Here’s the result. First I still had the memory disk formatted as NTFS. Somehow it reports 1.5MB/s reading speed (should be only 1MB/s!), but still only ~230MB/s writing, similar to what I observed before on my notebok.

        Each process writes a 65536 kByte file in 1024 kByte records

        Children see throughput for  8 initial writers  =  231086.38 kB/sec
        Parent sees throughput for  8 initial writers   =  230762.07 kB/sec
        Min throughput per process                      =   28796.10 kB/sec
        Max throughput per process                      =   29338.82 kB/sec
        Avg throughput per process                      =   28885.80 kB/sec
        Min xfer                                        =   64512.00 kB

        Children see throughput for  8 readers          = 1573232.80 kB/sec
        Parent sees throughput for  8 readers           = 1566442.57 kB/sec
        Min throughput per process                      =  193704.14 kB/sec
        Max throughput per process                      =  197252.56 kB/sec
        Avg throughput per process                      =  196654.10 kB/sec
        Min xfer                                        =   64512.00 kB

A second test, now using EXT4 filesystem format.

        Each process writes a 65536 kByte file in 1024 kByte records

        Children see throughput for  8 initial writers  =  438275.34 kB/sec
        Parent sees throughput for  8 initial writers   =  407144.68 kB/sec
        Min throughput per process                      =   50131.37 kB/sec
        Max throughput per process                      =   59490.13 kB/sec
        Avg throughput per process                      =   54784.42 kB/sec
        Min xfer                                        =   55296.00 kB

        Children see throughput for  8 readers          =  643021.77 kB/sec
        Parent sees throughput for  8 readers           =  638173.10 kB/sec
        Min throughput per process                      =   72029.73 kB/sec
        Max throughput per process                      =   86615.88 kB/sec
        Avg throughput per process                      =   80377.72 kB/sec
        Min xfer                                        =   55296.00 kB

Good improvement, although still only around half of the expected 900MB/s.

Tried dd again, and it only gives 232MB/s. What does it mean, how do I ensure I can attain maximum speed in my application? I want to store raw image data from a camera and this is probably going to be the bottleneck. I just want to write the data serially. Are there any special techniques anyone can suggest?

Hi,
We test on Orin Nano developer kit and get the result:

[  243.855849] usb 2-1.1: new SuperSpeed USB device number 3 using tegra-xusb
[  244.047084] scsi host0: uas
[  244.048009] usbcore: registered new interface driver uas
[  244.387951] scsi 0:0:0:0: Direct-Access     JetFlash Transcend 128GB  1100 PQ: 0 ANSI: 6
$ sudo iozone -ecI -+n -L64 -S32 -s64m -r1024k -i0 -i1 -l8 -u8 -m -t8 -F /media/file1 /media/file2 /media/file3 /media/file4 /media/file5 /media/file6 /media/file7 /media/file8
        Iozone: Performance Test of File I/O
                Version $Revision: 3.489 $
                Compiled for 64 bit mode.
                Build: linux

        Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
                     Al Slater, Scott Rhine, Mike Wisner, Ken Goss
                     Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,
                     Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner,
                     Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone,
                     Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root,
                     Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer,
                     Vangel Bojaxhi, Ben England, Vikentsi Lapa,
                     Alexey Skidanov, Sudhir Kumar.

        Run began: Wed Apr  1 02:26:47 2026

        Include fsync in write timing
        Include close in write timing
        O_DIRECT feature enabled
        No retest option selected
        File size set to 65536 kB
        Record Size 1024 kB
        Multi_buffer. Work area 16777216 bytes
        Command line used: iozone -ecI -+n -L64 -S32 -s64m -r1024k -i0 -i1 -l8 -u8 -m -t8 -F /media/file1 /media/file2 /media/file3 /media/file4 /media/file5 /media/file6 /media/file7 /media/file8
        Output is in kBytes/sec
        Time Resolution = 0.000001 seconds.
        Processor cache size set to 32 kBytes.
        Processor cache line size set to 64 bytes.
        File stride size set to 17 * record size.
        Min process = 8
        Max process = 8
        Throughput test with 8 processes
        Each process writes a 65536 kByte file in 1024 kByte records

        Children see throughput for  8 initial writers  = 2604583.94 kB/sec
        Parent sees throughput for  8 initial writers   = 2567435.20 kB/sec
        Min throughput per process                      =  322091.19 kB/sec
        Max throughput per process                      =  338176.91 kB/sec
        Avg throughput per process                      =  325572.99 kB/sec
        Min xfer                                        =   64512.00 kB

        Children see throughput for  8 readers          = 2469279.06 kB/sec
        Parent sees throughput for  8 readers           = 2444938.04 kB/sec
        Min throughput per process                      =  306595.59 kB/sec
        Max throughput per process                      =  310333.94 kB/sec
        Avg throughput per process                      =  308659.88 kB/sec
        Min xfer                                        =   65536.00 kB



iozone test complete.

Do you test it on developer kit or custom carrier board?

Hi. It’s on the developer kit. This is what I see on dmesg

[ 1117.532277] usb 2-2: new SuperSpeed Plus Gen 2x1 USB device number 3 using tegra-xusb
[ 1117.562571] usb-storage 2-2:1.0: USB Mass Storage device detected
[ 1117.563365] scsi host0: usb-storage 2-2:1.0
[ 1118.610193] scsi 0:0:0:0: Direct-Access SanDisk Extreme Pro DDE1 0110 PQ: 0 ANSI: 6
[ 1118.612074] sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/466 GiB)
[ 1118.613100] scsi 0:0:0:1: Enclosure SanDisk SES Device 0110 PQ: 0 ANSI: 6
[ 1118.614690] sd 0:0:0:0: [sda] Write Protect is off
[ 1118.614699] sd 0:0:0:0: [sda] Mode Sense: 3d 00 10 00
[ 1118.645694] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, supports DPO and FUA
[ 1118.656681] sda: sda1
[ 1118.660532] sd 0:0:0:0: [sda] Attached SCSI disk