USB Host Mass Storage speed

Hello everybody,
I’m trying to copy a file from a USB key to another one both with FAT32, USB 2.0 and connected to a USB 2.0 HUB wich is connected to a FEZ Domino. I’m simply using File.Copy("\USB\file.txt", “\USB0\file.txt”). Small files get copied but if I try to copy a more large file (more than 20 MB) it take a lot of time (more than an hour). Is It possible I’m doing something wrong? How much is the data rate? What else can I try? Any help will be appreciated, thanks.

Hi Raziel,

I haven’t done anything with FEZ Domino or USB stuff at all.
But mostly when i am debugging i try to exclude everything.

Ttry this:
File.Copy("\USB0\file.txt", “\USB\file.txt”)
Copy the file the other way. From USB0 to USB instead of USB to USB0.
If the coding is correct, maybe the USB key is corrupt on reading of even writing.

I tryed to copy different files, with many usb keys and in many ways. It’s seems to me a problem of speed of the USB controller. Can anyone confirm that? Is it possible the controller of the USBWiz144 goes so slowly?

First format both USB drives on you computer. This step is to avoid fragmentation.
Put 1 MB file on one of them.
copy the file using FEZ
Time the copy command. What result do you get?
DateTime start = DateTime.Now;
Copy()
DateTime end = DateTime.Now;

Also, see this:
http://www.tinyclr.com/forum/1/1858/

I did the test of the link. Here are my results

Sony Microvault 8 GB With HUB

Testing write…
Write Speed >>>
Total time: 00:00:22.1591276
Total time in seconds: 22.1591282 seconds
Speed: 46.2112045 KBytes/s
Testing read…
Read Speed >>>
Total time: 00:00:02.2865975
Total time in seconds: 2.28659749 seconds
Speed: 447.826965 KBytes/s

Sony Microvault 8 GB Without HUB

Testing write…
Write Speed >>>
Total time: 00:00:21.5607237
Total time in seconds: 21.5607224 seconds
Speed: 47.4937706 KBytes/s
Testing read…
Read Speed >>>
Total time: 00:00:02.2815695
Total time in seconds: 2.28156948 seconds
Speed: 448.813843 KBytes/s

SanDisk cruzer 4 GB With HUB

Testing write…
Write Speed >>>
Total time: 00:00:08.1412881
Total time in seconds: 8.1412878 seconds
Speed: 125.778625 KBytes/s
Testing read…
Read Speed >>>
Total time: 00:00:02.1742171
Total time in seconds: 2.17421722 seconds
Speed: 470.974091 KBytes/s

SanDisk cruzer 4 GB Without HUB

Testing write…
Write Speed >>>
Total time: 00:00:07.8625302
Total time in seconds: 7.86253023 seconds
Speed: 130.237976 KBytes/s
Testing read…
Read Speed >>>
Total time: 00:00:02.1735321
Total time in seconds: 2.17353201 seconds
Speed: 471.122589 KBytes/s

Kingstone SD Card 2 GB with SD to USB adapter

Write Speed >>>
Total time: 00:00:06.8753339
Total time in seconds: 6.87533379 seconds
Speed: 148.938217 KBytes/s
Testing read…
Read Speed >>>
Total time: 00:00:02.2204431
Total time in seconds: 2.22044325 seconds
Speed: 461.169189 KBytes/s

If I use the Sony Microvault for destination it take 7 minutes to copy the file of 20MB. With the Cruzer less than 3 minutes. These values are compatible with the write speed I obtained from the test. The strange thing is that if I use the SD Card (with the adapter) for destination (with the same origin) It take more than 1 hour.

I also have a Maxell 1GB USB Key but I couldn’t made any test with it because it takes too much time. The strange thing is that with the PC every of those keys (including the maxell) takes only few second to copy (with the same HUB) the 20 MB file (Note: I disabled the write cache).

The PC have thousands of megabytes of RAM to buffer all kind of info about the driver to speed things up. Also, the PC use USB2 high speed 480mbps where current devices run at 12mbps

For the Microvault, did you format it on the computer before testing?
Also, try different format cluster sizes, does it make a difference?

Ops. I believed FEZ Domino has full speed USB 2.0, but now I realized it’s impossible with 72 MHz clock. So everything get sense now. The differences between those devices have no meaning compared to the PC.

It is USB 2.0 compatible but runs at 12mbps. It wouldn’t make sense to have a 480mbps bus on a 72Mhz micro :slight_smile: