0

I recently purchased a SanDisk 2TB Extreme PRO Portable SSD (model SDSSDE81-2t00). Upon plugging it into my Linux machine to perform a backup, I noticed it was running slowly. After some tests with dd showed fairly low speeds (less than 50 MBps), I ran lsusb -t and saw it was reporting 480M, which is "high speed" USB 2.0.

$ lsusb
Bus 001 Device 002: ID 8087:8001 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 005: ID 04f2:b449 Chicony Electronics Co., Ltd Integrated Camera
Bus 002 Device 003: ID 138a:0017 Validity Sensors, Inc. VFS 5011 fingerprint sensor
Bus 002 Device 011: ID 0781:55af SanDisk Corp. Extreme Pro 55AF      <--- here
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ lsusb -t
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/11p, 480M
    |__ Port 1: Dev 11, If 0, Class=Mass Storage, Driver=uas, 480M      <--- here
    |__ Port 6: Dev 3, If 0, Class=Vendor Specific Class, Driver=, 12M
    |__ Port 8: Dev 5, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 8: Dev 5, If 1, Class=Video, Driver=uvcvideo, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M

After some more troubleshooting, I plugged in a known-working USB 3.x flash drive, which correctly showed as 5000M speeds.

$ lsusb -t
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    |__ Port 1: Dev 18, If 0, Class=Mass Storage, Driver=usb-storage, 5000M     <--- here
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/11p, 480M
    |__ Port 6: Dev 3, If 0, Class=Vendor Specific Class, Driver=, 12M
    |__ Port 8: Dev 5, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 8: Dev 5, If 1, Class=Video, Driver=uvcvideo, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M

Then, I plugged back in the new SSD, and it reported 5000M speeds! I confirmed this test on a different Linux machine and saw the same results. Kernels were:

  • 4.19.107 (an Unraid server)
  • 5.4.0-64-generic (Ubuntu)

Also notable is that the driver was Driver=uas when speeds were low, and changed to Driver=usb-storage after it was working. Perhaps a kernel module was not yet loaded, and the flash drive caused it to load?

TL;DR:

  1. new SSD shows usb 2.0 speeds (in practice, and as reported by lsusb)
  2. unplug SSD, plug in USB 3.0 flash drive, remove flash drive, reinsert SSD
  3. SSD speeds are now correct (in practice and via lsusb)
  4. reproducible on two machines

Why might this be happening, and what further troubleshooting can I do? If this is a Linux kernel bug, I'd like to collect enough information to properly report it.

0

I have a partial answer, which is that my kernel module theory was correct. I compared the output of lsmod before and after doing the thumb drive plug/unplug trick, and it was very clear:

$ diff lsmod.txt lsmod.txt2
36c36
< usb_storage            77824  1 uas
---
> usb_storage            77824  4 uas

After replicating this state via:

$ sudo modprobe usb_storage

I am able to get full speed on the drive without any other tricks.

I still welcome other answers that may provide more details.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.