Hacking Roomba

Roombongle! A Roomba USB dongle

[originally published 19 July 2006 on todbot]

The RooStick by RoombaDevTools.com is pretty cool. It’s tiny and it’s USB, which is about all you need for me to bring you home.

But if you want to hack together something similar and you don’t want to build a huge honking Roomba serial tether, you could build the Roombongle!

The Roombongle is a USB adapter that allows you to control your Roomba from your computer, via the Roomba’s SCI protocol. Don’t have a Roomba? Get one!


Things you’ll need to build the Roombongle:
USB data cable for Nokia phones (aka “FutureDial Cable 22”) – $20
– Mini-Din 8-pin cable, Jameco #10604, $3.30

[Update: see comments below, you can get the USB data cable for $6.99!]

This puts the cost at about $24. A RooStick costs $29, but you also need their $17 cable, so $46. Roombongle is half the price, but it’ll take you about an hour to build. How much is an hour of your time worth? :)

The Roombongle is made from a phone sync cable. Out of the box it’s pretty unassuming:

Make sure the cable you get has the little bulge in the middle. That’s where the magic happens.

It turns out that if you take the little bulge apart, there’s a friendly little PL2303 USB-to-serial adapter chip inside:

You can download the spec sheet for said chip and you’ll see that it normally works at 3.3V, but its inputs are 5V-tolerant and its 3.3V outputs are within the valid range for 5V logic. Thus, the Roomba should understand it, and it should understand the Roomba. Obviously the thing to do next is graft a Roomba-compatible Mini-DIN 8-pin cable to it:

Just RX, TX, and GND are all that’s needed. You can route the +16V from the Roomba to an external connector if you want. That’s what the 9V connector-like thing is in the top photo. Once the wires are soldered down, just snap the case back together, use a little hot glue to seal in the Roomba cable and act as a strain relief, and you’re done.

Now with the Roombongle, your laptop is free to explore its surroundings, no longer reliant on you to carry it from place to place.

Thanks and Inspiration
The guys over at NSLU2-Linux did the hard work of figuring out these Radio Shack data cables. And not just the Nokia ones, but all the other sync cables RS sells.

The PL2303 chip is a pretty good one and supported on all the OSes. Linux has the driver built into the kernel so you can just plug it in and go if you’re running Ubuntu.

17 comments

17 Comments so far

  1. Richard December 11th, 2006 11:57 am

    This seems like a perfect opportunity to come up with a useful hack. With all that computing power, you could make a roomba that properly maps out a room and cleans it in the most efficient manner. You could even mark out areas that it couldn’t go in (e.g. because of cables lying everywhere).

  2. Shawn June 7th, 2007 3:10 pm

    Hi Tod, Great site! I am just thinking about buying a roomba for projects and happened to see your blog. I hope this is not a stupid question: do you think it is possible to connect a USB wifi adapter to the above USB connection on the roomba (or the roostick) and control it wirelessly?

  3. todbot June 7th, 2007 3:42 pm

    Hi Shawn,
    Not exactly, but what you want is possible. USB is an asymmetric protocol, consisting of USB peripherals and USB hosts. USB peripherals are much simpler than USB hosts (typically a computer). The USB-to-serial adapter above is a USB peripheral, and thus turns a Roomba into a USB peripheral. To make a Roomba into a USB host (and thus able to use USB peripherals like USB WiFi adapter), essentially requires a full computer operating system. It’s not impossible though. In the book I describe how to add Linux to a Roomba, and thus any USB peripheral you want.

  4. Shawn June 10th, 2007 4:20 pm

    Hello Tod,
    Thanks for your prompt feedback. I definitely need to get your book. Looks like there is exciting possibilities with roomba! It would be awesome if you could add an OS to roomba!!

  5. Shawn June 29th, 2007 7:47 pm

    Hi Tod, Just got my data cable from ebay (for VX4500 for only $6.99 inc shipping) and it has a PL-2303 like you mentioned. But, how can you figure out the Tx, Rx & GND on the serial side of the data cable circuitry?

  6. todbot June 29th, 2007 8:30 pm

    Hi Shawn,
    Great price! If you can’t find someone else on the Net who’s used a similar cable to hook up to their project, then I’d suggest downloading the PL-2303 datasheet and following the circuit traces from phone wires to the PL-2303 chip. It should be pretty straight-forward. A bright light really helps see through the board if the traces are on both sides.

    The other option is the find the pinout for the VX4500 connector and see which pins are TX, RX & GND.

  7. Shawn July 5th, 2007 9:46 pm

    Tod, The board looks exactly like the one they have at NSLU2-Linux. And I also did manage to get hold of the pinout for VX4500 pin 13 (RED) & 14 (Orange) corresponds to Rx & Tx on the phone (GND is 12-BRWN& 19-BLK for anyone’s future reference). I was a little confused because they had those two cables marked in reverse on the image at NSLU2-Linux. Could it be because it is Rx and Tx from the point of PL-2303 rather than the phone’s perspective? If that is the case then should I be connecting the Rx from roomba (pin#3) to the Tx of PL-2303 and vice versa? I just don’t want to wire the roomba all wrong and blow it up:))

    Thanks for your quick responses!!

  8. Aaron E July 24th, 2007 4:09 pm

    FYI for anyone reading this more recently, RadioShack no longer carries FutureDial Cables. They stopped when they stopped carrying Verizon phones.

    At any rate, look for a data cable for the phones mentioned on the NSLU2-Linux Tod mentions, and you’ll be able to find something compatible.

  9. todbot July 24th, 2007 4:12 pm

    Thanks Aaron, though that does suck. But then I’ve noticed it becoming harder to find serial-based sync cables as modern phones move to having USB interfaces inside them.

    Fortunately, I bet EBay will always have them. :)

  10. Aaron E July 28th, 2007 1:26 pm

    A further note on that. I picked up a cable with a bulge in it for the VX4500 hoping that like Shawn, I would get a PL2303. Unfortunately it’s a no go. My Cable had just some basic electronics inside. (It was an OEM LG USB7000… DO NOT get this cable!)

    So If you can, grab a Futuredial cable. They seem to be the ones that reliably have the PL2303 chip that makes this thing possible.

  11. Rich Flowers August 15th, 2007 10:15 am

    I found a couple of these FutureDial cables on eBay recently

  12. Ryan Jones January 22nd, 2008 2:09 pm

    You can get the futuredial cable here.
    Only $6.99

    http://www.markdownalley.com/ShowItem.cfm?itemid=1523

  13. todbot January 22nd, 2008 3:01 pm

    Thanks Ryan, that’s awesome!

  14. […] Roomba USB Interface […]

  15. Brad Wilmot February 11th, 2010 8:14 am

    You can also get the USB programming cable for the Uniden scanners. It has the same chip in it, and you can usually find it on Ebay for under $10. It’s put together the same way as the Futuredial cables.

  16. Edu February 16th, 2012 1:31 am

    Hi,

    I’ve tried this hack with a Nokica ca-42 cable that have the PL2303, so it does the USB-serial conversion.

    I’ve just connected the GND, TX and RX as you explain her, but when connected to the PC and Roomba 530 (turned on), the RoombaComm says that Roomba is not detected.

    So, the problem could bae that the DD singnal is not connected?

    If, so, wich transistor do I have to put between RTS and Roomba power signal?

    Thanks a lot.

  17. Cory D March 7th, 2012 11:48 am

    I have an extra cable that uses the prolific PL2303 to go from USB to serial and I was wondering, instead of dissecting it, couldn’t I just wire an adapter for it that goes from DB-9 to 8-pin mini-din?

    It seems like it shouldn’t be more complicated than that, but when I google “Roomba RS-232” it looks like it’s not as simple as I was expecting. http://PLACEHOLDER.wpsho/projects/build-a-roomba-serial-tether/

Leave a reply

You must be logged in to post a comment.