I've been struggling to get decent USB transfer speeds with my Ubuntu computer, which I've asked about on the Ask Ubuntu site.

The answers there have helped me improve USB speeds overall, but it seems my phone is still much slower than other devices. For example, I can transfer to my Sony video camera at about 17.5MB/s, but transferring files to my Android phone (Samsung Galaxy 2 with ICS) is running at about 2MB/s.

How can I determine if 2MB/s is a normal transfer speed for my Android phone? In other words, what do I need to know about it's SD card (it has two, internal and external) specifications or other details in order to determine if I am getting the maximum performance or if it is still hobbled?

  • I'm not entirely sure that there's an established "normal" speed that you can really point to. Are you transferring data to the phone's internal storage, or to a microSD card? Jul 12, 2012 at 18:14

2 Answers 2


There's no such thing as normal USB transfer speed. It depends on several factors including but not limited to:

  • Class of the sdcard
  • USB speed (1.1 vs 2.0)
  • Performance and load of the the computer

Out of these three the one with the most influence is the class of the sdcard. The class describes the minimum write speed of the card in MB/s. For example a Class 10 card has a minimum writing speed of 10MB/s.
Based on this your sdcard is most likely a Class 2.

If you can't locate your sdcard Class, there's a free tool (only for windows users) that gives you the transfer rate of your sdcard:

H2testw 1.4

After you've finished verifying your unit you will be able to see the exact time it took for the operation to complete, the number of megabytes tested, and, of course, the writing / reading speed.

As a side note: The cache that Abdul mentions has nothing to do with this. That's for reading and only applies if the card is mounted in the phone.

  • I've proposed an edit with a windows app that reports the sdcard speed. Seems relevant! By the way, +1 for you :)
    – Zuul
    Jul 12, 2012 at 22:27
  • Thanks for this answer, as it made me realize my question could have been phrased better. I guess what I need to know is, how do I determine what class my SD cards are (the GS2 has two, internal and external) and then what should I expect from them. I've updated my question accordingly.
    – Questioner
    Jul 13, 2012 at 2:40

The transfer speed majorly depends on the 'class' of your SD card.



I googled about this issue and it appears that the slow transfer speeds is due to the Cache size for reading from SD Card. It's set to 128 KB in most cases. You can check it by running the following command.

adb shell cat /sys/devices/virtual/bdi/179:0/read_ahead_kb

To change this value you must have root access. Also the changes will be reset on reboot. Developers at xda have made scripts to make this change persist, check this link for a detailed explanation.

  • That cache I for reads
    – R R
    Jul 12, 2012 at 20:41
  • OfCourse, the transfer speed majorly depends on the 'class' of the sdcard and thats what my answer was. The Edit was just some more info on the issue the OP was facing i.e. slow transfer speeds.
    – kn330
    Jul 13, 2012 at 7:23

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .