Two of my friends and I want to build a device that helps one to transfer data from one USB mass storage device to another using a a touch screen interface. We have worked on embedded projects before but they were much simpler and not related to USB. Therefore , we have started reading relevant material on USB. (Jan Axelson usb complete and USB mass Storage if it helps.)However, I feel this is really slowing us down.

We've only figured out a rough schematic of the project. We know that 2 hosts will be required for each mass storage device connected our device.Each of the host controllers will be connected to an MCU and a 3rd MCU will be required for the touch screen interface. However we can't move forward and tell what needs to be done next. We plan to use the TUSB7320 as the host controller. My question has a few parts:

  • How much time will this project take given our knowledge about USBs and our current approach?Can it be completed by March next year?
  • Is there any other relevant(or better) literature or tutorial we ought to look into apart from what was mentioned?
  • Are we right about the rough schematic that I described earlier in this question?
  • How should we divide work in order to optimize manpower?

I understand these questions (especially the last one) may be not be in accordance with the policy of the website. But we are only students and really want to make this work. We haven't found a suitable guide even after a long search and some guidance from experts such as yourselves will be a blessing! I earnestly request you to provide us with advice or at least point us in the right direction.

******* UPDATE *******

Thanks guys for all the help! We've made some progress and decided the main components for our device. Also, we'll be making it for the USB 2.0 now!

We've decided to use ARM9. This is because we came by a person who introduced us to friendly ARM and told us it could work for us.

We'll be dumping the TUSB7320 and instead use the DS Vinculum 2 dual host controller IC.

Also, we are going to use an operating system to ease our work. We're torn between Linux,windows CE and Android. I personally think we should go with linux because that'll help us protect the device from viruses(I hope I'm right?) and its free. However my partners think android will be a better option because there are many people who are into android and might know a thing or two that could help us out.

Are there other things we should consider or crucial details that we're missing out on?Which OS suits this device best and how should we go about the software especially the end user GUI on the touch screen?

  • 2
    \$\begingroup\$ This would typically be done with one processor and a hub, it's unclear that there will be any advantage in trying for USB3. Practical approaches could be completed in as little as a week (but on average a good semester scale project) however if you insist on doing things in a roundabout fashion you could probably manage to consume a year or more. \$\endgroup\$ Commented Sep 28, 2013 at 19:25
  • \$\begingroup\$ @ChrisStratton We wanted to incorporate USB 3.0 to add more function to the device. And what exactly do you mean by a practical approach? \$\endgroup\$ Commented Sep 29, 2013 at 5:38
  • 1
    \$\begingroup\$ Most flash based devices cannot, which calls the benefit of a faster interface into question. \$\endgroup\$ Commented Sep 30, 2013 at 12:03
  • 3
    \$\begingroup\$ If you are new to USB, there is an excellent introduction at beyondlogic.org/usbnutshell. And unless you absolutely require the higher data rates of USB3, you'll be much better off sticking with USB2. \$\endgroup\$
    – dwikle
    Commented Oct 1, 2013 at 2:04
  • 1
    \$\begingroup\$ "nstead use the DS Vinculum 2 dual host controller IC" -- please note that while the DS Vinculum 2 supports USB 2.0 protocol, it only does so at a maximum rate of 12 Mbs (USB full speed). The DS Vinculum 2 does not support 480 Mbs (USB high speed) introduced with USB 2.0. I have been bitten by this before, thinking a USB 2.0 device always implied support for 480 Mbs. \$\endgroup\$
    – tcrosley
    Commented Dec 1, 2013 at 6:54

1 Answer 1


For the software, I definitely think that Linux would be the way to go. The reasons I would choose it over android are threefold:

  1. Linux has a much easier way of handling file systems than Android. It was built as a server operating system, as opposed to android which was built to run on phones and tablets, so is less file-oriented, despite essentially being a Linux distro at its core.
  2. There are many platforms running Linux that you could use for a base. Embedded Linux devices are everywhere, whereas android devices are few and far between. I would heartily recommend starting with one of these platforms, as they will help get this off the ground much faster.
  3. Yes, you are correct about Linux being less prone to viruses.

The GUI problem is a major consideration. However, you are in luck. If you (or someone in your team) is familiar with C, writing a GUI in GTK+ would be the easy way out. This requires installing a bit more software (X, GNOME) than is ideal for an embedded platform, but all things considered I think it is the best way.

Hope this helps!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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