Low external drive write speeds

I do a lot of writing to external drives of video files, usually 100-150 GB’s at a time. I’m usually writing to 2.5" HDD’s, so I am used to slower speeds, but recently they tanked to writing at 30 MB/s. The first time it happened, I figured it was improperly connected, so I dismounted the drive and reconnected it. It wrote at 60-80 MB/s, but every subsequent write on every USB drive is maxing out at 30 MB/s, even on SSD’s. I just cloned and swapped out my NVME drive, and that didn’t help. Is it something with my storage controller? I’m at a loss. It’s not even peaking high and tanking to 30, it’s just a flat 30 MB/s from the start. All drives are USB 3.1 or better, not that it matters on the HDD’s.

Here are the CrystalDiskMark results of a new, basically unused SSD:

[Read]
SEQ 1MiB (Q= 8, T= 1): 44.180 MB/s [ 42.1 IOPS] <186101.57 us>
SEQ 1MiB (Q= 1, T= 1): 43.383 MB/s [ 41.4 IOPS] < 24121.53 us>
RND 4KiB (Q= 32, T= 1): 30.921 MB/s [ 7549.1 IOPS] < 4189.75 us>
RND 4KiB (Q= 1, T= 1): 11.640 MB/s [ 2841.8 IOPS] < 351.43 us>

[Write]
SEQ 1MiB (Q= 8, T= 1): 33.271 MB/s [ 31.7 IOPS] <244546.52 us>
SEQ 1MiB (Q= 1, T= 1): 32.670 MB/s [ 31.2 IOPS] < 31905.15 us>
RND 4KiB (Q= 32, T= 1): 21.400 MB/s [ 5224.6 IOPS] < 6117.36 us>
RND 4KiB (Q= 1, T= 1): 12.186 MB/s [ 2975.1 IOPS] < 335.66 us>

Profile: Default
Test: 1 GiB (x5) [D: 29% (273/932GiB)]

Windows 10, Framework 11th gen FRANBMCP0A (U3E1), Core i5-1135G7, 16GB RAM

Update: I uninstalled the two USB xHCI controllers, and let them reinstall on restart. Now a USB on one side gives a device not recognized error when I plug in the SSD, and a USB on the other side writes at over 200 MB/s. The USB that isn’t recognizing the drive gave the same error after a second reinstall.

My Windows 10, 11th gen Framework USB ports sometimes only accept USB 2 speed connections. You can see if a device is connected at USB 3 speeds by going to the “Bluetooth and other devices” settings and seeing if your device says “Connected to USB 3.0”.

I’ve found that when a USB port is being particularly finicky, it won’t allow a USB 3 device to show up at all unless you force it to connect at USB 2 speeds. With USB-A, I’ve found I can insert the connection halfway until the drive appears and then insert it the rest of the way. Of course, this results in the slow USB 2 speeds, but at least the drive does appear in this case.

Uninstalling and reinstalling the USB drivers has worked occasionally for me to get things working with USB 3 again. Also shutting down and leaving the machine off for a while. Another thing that seemed to work once was removing all 4 framework expansion cards and then putting them back in.

Here are other threads talking about “quirky” USB problems:

https://community.frame.work/t/responded-quirky-usb-port/

https://community.frame.work/t/responded-1tb-expansion-card-disconnects-randomly

https://community.frame.work/t/samsung-external-ssd-not-recognized/

https://community.frame.work/t/connectivity-problems-with-external-drive-when-connecting-over-usb-c/

https://community.frame.work/t/in-ticket-usb-a-sticks-and-at-times-user-post-usb-drive-not-mounting-showing-up/

https://community.frame.work/t/responded-usb-a-an-ongoing-problem/

The driver reinstall seemed to work, and I just swapped out the USB-A port that wasn’t connecting now with one that was, and the drive connected as a USB 3 device. Guess I fried that port somehow, or it was defective. Always had issues with drives disconnecting on it. Still wonder why all the ports slowed down so much in the first place.

Thanks for the links, had trouble finding anything in the forum. Weirdly, my bad port is the front left, like a few people in that first thread mention…

1 Like

May want to pop the input cover off and look at the EMI sticker on the port to ensure good contact, as well as check for any melted plastic over the mainboard.

I didn’t see anything amiss when I replaced the nvme drive, but I’ll take another look.

I don’t see anything wrong with the EMI shielding (read the guide for fixing them, mine is a batch 5 so I think it should be immune from this?), and definitely don’t see any damage on the motherboard.

The port that worked at USB 3.1 speeds successfully wrote ~150 GB’s in one write at ~400 MB/s. However, in the second batch of files I wrote to the drive, it disconnected and reconnected halfway through, so I continued with it plugged in at USB 2 speeds. It continues to do this even on smaller writes of around 30 GB’s. It reaches peak speed, tanks/freezes, climbs back to full write speed, tanks/freezes again, then at some point disconnects and reconnects.

I downloaded USB Device Tree Viewer and tested a USB 3.0 flash drive out on my USB-A hubs, swapping and testing in different configurations. All connect at USB 3.0, demanding 504 mA of current, except when connected to the lower left port, where it connects as USB 2.0 demanding 300 mA of current.

The 2.5" USB 3.1 drive connects (in one of the working ports) as USB 3.0 SuperSpeedPlus or higher, but shows a 0 mA demand, even when plugged in as USB 2.0.

A 2.5" HDD in a USB 3.0 enclosure connects as USB 3.0 demanding 896 mA of current. It wrote 30 GB’s at it’s typical ~80 MB/s speed

I’ll get a powered hub, maybe that will keep the SSD from disconnecting. I only starting using it after the hubs all capped at 30 MB/s on the external HDD’s, so it wasn’t the cause. Thinking a motherboard upgrade is in my near future, but I would have really liked to pop this board in an enclosure to use as a media server, something that would be hard to do if the ports keep misbehaving.

The only thing I haven’t tested is external drives connected via USB-C, which I can try with the same external SSD above. Has anyone with these USB-A issues had them on USB-C as well?

The 1 TB expansion card is USB-C, and there’s a thread about the problems people have had with it disconnecting. Again, I think it’s more a USB 3 problem than a USB-A vs USB-C problem. Although you say that you’re having disconnect problems even with USB 2 connections. So I guess my theory doesn’t work in your case.

I only had the disconnect/reconnect issues when initially plugged in as USB 3. I then unplugged and plugged back in at USB 2, and it seems stable that way.

Just confirmed that the SSD has the same issue when connected via USB-C. Writes at 330 MB/s, then drops to 0 and freezes, then climbs to 80 and back to 0, then got a USB device not recognized error and had to remount the drive to get it to recognize it. Still says its USB 3.0 connected, and still at 0 mA. In the USB-C threads some people who checked against other laptops found lower voltage readings on the FW ports, so I’m wondering if the higher current draw from USB 3.0 is the issue here.

Anyone have a good powered hub they can recommend? Never actually needed one before.

In the worst case, check the board:

In general, USB connection stability / reliability issues is likely caused by one of these on FW 11th gen boards:

  1. USB voltage
  2. EMI shield
  3. Cable quality
  4. Melted chip
  5. Driver
  6. Heat

I don’t think there’s any reports of the melting situation on 12th gen nor 13th gen boards. So it seems like it’s a 11th gen board behaviour (i.e. design changed since 12th gen to address it), or the melted ICs are from a batch with higher than expected failure rate. It’s also not clear if the melted IC sutiation is bad luck or a matter of eventuality or in combination with poor cable / compatibility / 3rd device…

Yeah those plastic pieces looked brand new, and didn’t have any visible damage underneath them. The EMI shielding all look properly installed, so I hesitate messing with them. Hoping it’s simply a voltage issue. I have had a few instances of heat issues (high temp warning on CPU two or three times and thermal throttle on NVME during really long writes mid summer while running some other programs). Haven’t had any temp issues since then, and also have it on a laptop pad (this was the only one I could find to fit it well). CPU high temps are usually peaking around 65-68 C. This behavior with the ports occurs even when idling in the 30’s. I have a bunch of different cables, and those don’t appear at fault either.

I’ve been using this Anker Power USB-C Hub. My USB-3 connections have been stable with it.

The only problem is that the hub doesn’t always connect as USB-3. When it gets into this USB-2 connection state, I have to unplug/replug/turn-off-the-power/uninstall-and-resintall USB drivers/take out all of the framework expansion modules and plug back in. As you can see, I don’t know exactly the right voodoo, but I’ve always gotten it back to a USB-3 connection. It happily stays connected as USB-3 for long periods of time. I’ve only noticed the connection problem when I’ve unplugged the hub while the computer is on. It doesn’t disconnect randomly.

Also, good to know that my USB-2/USB-3 theory still checks out! I thought it might be a power thing too, but I’ve never really been able to fully prove it. I even bought a USB voltage/amperage monitoring thingy but didn’t notice anything too weird with it. Though, also I don’t have any idea exactly what I’m doing with that thing.

So are you also using that as power delivery to your laptop?

I have more use cases for one of these types of powered hubs, or this for a really cheap option.

I’m going to get one and see how that works out, but I think having the laptop powered separately might give a useful data point to compare. At some point, I’m going to be transferring from a bunch of 5 TB HDD’s and 2 TB SSD’s to a larger RAID array when I’m in the later stages of setting up my media library. Currently sitting on just under 15 TB, so I really can’t imagine writing that all at USB 2 speeds.

Yeah, I just plug the Framework power into the hub and the hub into the laptop. I stick my 1 TB expansion card in the other USB-C slot in the hub. I use one of the USB-A slots for a backup drive (the one from the old quirky-usb-port thread). I also use the HDMI and ethernet occasionally. It was worth it for me to get just for the ethernet and HDMI options. But fortunately the USB-3 works too, which does add evidence to the power theory (which is the reason I thought the hub might help).

I’ve also been trying to unhide the USB selective suspend settings in my power plan, but for the life of me I can’t get it to show up. Command prompt to unhide it does nothing, and a registry edit does nothing.

All of the Windows advanced power settings are under this registry key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings

All of the USB power settings are under:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\2a737441-1930-4402-8d77-b2bebba308a3

Selective suspend is here:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\2a737441-1930-4402-8d77-b2bebba308a3\48e6b7a6-50f5-4782-a5d4-53bb8f07e226

You can change the “Attributes” value under any of these low level keys to 2 and then they’ll appear in the advanced power options. There are some other intriguing possibilities like:

0853a681-27c8-4100-a2fd-82013e970683 = >This value will be used as idle timeouts for all USB hubs

d4e98f31-5ffe-4ce1-be31-1b38b384c009 => Specifies the power management policy to use for USB 3 links when they are idle

(I did disable selective suspend when I first got the Framework because I was having problems where my bluetooth mouse would lag after a period of inactivity… i.e. the mouse would be waking up when I first moved it and there would be a hitch.)

Yup, that attributes one was the registry value I changed, but nothing happened. Going to try again and see if there was a conflicting value already there. I noticed some logs in event viewer for repeated “driver exit RTD3” around the same time I was testing ports/drive combos. I did not have the same kind of log that you shared in another post when my drive disconnected though.

Edit: yeah I didn’t change the existing value. Going to disable it under an alternate power plan and see if that has an effect on the USB 3 disconnect.

Something weird happened when I was checking my external SSD using a USB-C expansion card. While looking at it in USB Device Tree Viewer, it first showed that, when connected on the right side, it was connected to a port on the top most host controller (which it shows only USB 3 supported ports). The first time it disconnected and reconnected, it showed an error on the port it was at, but reappeared under a different port on the other host controller (which has USB 3 and all the non USB 3 speed ports, including the bluetooth and fingerprint reader). The second time it had a disconnect/reconnect it stayed at the same port, but I terminated the write process so it may not have had enough time to switch it to a different port, if that is what the controller is actually doing. I’m not sure why the host controllers are mapped this way rather than having a balanced load, but I don’t know anything about port protocols.

Going to try two separate tests. One with the powered hub when it arrives later this week, and one without the hub but unhiding all the USB power plan settings and changing timeouts, etc. to see if that has an impact. So far I’m looking at these, and made them visible in the registry (I wouldn’t have thought to check what they were had you not brought them up):

0853a681-27c8-4100-a2fd-82013e970683
All USB idle timeouts

48e6b7a6-50f5-4782-a5d4-53bb8f07e226
USB selective suspend

d4e98f31-5ffe-4ce1-be31-1b38b384c009
USB 3 link power management idle timeout

498c044a-201b-4631-a522-5c744ed4e678
Setting IOC for all TD’s (Interrupt on Completion for all Transfer Descriptors)

Since this is way over my head, I’m going to browse through Intel’s documentation on the xHCI (and I do mean browse, it’s over 600 pages).

I found some relevant plan changes in this thread on a different Windows system. The biggest difference I see is my default selective suspend timeout is just 50 milliseconds. I can see why having it enabled is useful for idling something like to fingerprint reader, so I think having a longer timeout versus disabling it might be better in terms of system stability. Also, my “IOC on TC” setting is enabled on plug-in, and disabled on battery. I typically am always plugged in on write cycles, so I could also test for disconnects while on battery without making any changes.

1 Like

@EAP I think it’s great that you’re trying all of these things. At one point I had noticed increasing the “Turn off hard disk after” power option could help with cases where an external drive had been idle for a while and then it would disconnect the next time I tried to use it.

Turn off hard disk after => HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\0012ee47-9041-4b5d-9b77-535fba8b1442\6738e2c4-e8a5-4a42-b16a-e040e769756e

Also, the “Better Performance” USB Disk policy (that I describe here) helped stabilize connections a bit when I was originally having the 1 TB expansion card disconnect trouble. It also resulted in the “Disk 1 has been surprise removed” event log entries when the drive did disconnect. This message doesn’t seem to appear when Quick Removal is enabled. I guess that’s because you’re allowed to remove the drive whenever you want with the option on.

I will note that @Michael_Wu has noticed these problems on both Windows and Linux. And just like me, he’s even replaced his 11th gen mainboard.

That’s not to say that there aren’t ways to mitigate the problem like the powered hub. And finding some advanced power option to stabilize things would be awesome!

Tried changing the USB settings (increasing the idle timeout and then disabling selective suspend altogether) with no luck. It performed 5 consecutive 20 GB writes without issue, although one had a lot of dips in speed, but when I try writing around 100 GB it has the freeze/disconnect issue. I get a lot of errors in event viewer, mostly about the thunderbolt bus driver entering/exiting RTD3 when the drive disconnects. I seem to be getting the RTD3 errors consistently when nothing is connected with USB, and it’s usually paired with a Netwtw12 error about a descriptor not being found. I dunno, maybe something with the Intel wifi card is causing issues with it, tried rolling back the driver and the same error pops up, so I reinstalled the current driver.

Wondering if maybe my drive was the issue since it still reports 0mA requested current, I tested a second drive enclosure from the same manufacturer, with a second Crucial SSD (I buy these kinds of things in pairs) with no change.

Tested a 100 GB write with drive connected to powered hub and it worked fine. Started at 335 GB/s, dipped briefly to 260 after 30 GB’s or so, climbed to 310, then finished the last 14 GB at 265 GB/s.

Retested with an older Yottamaster drive enclosure with an old OCZ drive, and it also worked. It also kept a more sustained 340 GB/s write speed, and reported a current request of just under 900 mA. Tested the Yottamaster drive directly connected to the USB USB-A expansion card, and it worked without disconnecting. Maybe there is something amiss in the CableMatters enclosure where current isn’t being reported properly. I really wish there were better options for bare drive enclosures, it’s always hard trying to figure out if the hardware will be reliable. Really wish there were more options from the drive manufacturers themselves.

Looks like I won’t be using that CableMatters enclosure now, but the issue definitely wasn’t isolated to just that. My lower left expansion card will still downgrade connections to USB 2. Maybe I’ll try looking for some SSD docks instead. I can use the Yottamaster case for now, but was keeping it for other purposes. Still need a dedicated enclosure for weekly writes of 120-160 GB. Definitely going to be keeping USB Device Tree Viewer installed as part of testing USB devices moving forward.

In case anyone is curious, the CableMatters have an ASMedia controller, while the Yottamaster has a JMicron controller. Don’t recall the exact chipset numbers, but think I can find it with USB Device Tree Viewer.