Slow mounting of NVMe SSD in USB enclosure

Hi there!

I’m having trouble with the NVMe SSD Kingston A2000 in a UGREEN USB enclosure, namely: mounting the filesystem takes at least 30 seconds. After the first mount, unmounting and mounting it again is instant.

I was able to reproduce this problem on 2 separate computers, laptop and desktop, both running roughly the same version of EndeavourOS with KDE Plasma. The problem also exists when using the latest EndeavourOS Live CD on the laptop. However, the problem doesn’t exist on Ubuntu 24.04 and the lastest Manjaro Live CD running on the same laptop, and on a different laptop running Windows 10. The same SSD doesn’t cause such problems when installed directly in the laptop. The Sabrent Rocket NVMe SSD installed in the same enclosure is problem free. This makes me think that there’s something specific to (the default configuration of) EndeavourOS that triggers strange behaviour for this enclosure and SSD combination.

To try to rule out significant kernel differences, I installed roughly the same kernel version as the one used on the Manjaro Live CD.

Things that don’t seem to matter: the partition type, recreating the partition table, updating the SSD firmware using Windows and the tool provided by Kingston, the power profile.

I ran a few commands on my laptop on both EndeavourOS and Manjaro Live CD, but there doesn’t seem to be any obvious difference.

EndeavourOS
[root@hp845 pawel]# time mount /dev/sda1 /mnt/

real    0m33,286s
user    0m0,003s
sys     0m0,018s


[root@hp845 pawel]# strace -c mount /dev/sda1 /mnt/
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 73,86    0,013301        6650         2           fsconfig
 14,45    0,002603          83        31           read
  2,55    0,000460          17        26           munmap
  1,72    0,000309          15        20           close
  1,52    0,000273           9        30           mprotect
  1,35    0,000244           5        42           mmap
  0,97    0,000174           6        25           lseek
  0,79    0,000142           7        19         3 openat
  0,69    0,000124         124         1           move_mount
  0,45    0,000081           5        15         4 ioctl
  0,44    0,000079           9         8         2 newfstatat
  0,13    0,000024          24         1           fsopen
  0,12    0,000022           2        10           fstat
  0,12    0,000022          11         2           dup
  0,12    0,000021           4         5         3 readlink
  0,11    0,000019          19         1           fsmount
  0,10    0,000018           6         3         1 faccessat2
  0,08    0,000014           7         2           fcntl
  0,07    0,000013           4         3           getuid
  0,07    0,000013           6         2           getgid
  0,07    0,000013           4         3           geteuid
  0,07    0,000013           6         2           getegid
  0,05    0,000009           3         3         1 access
  0,05    0,000009           9         1           prctl
  0,04    0,000008           4         2           fadvise64
  0,00    0,000000           0         3           brk
  0,00    0,000000           0         2           pread64
  0,00    0,000000           0         1           execve
  0,00    0,000000           0         1           arch_prctl
  0,00    0,000000           0         1           set_tid_address
  0,00    0,000000           0         1           set_robust_list
  0,00    0,000000           0         1           prlimit64
  0,00    0,000000           0         1           getrandom
  0,00    0,000000           0         1           rseq
------ ----------- ----------- --------- --------- ----------------
100,00    0,018008          66       271        14 total


[root@hp845 pawel]# uname -a
Linux hp845 6.12.4-arch1-1 #1 SMP PREEMPT_DYNAMIC Mon, 09 Dec 2024 14:31:57 +0000 x86_64 GNU/Linux

dmesg
[  121.745340] usb 6-1: new SuperSpeed Plus Gen 2x1 USB device number 3 using xhci_hcd
[  121.761126] usb 6-1: New USB device found, idVendor=152d, idProduct=0583, bcdDevice=51.02
[  121.761139] usb 6-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  121.761143] usb 6-1: Product: Ugreen Storage Device
[  121.761146] usb 6-1: Manufacturer: Ugreen
[  121.761149] usb 6-1: SerialNumber: 152D058300F2
[  121.763680] scsi host0: uas
[  121.764295] scsi 0:0:0:0: Direct-Access     KINGSTON  SA2000M8100     5102 PQ: 0 ANSI: 6
[  121.767665] sd 0:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB)
[  121.767671] sd 0:0:0:0: [sda] 4096-byte physical blocks
[  121.767810] sd 0:0:0:0: [sda] Write Protect is off
[  121.767814] sd 0:0:0:0: [sda] Mode Sense: 5f 00 00 08
[  121.768116] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[  121.768127] sd 0:0:0:0: [sda] Preferred minimum I/O size 4096 bytes
[  121.768134] sd 0:0:0:0: [sda] Optimal transfer size 33553920 bytes not a multiple of preferred minimum block size (4096 bytes)
[  121.803134]  sda: sda1
[  121.803418] sd 0:0:0:0: [sda] Attached SCSI disk


[root@hp845 pawel]# lsusb -t
/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/5p, 480M
    |__ Port 003: Dev 002, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 003: Dev 002, If 1, Class=Wireless, Driver=btusb, 12M
    |__ Port 004: Dev 003, If 0, Class=Vendor Specific Class, Driver=[none], 12M
/:  Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/2p, 10000M
/:  Bus 003.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 480M
    |__ Port 001: Dev 002, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 001: Dev 002, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 001: Dev 002, If 2, Class=Video, Driver=uvcvideo, 480M
    |__ Port 001: Dev 002, If 3, Class=Video, Driver=uvcvideo, 480M
    |__ Port 001: Dev 002, If 4, Class=Application Specific Interface, Driver=[none], 480M
/:  Bus 004.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 10000M
/:  Bus 005.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 480M
/:  Bus 006.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 10000M
    |__ Port 001: Dev 003, If 0, Class=Mass Storage, Driver=uas, 10000M
/:  Bus 007.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 480M
/:  Bus 008.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 10000M

Manjaro Live CD
[manjaro manjaro]# time mount /dev/sdb1 /mnt/

real    0m0.026s
user    0m0.004s
sys     0m0.016s


[manjaro manjaro]# strace -c mount /dev/sdb1 /mnt/
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 98.43    0.012002        6001         2           fsconfig
  0.80    0.000097          97         1           move_mount
  0.27    0.000033           1        20           close
  0.20    0.000024           2         9         4 newfstatat
  0.12    0.000015          15         1           fsmount
  0.11    0.000013           6         2           dup
  0.07    0.000009           0        15         4 ioctl
  0.00    0.000000           0        31           read
  0.00    0.000000           0        10           fstat
  0.00    0.000000           0        25           lseek
  0.00    0.000000           0        42           mmap
  0.00    0.000000           0        30           mprotect
  0.00    0.000000           0        26           munmap
  0.00    0.000000           0         3           brk
  0.00    0.000000           0         2           pread64
  0.00    0.000000           0         3         1 access
  0.00    0.000000           0         1           execve
  0.00    0.000000           0         2           fcntl
  0.00    0.000000           0         1         1 mkdir
  0.00    0.000000           0         5         3 readlink
  0.00    0.000000           0         3           getuid
  0.00    0.000000           0         2           getgid
  0.00    0.000000           0         3           geteuid
  0.00    0.000000           0         2           getegid
  0.00    0.000000           0         1           prctl
  0.00    0.000000           0         1           arch_prctl
  0.00    0.000000           0         1           set_tid_address
  0.00    0.000000           0         2           fadvise64
  0.00    0.000000           0        19         3 openat
  0.00    0.000000           0         1           set_robust_list
  0.00    0.000000           0         1           prlimit64
  0.00    0.000000           0         1           getrandom
  0.00    0.000000           0         1           rseq
  0.00    0.000000           0         1           fsopen
  0.00    0.000000           0         3         1 faccessat2
------ ----------- ----------- --------- --------- ----------------
100.00    0.012193          44       273        17 total


[manjaro manjaro]# uname -a
Linux manjaro 6.12.4-1-MANJARO #1 SMP PREEMPT_DYNAMIC Mon, 09 Dec 2024 11:58:37 +0000 x86_64 GNU/Linux

dmesg
[  545.048107] usb 6-1: new SuperSpeed Plus Gen 2x1 USB device number 6 using xhci_hcd
[  545.063447] usb 6-1: New USB device found, idVendor=152d, idProduct=0583, bcdDevice=51.02
[  545.063461] usb 6-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  545.063464] usb 6-1: Product: Ugreen Storage Device
[  545.063468] usb 6-1: Manufacturer: Ugreen
[  545.063470] usb 6-1: SerialNumber: 152D058300F2
[  545.065771] scsi host1: uas
[  545.066311] scsi 1:0:0:0: Direct-Access     KINGSTON  SA2000M8100     5102 PQ: 0 ANSI: 6
[  545.069309] sd 1:0:0:0: Attached scsi generic sg1 type 0
[  545.069604] sd 1:0:0:0: [sdb] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB)
[  545.069608] sd 1:0:0:0: [sdb] 4096-byte physical blocks
[  545.069736] sd 1:0:0:0: [sdb] Write Protect is off
[  545.069740] sd 1:0:0:0: [sdb] Mode Sense: 5f 00 00 08
[  545.069990] sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[  545.069994] sd 1:0:0:0: [sdb] Preferred minimum I/O size 4096 bytes
[  545.069997] sd 1:0:0:0: [sdb] Optimal transfer size 33553920 bytes not a multiple of preferred minimum block size (4096 bytes)
[  545.102716]  sdb: sdb1
[  545.103006] sd 1:0:0:0: [sdb] Attached SCSI disk


[manjaro manjaro]# lsusb -t
/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/5p, 480M
    |__ Port 003: Dev 002, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 003: Dev 002, If 1, Class=Wireless, Driver=btusb, 12M
    |__ Port 004: Dev 003, If 0, Class=Vendor Specific Class, Driver=[none], 12M
/:  Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/2p, 10000M
    |__ Port 001: Dev 002, If 0, Class=Mass Storage, Driver=uas, 5000M
/:  Bus 003.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 480M
    |__ Port 001: Dev 002, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 001: Dev 002, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 001: Dev 002, If 2, Class=Video, Driver=uvcvideo, 480M
    |__ Port 001: Dev 002, If 3, Class=Video, Driver=uvcvideo, 480M
    |__ Port 001: Dev 002, If 4, Class=Application Specific Interface, Driver=[none], 480M
/:  Bus 004.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 10000M
/:  Bus 005.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 480M
/:  Bus 006.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 10000M
    |__ Port 001: Dev 002, If 0, Class=Mass Storage, Driver=uas, 10000M
/:  Bus 007.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 480M
/:  Bus 008.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 10000M

Using Dolphin to mount it results in a timeout error message. However, waiting a bit longer results in the SSD being eventually mounted.

Dolphin timeout messge

An error occurred while accessing ‘A2000’, the system responded: An unspecified error has occurred: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

The enclosure: https://www.amazon.nl/-/en/dp/B0BQ6SHNP1

Any tips where to look? Thanks in advance!

Try with the verbose flag -v anything helpful?

I managed to get more info. dmesg shows quite some errors after the filesystem gets mounted.

[  208.054442] sd 8:0:0:0: [sda] tag#16 uas_eh_abort_handler 0 uas-tag 1 inflight: CMD IN 
[  208.054448] sd 8:0:0:0: [sda] tag#16 CDB: Read(10) 28 00 74 70 67 80 00 00 08 00
[  208.067472] scsi host8: uas_eh_device_reset_handler start
[  208.185844] usb 2-4: reset SuperSpeed USB device number 2 using xhci_hcd
[  208.211526] scsi host8: uas_eh_device_reset_handler success
[  208.211600] sd 8:0:0:0: [sda] tag#16 FAILED Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK cmd_age=30s
[  208.211603] sd 8:0:0:0: [sda] tag#16 CDB: Read(10) 28 00 74 70 67 80 00 00 08 00
[  208.211605] I/O error, dev sda, sector 1953523584 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 0
[  210.064310] EXT4-fs (sda1): mounted filesystem cd2725e1-12be-4bff-8bfa-e3000c005144 r/w with ordered data mode. Quota mode: none.

Googling some of these messages led me to believe that disabling UAS for this device could solve/mitigate the issue. It doesn’t really solve it, but this time there’s only one error.

[  109.379041] sd 8:0:0:0: [sda] tag#0 timing out command, waited 60s
[  139.804014] usb 2-4: reset SuperSpeed USB device number 2 using xhci_hcd
[  141.675471] EXT4-fs (sda1): mounted filesystem cd2725e1-12be-4bff-8bfa-e3000c005144 r/w with ordered data mode. Quota mode: none.

To be sure, I checked on Manjaro and none of these errors are present there.

I can’t really find any useful information on the internet about what the issue could be in my case.

A quick follow-up: I never managed to solve this problem. I’m not going to change the OS because of an NVMe enclosure, so I just returned it.

For the reference, the enclosure used the JMicron JMS583 controller. I’m planning on buying an enclosure that uses Realtek RTL9210B (or similar) - it seems to have a good compatibility track record.

I recently had some rather big issues with a USB NVMe SSD Enclosure using that exact same JMicron Controller, it was in a different enclosure so not the same model, and I had issues with 3 entirely different Linux distributions, EndeavourOS, Bazzite OS, and, TuxedoOS.

I think thier are some bugs with that JMicron Chip that need to be ironed out.
Returning the caddy was the best option in my opinion.

Maybe leave a review on Amazon mentioning how it behaved strangely so that other potential customers are made aware, I did that for my SSD Enclosure.

One more follow-up: I’ve recently bought a very similar enclosure, but this time with the Realtek RTL9210B controller. So far no problems. :slight_smile: It seems like the JMicron JMS583 controller was part of the problem.

This was exactly the right thing to do. :wink:

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