It’s Alive: Bit-banging full-speed USB Host for the Propeller

I’d like to make a more detailed post about this once the project is a bit further along… but for now just a brief description and a couple teaser photos 🙂

This is one of those things that people have said was impossible, and I’ve wanted to try it for a while. I finally found an excuse. I wanted a way to build more cheap wireless networked devices. You can get bluetooth and wifi adapters that are microcontroller-friendly, but it’s a niche market so you’ll pay a lot. I wanted a way to use the $2 bluetooth dongles and $10 wifi adapters you can easily find online or at your local electronics shop. But these devices are all USB, and USB host controllers aren’t yet common on small hobbyist-friendly microcontrollers like the Arduino and Propeller. So, I decided I’d see if it was possible to implement a USB host controller entirely in software on the Parallax Propeller microcontroller.

Turns out that it is. This still needs more development before it’s generally useful, but it’s already showing potential. Of course there’s a long list of caveats on something that pushes the limits of both the Propeller and the USB spec, but none of them should be deal-breakers for most applications.

If you’re interested in helping with or following the project’s development, there’s a thread on the Parallax forums. The latest source code is in my usb-host Subversion repo.

IMG_1131

Screen shot 2010-04-01 at 9.24.40 PM