Asked — Edited
Resolved Resolved by Dunning-Kruger!

Roomba Connection

I recently purchased a EZ4 board and I was anxious to use it. I went through two cables (mini din to molex) both of them traced correctly but yet I got nothing when I went into ARC.

The camera functioned (although it appears to only take up half the image window), I could connect to the web server no problem, but not the Roomba (although it acted like it wanted to connect).

In your pin out you have two pins being used one is ground and one is sending 5 volts (pin 3) to the create. Which confuses me because the directions make note to measure the voltage coming from the cable however I believe pin 3 SENDS to the Roomba not receives, am I misunderstanding?

My last attempt I took a PS2 cable put a meter lead on the pins you mentioned and then on the bare wire, until I had a complete connection. I attached those two to a molex connector with servo wire double checked the connections and still nada.

Help? stress tired


Upgrade to ARC Pro

Your robot can be more than a simple automated machine with the power of ARC Pro!


The web server is wifi, the Roomba is serial.... apples and oranges... Totally unrelated...

Pin 3 --- to data pin on ezb D0 Pin 7 --- to the grd pin on the ezb D0

  1. First are you connected to your ezb in ARC? That means a solid green or blue led on the ezb...

  2. Which version of the Roomba do you have 400 series or 500 series? (I think you said Create, but what version 1 or 2?)

3 Have you tried the built in Roomba control in ARC yet? Are you using port D0 on your ezb?

  1. Do you have a copy of the Roomba ROI pdf? (commands and communication protocol manual)

If you wired the plug correctly it will work ( I own a couple of 400 series Create and a 500 series Create is on the way)...

I have an ARC file on how to connect and drive around a series 500 Roomba with a EZB4 here in the EZ cloud... Look under robot apps, then sharing in the drop down box for it... It is called Roomba 500 custom movement panel... It works after all I wrote it lol...


No no no do not connect power from ezb to roomba or you will damage the roomba! The instructions clearly say to connect the signal and ground to the roomba. Hopefully you did not damage the roomba by giving it power to the signal port. Fingers crossed!


hal, IRobot Roomba or Create has its own power, only connect 2 wires (to send serial commands), ground and pin 3. Not sure of your actual application? Here is what I use on IRobot Create V1, I just tested it on EZB4 with my public file, CaptainAnndroid public is in the cloud.

3 pin is RXD 0-5V Serial input to Roomba

As Richard said refer to IRobot Roomba SCI. If you are just trying to send commands, pin 3 is correct. Turn on your IRobot power. This app will send the "init" command at connection. It will also use a custom Movement Panel for forward, etc.. This is first time trying it on a EZB4 using D0, it seems to work great sending all of my custom Movement Panel send serial commands. Steve S "Edit"- ... Video to follow


Hal, here is short video showing EZB4 on a IRobot Create v1 using my app CaptainAnn....., after power is first enabled on your Irobot, with the "init" command @ connection, and my custom Movement Panel send serial commands. You forced me to try something new today! Hope something helps. Steve S


Okay, so let me see if I can answer everyones wonderful feedback ...

(No DJ, I'm pretty sure I'm safe on connecting the power... thanks though ...:D )

  1. The cable I had connected from the Roomba to the Ez4 had the pins in the diagram connected to the servo cable. There was no power coming from the cable and I wouldn't have expected it since we're not trying to power between the two.

  2. The cable is from an old PS2 mouse with the center tab removed and to confirm the two cables I had connected I metered from the pin in the connector to the end of the wire. They matched the two in the digram (although something now must be jacked up).

  3. My earlier comment on the page being incorrect is that it mentions you should get 5v across the cable when you measure it plugged into the Roomba, I am not sure how though as the cable is only made to send commands not for power so I am thinking something doesn't jive on the directions.

  4. This is a Roomba Create Version 1. (I keep forgetting the changed the color and called it new;) ).

Here's the answers to the other questions from above:


The web server is wifi, the Roomba is serial.... apples and oranges... Totally unrelated...

Yes, my comment was intended to show the board had power, was live and I was able to get the ARC tool to see it. They are related as much as the board has to be active.


Pin 3 --- to data pin on ezb D0 Pin 7 --- to the grd pin on the ezb D0

Correct, although it doesn't have to be D0 but that is what I attempted to use.

I think this is part of the confusion, so the PS/2 has 6 actual pins I can connect to coming out of the top of the cable and then off to the servo cable, and I think what's getting me jacked up are the pin numbers being used. The instructions are referencing pin numbers on the Roomba connector but and not the PS/2 connector (and again as I said the mention of power ... which struck me as odd).

I looked over the screenshot ( if that is a PS/2 connector with the tab removed the two pins showing at the top that would be closest together (with the notch at the bottom as shown) would be white on pin 4 and black on pin 5.

So I've ordered from Amazon a PS/2 mini din that I can just get to the pins on and a servo connector with the molex end on it. I'm just going to solder it from scratch instead of using an existing cable. I want to make sure I've got this correct ...

  • On the PS/2 plug, removing the tab is in theory removing pin #6 from the Roomba side.
  • Data (White wire), pin #4 on PS/2 plug (in a PS/2 pinout this is defined as +5v) on the Roomba this is pin #3
  • Red wire, not used
  • (Ground)Black wire, pin #5 on PS/2 plug (in a PS/2 pinout this is defined as CLOCK) on the Roomba this is pin #7

Just my thinking here but for someone who's not as savvy as us, it may help to reference pins on each side. I can toss together a quick diagram (once I'm up and running here).


1) First are you connected to your ezb in ARC? That means a solid green or blue led on the ezb...



2) Which version of the Roomba do you have 400 series or 500 series? (I think you said Create, but what version 1 or 2?)

Create Version 1 - So it's a 500 series I think.


3 Have you tried the built in Roomba control in ARC yet? Are you using port D0 on your ezb?

Yes, as mentioned before I can see the camera, I can see the board, the board just doesn't see the Roomba via D0.


4) Do you have a copy of the Roomba ROI pdf? (commands and communication protocol manual)

Somewhere around I believe. On page 3 it shows the PIN out and I see that 3 is input to Roomba and 7 is ground (same as 01 and 14 on the serial connector).


If you wired the plug correctly it will work ( I own a couple of 400 series Create and a 500 series Create is on the way)...

The meter says it's wired correctly, my gut tells me somethings hinky though. I even took apart a Bluetooth cable I had working since I knew the pins / cables were correct ... no joy. I am sure it's between the two cables and their connection.


I have an ARC file on how to connect and drive around a series 500 Roomba with a EZB4 here in the EZ cloud... Look under robot apps, then sharing in the drop down box for it... It is called Roomba 500 custom movement panel... It works after all I wrote it lol...

Thank you I will take a look, the next project is RoboPhilo, Parrot Two, Myo Armband and Darwin Mini ... Yes, it's an addiction User-inserted image


I found that my 655 Roomba wasn't working right in the Roomba control in ARC. Richard sent me a project file from which I got the roomba to work. Maybe you are having the problem too?


Create 1 is a 400 series (it is white, green is the new version 2)... Yes, you can use any port but D0 is the only port you can use with the Roomba control panel... If you have the white Create in the settings you have to use the "Old Protocol" not the 500 series one...


Oh before I forget THANK YOU all for your help with your answers and you too Steve. Once I get this cable sorted out, I have a question for you about why I'm only getting half image on the camera.

(This create FYI, was running ROS before with Kinect, Beaglebone and cape, then went to Bluetooth with Beaglebone and custom code). If I can get this working like I think it will this will be MUCH easier !

Thanks again guys!


Is there something blocking the camera lens? Piece of plastic or?


Richard old friend, you just may be a genius ... (nothing blocking the lens I can see so far, checked that first but I'll double check ...)

Once I get the parts in and soldered up, I'll give her a second go and let you know.

What is this project file they speak of? It sounded like Steve had something custom too, is it non standard ?


HA,Ha I am no genius, I can assure you of that.... but thanks anyway.... Not sure about Steve, but I use a custom Movement Panel to drive my create... Basically it is sending 1 line serial commands for forward, left, right, reverse and stop in their respective scripts... Have a look at the custom Movement Panel and you will see what I mean...


Okay, I will take a look ... I'll have to either reboot into Windows or bring up a VM so it may take a bit.

I thought there was mention of a custom file you sent, I'm sorry I was confused. Sounds like Steve also created a custom panel (I'll go look at his in a second too).

You're using a custom one since the default wouldn't work?

So you're basically setting something like Forward(255, 5000) in the movement script attached to your custom panel?


Thought I'd throw in my 2 cents of info here. One additional thing I do is cut the red lead back an inch or two on both ends of a servo cable before making a Roomba cable. Also you can get 7 pin mini din connector on ebay for about $1 each (2 weeks from China).

User-inserted image

User-inserted image


So once I got a connector that I could take a part and then a handful of cables instead of using an older PS2 wire and tracing I got it to work (so far with the standard panel).

The next thing is adding two servos from Rolli to handle the camera X/Y/Z movement for tracking. I have several CV algos of my own but I want to run through DJ's first and then from there.

I am glad he's got an API / SDK and Python / Node.js support.

So to my new virtual community friends ... thanks for your support!


@RobotDoc, thanks for the reply ... two things though.

  1. Understanding the cable wasn't the issue as much as the pins DJ refers to are for the Roomba connector and not the actual PS/2 connector. I am working on some documentation that shows each and the pins across them. (oh and those are a PITA to solder).

  2. You need to use pin #3 and #7 as the Roomba Identified pins. Although #6 is also grnd and functionally it would work, in the PS/2 cable it does not have as many pins as either the 8 or 7 pin Roomba version and so when you remove the plastic tab inside the male portion, you in essence end up with a space where your pin #6 would be. You can see my earlier comment to see the pins for the PS/2 side.

Thanks for the answer though, it's appreciated.


Sorry, one more thing @Richard R and @Steve S , I was able to use the standard movement pane but for giggles I added a custom one with scripts (as you guys are doing).

I haven't run it yet (it was getting late) but I wanted to run one of the commands by you to make sure I'm on the same page.

sendSerial(d0,19200, 128 130) as an init for the device. sendSerial(do,19200, 137)


@Hal, iRobot create 1 (white one) default com speed is 57600.... You have to put it in 19200 if you want that speed.. essentially your serial commands otherwise are correct...

sendSerial(D0,57600, 128, 130) #as an init for the device.
sendSerial(D0,57600, 137) 


Perfect, thank you sir...

I glossed right over the ...

"Baud: 57600 or 19200 (see below) Data bits: 8 Parity: None Stop bits: 1 Flow control: None By default, Roomba communicates at 57600 baud. If you are using a microcontroller that does not support 57600 "


Hey DJ ... would you care if I put some instructables up with some of the configuration stuff I had to go through, and some of the programming design and all?


I'm not @DJ but I wanted to mention that we do love it when people publish instructables or other tutorials with our product as it definitely helps others when they want to try their hand at it too.


I've followed the information on this thread to create a cable for a Roomba Create 2 (the one with the green cover) which was just purchased. I'm checked the cable many times and I'm certain I have it configure for pin 3 and 7. Trying to use the Movement Panel it sends the Roomba into Spot Clean mode if I hit the up-arrow and then will stop if I hit it again. Also, the Ez-B V4 is brand new as well.

Any ideas?


Make sure your plugging the cable in the right way. I had to triple check I plugged it in right. I think the symbol on the ps2 plastic moulding faces inwards on mine. I might have wired it different than you, as the ps2 with the tab cut off fits the port multiple ways I believe.


I'm using an 8-pin Mini-Din plug, so I don't think it's possible to plug it in wrong. The plug is from an extension cable I cut in half. I used the male end and used a meter to make sure i was connecting to the pins that match up with pins 3 and 7 on the Roomba.


A couple of things to consider. The Create-2 uses the new Roomba protocol @ 115200. Make sure you have not selected the old protocol option for the control you are using. Double check that the cable is plugged into D 0. on the EZB(4) and that the connector on the Create-2 matches the picture below.

User-inserted image

Here's what the 8 pin connector pinout looks like

User-inserted image


Todd, also remember that every control has a ? (question mark) next to the X (close) button. Pressing this will load the help for that control. The Roomba Movement Panel may provide more information for you to help.

Here's a direct link:


I have pin 3 from the above diagram going to the black pin on D0 and pin 7 going to the white pin on D0.

I've tried the config with all the different settings. I have 115200 baud checked and old protocol not checked and it does nothing. The only time it responds is with baud uncheck and old protocol checked, and that's when it goes into spot clean mode.


That seems to be backwards. The black pin on the EZB(4) DO port should be Ground and that should be wired to pin 7 not pin 3.


The two cables referenced are not numbered in the same fashion and as I said before I think this is part of the confusion.

The instructions are referencing pin numbers on the Roomba connector but and not the PS/2 connector ...

  • On the PS/2 plug, removing the tab is in theory removing pin #6 from the Roomba side.
  • Data (White wire), pin #4 on PS/2 plug (in a PS/2 pinout this is defined as +5v) on the Roomba this is pin #3
  • Red wire, not used
  • (Ground)Black wire, pin #5 on PS/2 plug (in a PS/2 pinout this is defined as CLOCK) on the Roomba this is pin #7

I had about 24 inches on the cable I was using. I tried cutting it down to about 12 inches and i'm getting better results now. However, it seems to respond very intermittently, but with the correct command being execute. I'm starting to think the cable may be the issue as I don't see how the Roomba would receive the right command if it was wired wrong. I think I'm going to rummage around and look for and old PS/2 mouse and try that cable.


I suggest you find an 8 pin din plug that's new pop it open and take a servo extension cable, cutting off the end that's not used,two Hits in the iron and heat sink and done.

Some of cables for ps2 stuff actually have other issues, it's easier to start and make the who thing.

I will try to build some more videos and write ups. Also keep in mind the difference in the baud rates.

My c2 Is using now a custom flash Arduino wired to a buck transformer. I used sqare ended jumpers right into the Roomba jack and some heat since to clean it.

I have to manually drop the baud but that easy.

So use this method as a test, on the ezB in D0, plug in two jump wires a white and black and plug the other ends directly into the Roomba pins as I indicated above.

That is a good test and will work fine you can heat sink them and add pretty connections later.


@ Hal

In one of your post here, number 6 the diagram, I'm curious about it. Could you explain it a little further to me. Is there some software you use with it?



Reread my post please it's not used.

The issue is a ps2 plug has a different layout then Roomba and not all use same or correct colors.

I have been trying to explain the pins on both sides.


Yes I understand it's not being used. I was just curious about that diagram and where you got it.


To all EZB members that are interested, I will offer the correct 7 pin mini din connector that you can solder the leads to and connect into the 7 pin jack on the Roomba / Create for $5 including USPS shipping. My email is in my profile.


One last post to show the difference in pinout numbering scheme between the 7 and 8 pin mini din connector.

First is the 8 pin connector.

User-inserted image

Then the 7 pin connector

User-inserted image


i tried wiring directly with the bare jumper wire going from DO-Black (GRND) to pin 7 and D0-White (Signal) to pin 3. I'm 100% certain I have it wired according to above instructions and I'm still getting intermittent responses. It will only respond with the baud rate button checked on the config and the old protocol button not checked.

The response I get is that the first or second command sent seems to respond properly and then its is very intermittent about responding. The most consistent response comes from turning the vacuum on and off, but even that will stop working if I turn it on/off very quickly.

I'm not very hopeful the the 8-pin mini-din plug I've ordered is going to be any better then the 8-pin mini-din cable I was trying to use before.

Also, I have no problem controlling the Roomba from the computer with the USB to Serial cable the Create 2.


Why would you continue to order an 8 pin mini din when the Roomba SCI port uses a 7 pin min din ?

Sending commands using D0 on an R3 Roomba (500, 600, 700, and Create-2) may not work well due to the difference in 3.3vdc signal being sent from the EZB(4) and Roomba serial expecting 5vdc.

You might try using one of the UART ports and send test commands to see if the Roomba responds better.


@todd85 Doc's right.... grab a 7pin Mini Din... I have no issues whatsoever controlling my Create 2 (or any other Roomba for that matter) with the ezb4... Like Doc also mentioned try using the UART port instead... also again as Doc mentioned keep the cable as short as possible due the fact the ezb having a 3.3v signal pin instead of 5V


@todd85 I guess we should ask how you are controlling the Roomba from the ez-b and ARC. Are you connected to D0 from the ez-b and using the Roomba control from ARC? Otherwise, are you using a ez-b uart and using your own scripts?

I feel I should mention that the D0 control is not as reliable as using one of the 3 ez-bv4 uarts.


I just realized...with the new ARC serial port Com commands you can use a Bluetooth receiver like RooTooth on your Roomba to control the Roomba or Create through ARC without an ezb at all... :)

EDIT Ha, ha also realized you can't do anything cool without the ezb on board.... :P


Or, possibly a virtual serial port that maps a computer USB serial port to a WiFi TCP/IP address and port that is wired to the Roomba / Create SCI port.


I'm not sure why a 7-pin vs. 8-pin mini-din plug would matter. The only difference is the the center pin. I only ordered the 8 because it was cheaper and quicker to get one. Anyway, apart from that I said in my last post I was taking the two wires directly into the Roomba and getting the same result.

I've only tried controlling it from the Roomba control panel in ARC on D0. I really want to get this working for my 9 year old son. It's a good entry point for him and it was why I bought the EZ-B to begin with. It was the main reason I bought the it and I won't be a happy camper if I can't get it working.

Anyway, UPS just arrived with my 8-pin plug, so i'm going to go fire up the soldering iron and see if that helps.


The best way to do it to test is jumper wire. Get a couple peices and just put them in the Roomba plug and the other side in d0. I am building some new bots with my own boards and I've found it's the best way and also recommended by irobot too for quick testing.

The other option would be to take a servo cable and put one end on D0 and two of the wires (leave one off for now as it's not used -- white), and simply put the bare wire ends into the din plug.

This way you make sure it's not your plug or your solder, etc.

As an example I have an Arduino wired to a buck transformer and then directly into the Roomba for power and the digital ports are just jumper wires at present (until I make a cable). I of course have other items to contend with (eg: power increase during charging of the Roomba, keeping the signal alive, etc)


When connecting a servo cable to the Roomba SCI, only use the Black ( pin 7 GND) and White (pin 3 REC). Take the Red lead and cut it so that it cannot be used.


I've tried the bare wire approach. Still the same results with two different servo wires (and yes the red middle lead is removed). The new din plug I wired up also had same result.

I see from the EZ-Bv4 datasheet that D0 is an unregulated power port and is a change from EZ-Bv3. Is it possible that the 3.3v port is need to work properly and if so is there a way to use the A7 port instead? It doesn't seem like ARC is setup to let you use the Roomba on anything but D0.


@todd85 ARC can use one of the hardware serial port to communicate with the Roomba via scripts, as I mentioned this will be more reliable than D0.

D0 is a 3.3V signal, the power ports beside it are unregulated. If you were to use D5 & D6 you will likely have better results, although you will not have access to the ARC Roomba control anymore.


Like I said before I'm really looking for a way to enable to visual tools in ARC to get my 9 year old son going. Jumping right into programming probably isn't going to be the best way for him to start.

Why is that D5 & D6 would have better results? Are there known problems with ARC Roomba tools not working due to being on port D0?


@todd85 Ports 5 and 6 are UART port 1... you would use UART commands instead of sendSerial.... Like I said, I have zero issues with controlling my Create 2 and Roombas... I am Using UART port 0 (dedicated port black female header beside the I2c ports).... However, any of the 3 UART ports will work...

I wrote this for testing my 500/600/700 series Roombas... Guaranteed to work if everything is wired correctly... It uses pin D5 (UART port 1) instead of pin D0.... Run the Init script before using any of the other controls Roomb500_Test.EZB


Thanks for the the project. That did not work. Once I send the init command it locks up the EZ-B. The only option was to reboot from that point on. I even tried sending the command without the Roomba plugged in to the D5 port and same result. Certainly sending a command to an empty port should not lock up the EZ-B? Is that normal?

I've run the diagnostic test and they seem to work (of course I have no devices plugged in). Audio feature of the box work.

The EZ-B is brand new. I'm wondering if I just have a bad one?


It works, what can I say.... other people are using it too... check your mini dim and wiring. .... ?


@Richard R do you have any I2C code in your project? I wondering if you had some RGBLED eyes or something in your project that @todd85 doesn't have. I guess I could always load the project.....


Hey @Jeremie.... nope, no I2c.... just basic uart commands to the Roomba .....


Richard's project seems straight forward, the ez-b shouldn't lock up unless @todd85 is using an I2C control without an I2C device. I think I may have to dust off my Roombas again and start fiddling with them again. I might be able to work with DJ to make some changes and upgrades to the Roomba control and possibly move it from D0 to a full hardware uart.


@Jeremie This does work. ... i promise you that... if you want me to demo it on the 13th(May).... bring your Roomba to work that day..... :)


Richard, will you get cracking on that Farscape DRD shell for Roomba?


@Zap I would love too... but alas i couldn't design my way out of a paper bag. ... I would love one of those farscape DRD shells too.... :)


Oh I definitely trust that your example works @Richard, I was just thinking that it may be beneficial to upgrade the Roomba control in ARC to help @todd85 out a bit on the graphical side of things.

And yes! DRDDDDDDDDeeeeezzzz Someone needs to build one, because I want several running around cleaning up after my kids :D


todd85 one more thing to consider is that sometimes the SCI will lock up and the only way to cure it is to either disconnect the battery momentarily or send the reset command "7" to the Roomba. Then try your program controls.


I'm working on a fritzing diagram of the connections tonight, I have to build something that looks like an EzB object though.

I will also like post the instructable this week and dig up the videos.

If Todd wants to email me directly I am game just please pm me here first.


I can certainly try to reset the Roomba, but I don't see how the port can be locked up when I can control the Roomba with the USB Serial cable that came with it and Roomba's example control program.

I'm certain I'm wiring to the correct pins. The only factor I have not tried changing is the type of servo cable. I've tried a number of different ones of the same cable, but all with the same result. Is there some particular gauge or type of wire that is needed? Here is a link to the one I'm using (with the middle red cable removed)

Again, I ask, is it normal for the EZ-B to lock up when sending a command to U5 port with no wire attached? It locks up every time and I need to power cycle the EZ-B to get it to respond to anything after it locks up. It seems to me I simply have a bad unit (which is brand new) and need to get a replacement.


Hi @todd85 maybe you can share your code and we can provide some insight. Are you doing a uartinit before writing uart data to D5?


This should work... Just a simple movement test


uartinit(0, 1, 115200) #Init UART port 1 on pin D5
uartWrite(0, 1,128,132) #Init the Roomba and place in full mode

uartWrite(0,1,137,0,$speed_R,128,0) # move forward slow
uartWrite(0,1,137,0,0,0,0) #stop Roomba


22gauge is expected but I don't think required.


I've used 24, 26, and 30 gauge wiring to make connection on the Roomba 7-pin mini din.


Thanks Richard that script did the trick. I found the init command on the original script was wrong and locking up the EZ-B. After changing the init command in your original script the everything works great.

This is all with the same cable that does not wok on port D0. I think this then is confirmation that the Roomba Movement Panel that is in ARC simply does not work (at least with the hardware I have).

Hopefully I can save the custom Movement Panel and make it work with the other controls the way it is demonstrated on the video. If not, the main reason that sold me on purchasing the EZ-B is removed.

Does anyone know if ARC is open source? I didn't see it on GitHub.


@todd85.... Awesome.... Now the fun begins.... I'll look at my sample project and change it as required...

Cheers Richard



Does anyone know if ARC is open source? I didn't see it on GitHub.
No, it isn't, however there is a .NET SDK and a Mono SDK published by EZ-Robots that you can use to create your own interfaces, and some 3rd party SDK's (OpenBot and a Node.js and Python library).

See the items in the black menu bar on the software page:




It looks like the specs for the roomba serial port are 0-5 volts. If port d0 is only ouputting 0-3.3 volts the communication could be intermittent. Seems you could put a 3.3 volt to 5 volt converter between d0 port and roomba receive pin. Let me know if this could be the issue? Could be a simple fix.....Rick B.


@rbonari, incorrect. Google says:



The link from I-Robot states that the Create 2 serial port uses 5 VOLT LOGIC LEVELS for asynchronous serial communications.

It also states that Create 2 can take a 3.3 Voltage level on its rx and dd lines.

This does not mean that 3.3 volts is the ideal level that the rx line wants to see. It may work but some of the people who are having issues with the D0 port on the Roomba and Create robots could be having their issues because the receive level the robots want to see is closer to 5 volts.

I have worked as a senior electronics and engineering technician and I have seen many instances where although the spec is 0-5 volts or whatever it may be, that when you lower the voltage from the spec that all bets are off. This leads to unreliable flaky operation sometimes.

All i-robot says is that it can take 3.3 volts. They don't state that it is the ideal level. I have seen specs on their site stating the levels are 0-5 volts.

For those people having issues with d0 port connected to roomba or create, they could try a similar circuit to what is in the link you sent me to translate the d0 output of 3.3 volts to 5 volts for the roomba and create rx line. They also make translator IC's that do the translation in both directions. I believe adafruit sells them and they are pretty cheap.

what levels do the ez-bv4 uart channels put out as people seem to have more reliable communications using them.

I understand your point too, but there is a reason voltage specs are given. Would be interesting to see what I-Robot engineers have to say about this issue with regards to the 0-5 volt spec for serial communications.....Rick B.