93

I'm getting only 30MB/sec between my computer and a USB drive, despite the fact that USB 2.0 supports 480Mb/sec (or 60MB/sec) transfers.

(Therefore, I'm only getting half the rated speed) Is there something present in the USB standard which should result in such half apparent speeds?

8
  • 12
    Maximum typical speed? Isn't that an oxymoron?
    – user541686
    Jul 31, 2011 at 4:56
  • 3
    @Mehrdad: Not really. Max typical speed for a gigabit lan transfer is in the 100MB/s range, even though the theoretical speed is higher. Jul 31, 2011 at 4:57
  • 4
    Oh then you mean maximum practical speed, right?
    – user541686
    Jul 31, 2011 at 4:58
  • 3
    @Mehrdad: Same thing. Yeah. Jul 31, 2011 at 4:58
  • Do you have any kind of compression or maybe multiple virus scanners running? Try disabling them. Make sure the cable is rated for USB 2.0. If it is old, it may be a slower-rated cable. I assume you would have said something if it were going through a USB hub. Is it slow for other devices, like a flash drive (you would need to check its rated transfer rate).
    – KCotreau
    Jul 31, 2011 at 5:00

12 Answers 12

68

USB 2 uses 1 millisecond frames, and in High Speed (480 Mb/s) mode they are divided into 8 micro-frames. The maximum size of bulk packets (used by USB mass storage devices) is 512 bytes. According to this very informative document the theoretical maximum is 13 packets per microframe. So the theoretical maximum speed of a USB 2 drive is:

1000 * 8 * 512 * 13 = 53248000 ~= 53 MB/s

This other document from Cypress says near the end that they actually acheive 43 MB/s.

In practice the limit will usually be the flash itself.

Edit: This information is actually also in the USB 2 spec.

usb spec table

5
  • 3
    From my experience, you can subtract 20% off the top of most bandwidth estimates for general overhead. Then it's a matter of hardware. The standard may be the same but the quality of the hardware differs a lot.
    – Don Curtis
    Mar 30, 2017 at 23:11
  • 4
    The first Cypress document states: "Even this limit [of 13 packets] is not achievable with current host controllers, which can receive 10 bulk packets/microframe or send 8 bulk packets/microframe" 10 packets give us 42 MB/sec which is the often quoted 30-40 MB/s "real world" limit
    – nponeccop
    Aug 26, 2018 at 23:35
  • What about driving a display though, ideally at 1080p 60 hz but even 720p 30 hz would be acceptable?
    – Deoxal
    Sep 22, 2022 at 12:34
  • Far too much data uncompressed. There are solutions that use compression to do it though.
    – Timmmm
    Sep 22, 2022 at 17:08
  • important: "The table does not include the overhead associated with bit stuffing" that is how the theoretical max of 13 transfers/microframe gets further reduced. IIRC, controllers have to make some assumptions here, in terms of worst cases, not just of bit stuffing but also of signal propagation delays. the standard is kinda sloppy in spelling this out. Dec 31, 2022 at 20:47
28

Your flash drive is the bottleneck. They can't reach the 60 MB/s theoretical maximum. Here's an excerpt from Wikipedia:

Modern flash drives have USB 2.0 connectivity. However, they do not currently use the full 480 Mbit/s (60MB/s) which the USB 2.0 Hi-Speed specification supports because of technical limitations inherent in NAND flash. The fastest drives currently available use a dual channel controller, although they still fall considerably short of the transfer rate possible from a current generation hard disk, or the maximum high speed USB throughput. (...)

Typical fast drives claim to read at up to 30 megabytes/s (MB/s) and write at about half that speed. This is about 20 times faster than USB 1.1 "full speed" devices which are limited to a maximum speed of 12 Mbit/s (1.5 MB/s).

7
  • 10
    It's not a flash drive. I'm copying to this -> amazon.com/Western-Digital-Passport-Essential-Portable/dp/… -- I'm asking what the limit of the interface is though, not about a specific device. (I want to know if the device is hitting the practical limit; that's the reason for this question in the first place) Jul 31, 2011 at 5:06
  • 1
    Sorry, I misinterpreted your question. You didn't specify and 30MB/s is the usual speed for flash drives so I thought you were using one.
    – nmat
    Jul 31, 2011 at 5:10
  • I see. On the other hand, I didn't really ask what the bottleneck is, did I? :) Jul 31, 2011 at 23:46
  • 5
    Honestly, I don't think a standard has limitations. A standard has a theoretical maximum and the implementation usually caps it. So if you want to know the cause of the slow speed, you have to look at the implementation. In case of flash drives the problem is in the NAND flash and in case of hard drives the problem is in controller logic. Even high speed controllers barely exceed 30MB/s.
    – nmat
    Aug 1, 2011 at 0:25
  • 1
    I don't think it's a flash drive, I'm transferring from an ssd to an ssd and getting a max of 31 MBps
    – Hellreaver
    Sep 22, 2015 at 20:10
25

Around 30 MB/sec is quite typical maximum transfer speed.

USB 1.0 and USB 2.0 connections are half-duplex, meaning data flows in only one direction at a time. Shared connection between both directions is probably biggest reason for slowdown than expected transfer speed.

In comparison, USB 3 and Ethernet are full duplex and do meet expected transfer speeds better.

In my machine, an USB2 flash drive speed never exceeds 33 MB/s in test application, even though Windows reported 33-37 MB/s speed. I did some testing and enabled disk cache (device properties) and increased usb max transfer size to 2 MB (KB2581464) but could not make it any faster.

9

The USB 2.0 interface can be a limit due to signalling and command overhead as well as spacing between packets.

I have a fast SSD connected by USB 2.0. The drive is much faster than the interface (by more a factor of 10).

Read Speed maxes out around 33 MB/s and Write Speed at 17.5 MB/s. Write Speeds are almost 50% slower due to a verify-read after the write and the fact that the USB signal is half-duplex as another answer mentions.

4
  • That sounds like an issue with your controller. I often see write speeds much faster than 17.5 MB/s, even with comparatively cheap drives, over USB 2.0. Oct 26, 2013 at 7:54
  • 1
    Do you have write caching on? I'm talking actual raw numbers running a disk benchmark program using write with verify.
    – Adisak
    Oct 28, 2013 at 23:12
  • 1
    Disk benchmarking programs often use unrealistic parameters for these USB controllers. USB has a very high per-object or per-transfer overhead associated with switching into bulk mode. Copying of large files to the USB drive doesn't run into this problem. Write caching couldn't have too much of an effect given that I was able to immediately put the drive in another machine and the data was not corrupt. Oct 28, 2013 at 23:17
  • USB sticks often have a slower write than read speed, but the speed difference is not due to USB. You can buy faster USB drives that write at quicker speeds.
    – Dan Buhler
    May 22, 2018 at 17:15
6

With an iMac mid-2007 and one Verbatim USB2 disk transferring data to a FW800 drive I get 36-37 MB/s. It's already very good for USB2.

If I add a second transfer from another USB2 disk (Packard Bell) connected to the same USB2 hub to the same FW800 drive, the combined transfer rate increases to 42 MB/s. This is exceptional and it's the highest transfer rate I have ever seen on USB2.

More than 35-40 MB/s on USB2.0 is practically impossible and I was already dedicating a USB2 controller only for those disks, no mouse or other devices interfering.

5

This post is a bit old, so not sure if this is still relevant or helpful, but USB 2 speeds normally max out at 280Mbps (35MBps) due to bus access.

Taken from the USB Wikipedia page:

USB 2.0 was released in April 2000, adding a higher maximum signaling rate of 480 Mbit/s called High Speed, in addition to the USB 1.x Full Speed signaling rate of 12 Mbit/s. Due to bus access constraints, the effective throughput of the High-Speed signaling rate is limited to 35 MB/s or 280 Mbit/s.

4

USB 2.0 supports 480 Mb/s signaling speed. On the Wikipedia page, it says effective throughput is up to 35 MB/s. There is a disparity because bits aren't usually transmitted between devices in the same way that they are represented internally. A number of factors needs to be accounted for when transmitting data between devices, like electromagnetic interference.

http://en.wikipedia.org/wiki/8b/10b_encoding

The link above is an example of an encoding scheme. It is used by USB 3.0.

1
  • 1
    8b10b is a 20% overhead. 20% off of 480Mbits is 384MBits is ~48 MB/s. Still significantly faster than what I see in practice anywhere. Oct 26, 2013 at 7:53
3

I have never really thought much about calculating the speed, but clearly there is real overhead associated with this kind of transfer. I searched on Google and found post after post with speeds as you described, making me thing you are on to something.

I just whipped out a USB 2.0 1TB Seagate external drive, formated it, and decided to copy a sampling large enough to test with: 13,595,211,905 bytes (about 12GBs). I am running Symantec Endpoint Protection AV.

According to this calculator, it should have taken only 3:46 minutes to copy with 0% overhead, but it actually took 9:17, and my speed dropped to 23.9 MB/sec actually.

I then rebooted (to clear the memory), and tried it without my AV running and it still took 9:15, or only 2 seconds less (I guess that is good news for Symantec AV at least).

It would appear that those really are "theoretical numbers".

2
  • P.S. The 480Mb rate is for all devices on a hub, but in my tests, it was really just the drive and mouse, and I doubt the mouse had a great impact.
    – KCotreau
    Jul 31, 2011 at 5:44
  • 1
    About 24-26MB/s is the speed that I've seen on quite a lot of devices using USB2.0
    – Sathyajith Bhat
    Jul 31, 2011 at 5:49
2

Any chain is only as strong as its weakest link. The potentially weak transfer performance when using USB2 devices include everything from the host controller firmware, driver software, physical cables used (shorter and thicker may be slightly better?) and probably most importantly the actual connected devices themselves and any firmware, flash/cache chips and most definitely spinning disk performance, a well known bandwidth bottleneck.

Check in logical order of available I/O bandwidth - Processor/controller performance / L1/L2 Cache DRAM performance / firmware / flash storage chip performance then by an order of magnitude slow spinning disk storage performance.

Stated theoretical maximum performance (480 megaBITs or 60 megabytes per second) is only for the bus not things connected to it and quite often the actual observed performance is much lower.

0

USB 2 on Windows seems to top out at around 37 MB/s a second usually, even if the link speed of 480Mbps could support a bit more.

Different protocols are going to have different levels of overhead, and even different timings, and the latter can contribute to a full link speed not being utilised even if you are not otherwise saturating CPU, etc because the protocol has inherent inefficiencies and delays in its acknowledgements back and forth or other aspects of the protocol design. USB can only ever send or receive at any one time, and has to wait to see if anything else is using the bus before communicating in either direction.

Also remember that USB 1.x and 2.0 all share the same bandwidth, with it fairly typical that your host device will use internal hubs to provide multiple ports. Even if you have USB 3 compatible host and hubs, USB 1.x and 2.0 will still have only access to a separate shared 480Mbps - it won't be "upgraded" to use the USB 3 pool.

0

On a Macbook Pro 15" Late 2011 It has 2.0 USB ports

I only get a max USB 2.0 speed of 40 MB/S transferring a large 1 GB file from a macbook ssd to an external ssd via a USB 2.0 port.

Here is the setup with USB 2.0 being the bottleneck.

  1. Within the Macbook's main HDD bay (not the CD bay) is an Internal SATA 3 Samsung 840 PRO SSD 256 GB
  2. through the Macbook's USB 2.0 port (weakest/slowest link in the chain)
  3. attached to a USB 3.0 NEXSTAR CX External Enclosure
  4. containing a SATA OCZ Vertex 4 SSD 128 GB

I also did the above test with a regular spinning 2.5" Laptop 500 GB Toshiba HDD as the external drive inside the USB 3.0 Nexstar CX External Enclosure and it starts off with write speeds of 40 MB/s, but as the 500 GB gets filled up it gets slower effective rpm near the centre of the hdd disc and it slows down to 25 MB/s. I know the 500 GB drive is not the bottleneck since it has read/write speeds of 70 MB/s if it was attached to a USB 3.0 port on a newer Macbook.

So once again USB 2.0 maxes out at 40 MB/s and slows down from the next weakest link at which is the 25 MB/s HDD should it get filled up. I suspect other memory like those found in USB flash drives could also be the slowest weakest link if they are the cheap kind.

-2

The 5400 rpm hard disc drives with USB2 are limited by the drive hardware and the SATA controller. Even 7200 rpm or 10,000 rpm drives in a good USB caddy aren't really up to much. You need an SSD to reach the USB2 limit. Most of the "lost bandwidth" is actually controller latency, where it just takes time to turn around from writing the data to sending the completion signal.

3
  • 3
    My 5400RPM hard disks can do a hell of a lot better than 30MB/s Nov 21, 2015 at 6:24
  • @BillyONeal Can do, yes, but will it? In bad usage scenarios (random IO) that can go down to 1 MB/s easily. Sep 1, 2016 at 19:03
  • 1
    @MaartenBodewes: This was a sequential I/O question -- "maximum" speed, not speed for a given workload. Sep 1, 2016 at 20:19

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