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.







You are my hero. Seriously.
Impressive work, serially.
I will now be able to upgrade my BS1 design. Thank-you for sharing your brilliance.
Sorry, Parallax broke all the forum links. Fixed it now.
Great stuff. I was just looking at a wireless keyboard and mouse that require a USB host. Maybe I will now have the courage to start with your code and create that.
hey friend what about arduino can we implement for arduino
one easy way is to use a USB host controller that interfaces by parallel I/O (ISP1362, ISP1161 etc). It is commonly used in printers (PicBridge).
Hi.very nice project.i want do the same job but with avr. or pic .is that possible?