InputStick: Android to USB wireless adapter


Well I'm not really sure if this is the best place for this thread, since it is related to many things (hardware, Android accessory, API and applications).

OK, so here's a project that I've been working on for quiet some time: InputStick, which is Android to USB wireless adapter (I guess that's the best way to describe it).
InputStick Home (still under construction)
InputStick Blog (blog where I try to post development updates)

What is it?
It's a small USB dongle that allows Android applications to emulate USB devices, like keyboard, mouse, game controllers etc (mostly HID devices, but not only). This allows apps to type, move mouse pointer, control multimedia playback, control games and many other things.

How is it different form software-only solutions?
  • plug and play: no configuration/software/custom drivers
  • works with any USB enabled system (PC, Android, consoles, Raspberry Pi etc)
  • no network connection is necessary (just Bluetooth in your Android device)

The only bad thing is that you need additional piece of hardware, but that's the price of compatibility and very quick set-up time.

How to use it?
  • plug InputStick into USB port
  • run an app, connect with InputStick (I usually include "auto-connect" option)
  • wait a few seconds (initiating Bluetooth connection, uploading configuration data, USB enumeration)
  • it's ready, now the app can do anything that can be done using USB device it is emulating

How does it work?
InputStick is a "man in the middle" between Android device and USB host:
Android Device <-(Bluetooth)-> InputStick <-(USB)-> USB Host (PC, laptop, game console, etc).

I came up with several apps, for different scenarios. Some examples:
  • Password Manager that can type (as a USB keyboard) web page address, user name and passwords
  • Barcode Scanner that can type scanned codes
  • Application that allows to execute pre-defined sequences of keyboard and mouse actions (macros)
  • Remote controller (keyboard and mouse)
  • Presentation remote

Also, I work on an API that allows to easily add support for InputStcik in applications. It can be as easy as:

(...) //handle some callbacks

API takes care of managing Bluetooth connection and whole USB thing. There are following USB devices already implemented: keyboard, mouse, gamepad, consumer control (volume, playback).

I've got a few people interested in this project, so I consider making a short production run some time soon. I'm interested in your opinions, suggestions and questions. Thanks for reading, if you've got this far :)