Hardware interfacing w/ Ben - strategies
ebrombaugh1 at cox.net
Mon Jun 13 02:34:24 EDT 2011
Hey all - coming out of lurk mode to toss out an idea.
One of the shortcomings of the Ben design is that its USB port is device-only. Werner has gotten around that by using the SD/MMC port in bit-banged GPIO mode (or other modes) to accomplish some fantastic things like the UBB, atben and VGA interface.
An alternative is to try something similar to what Android is doing for hardware interfacing via USB. As you may know, Android only specifies that phones provide USB device capability, much like Ben. To allow Android smartphones to interface with the external world there are a number of imaginative workarounds, but they generally boil down to making some simple external device that acts as a limited USB host which enumerates the Android phone and starts up some sort of existing protocol.
Prior to Android 2.3.4 this involved using the built-in Android Debug Bridge (ADB), but with the release of 2.3.4 they're also providing the Accessory Developers Kit (ADK). This is a simple low-level byte oriented data pipe between an off-board peripheral that acts as a host, enumerating the phone and starting up the ADK protocol. Google provides a fairly expensive Arduino-oriented development system to support this, but already there are a number of other folks working to provide this at a more reasonable price.
So the question becomes - what are the hurdles to overcome in building an ADK-compatible or ADK-like USB host emulation interface for use with Ben? A few things to consider.
* Is there a broad enough desire for hardware interfacing on the Ben platform to justify going forward with such a development, or are the existing options (ubb, atben, etc) sufficient?
* Freedom is critical to the qi-hardware community: Is the Android ADK protocol sufficiently open and free to use?
* If yes to the above, what would be involved in developing an ADK kernel driver for Ben's USB device port?
* If no, could something equivalent be developed by the qi-hardware community?
* What sort of external hardware device would be required? The Android community has things like the IOIO (http://ytai-mer.blogspot.com/2011/06/ioio-over-openaccessory-adk-available.html) which appear to be based on simple MCUs with host/otg capability.
More information about the discussion