When connecting my external SSD to any of my USB ports, I get around 27 MB/s transfer speeds. But if I use the same port + SSD with a Dock in between, I get around 589 MB/s.
This happens on all 4 ports. Expansion cards: USB C on both USB4 ports, USB A on the others.
Could be Fedora-sided, but I use the same mount arguments in all tests. The SSD has LUKS + XFS, mounted manually and tested via both cp large-file and dd ... bs=1M ....
Have you poked around with lsusb to see what it’s reporting for bus speeds for the device with or without the hub? Maybe lsusb --tree. I have a bunch of different external drives and they are not stuck at slow speeds. What drive are you using? Tried a different cable? Tried flipping the cable over? I’m running PopOS right now.
That’s a bit over half of the max effective bandwidth of an usb2 connection.
And that is just a smidge over the max effective bandwidth of 5Gbit usb3 and a tiny bit over half of 10Gbit usb3. It is also pretty much exactly what you’d get out of a sata ssd on a 10gbit usb3 connection.
Check lsusb -t to see how it connects and check dmesg if something is crying when you plug the ssd in directly.
What model of external ssd are you using and how are you testing the speed?
I have a lot of external ssds (mostly m.2 ssds in various chinesium enclosures), pretty much all of them (except for the sata and really old usb3 5Gbit ones of course) do around 1GB/s on all ports and the big usb4 one can even do around 3.8GB/s with some ssds. I can force them to use usb2 by using a usb2 only cable but in those cases I still get close to 50Mb/s so there may be something more than just a connection downgrade going on in your case.
You could also test if it works better on a windows install, windows 2 go is really helpful for stuff like this.
That makes sense, I’m now 90% confident its the cable. Unfortunately I don’t have any other cables with me right now.
I’m getting my performance numbers from my status bar plugin (io meter), which for whatever reason shows lower numbers. So where dd shows 1.8 GB/s, the plugin shows 668 MB/s.
I’ve just tested with a different SSD USB stick which plugs in directly, using dd if=/dev/zero of=/media/.../out.bin bs=64M count=8192 status=progress and get 1.8 GB/s. So its neither the ports nor the OS. For me that is a good enough answer and I will test with some proper thunderbolt cables when I’m at home again.
Depending on how it’s mounted you may be partially writing to cache but dd is an imperfect tools for testing bandwidth anyway, if you still want to use it reading directly from the block device (if=sdx or whatever) is more reliable as it actually has to read stuff and can’t just fall back on cache. When writing you add a lot of variables that test stuff other than interface bandwith, it is quite possible your ssd can’t actually sustain writes at interface speeds and it is also possible that cache and compression mess with your values (especially when writing only zeroes).
Unless it’s a thunderbolt/usb4 ssd 1.8GB/s is not possible on the amd platform as it doesn’t support 20Gbit usb3 so the io meter thing is probably the more accurate of the two.
Again the output of “lsusb -t” and the model of the ssd would be quite interesting here.