[EDIT] This post is about legacy product which is no longer supported. Visit USB Host Shield project page for up-to-date information[/EDIT]
Arduino USB Host Shields are in the store. If you are not yet familiar with the project, please browse “USB Shield” category of the site and read the articles. In short, the purpose of this shield is to add USB Host interface capability to Arduino. The software libraries for this shield currently support control and bulk-in transfers, while bulk-out transfer is in the works. Access to GPIO pins of MAX3421E is also supported. Sketch examples, demonstrating USB device control queries and polling USB keyboard, are published. More code will be developed in the future.
At present, four configurations of the shield are available. The first one, called “Minimal”, contains USB core components only. It is compatible with 3.3V Arduinos, such as Arduino Pro from Sparkfun. Also, since no 5V is available, only communication with self-powered devices is possible. Moreover, not every self-powered device would work in this configuration. For unknown reasons, some external hard drives refused to answer until VBUS voltage was raised to 5V. On the other hand, all printers and digital cameras that I and several beta-testers tried worked fine as well as other people’s external hard drives. “Minimal” configuration is the best one for battery-powered projects since 3.3V Arduinos consume less electricity.
The second configuration is called “Simple” and works with Adruinos containing both 3.3V and 5V supplies, such as Duemilanove. In addition to USB core components it contains level translators to interface 3.3V and 5V parts. In this configuration, 3.3V is used to power USB core and receiving level translator, and 5V is used to supply Vbus and transmitting level translator. The “Simple” configuration is easy to understand and works with bus-powered and self-powered devices. It is most suitable for everyday use; if you don’t have special requirements, choose this one. I’m using this configuration in my development setup.
Other two configurations are somewhat advanced. The “5V only” one may be used with older 5V-only Arduinos. It contains level translators and 5V to 3.3V supply for MAX3421E. The “3 to 5” may be used with 3.3V Arduino and contains 3.3 to 5V converter to provide power to Vbus, LCD contrast bias and anything else up to 600ma. I don’t anticipate either of those two configurations to be very popular; “3 to 5” may become standard in the future, when Arduinos drop 5V support altogether.
I am hoping that my configurations are useful in many situations. If you think that some other configuration may be useful, please let me know. Also, if you have questions, please do not hesitate to ask.