HTTP Server (Custom) icon HTTP Server (Custom) — HTTP server for ARC serving HTML/CSS/PNG/JPG from ARC/HTTP Server Root; supports AJAX tags (ez-move, ez-script, ez-camera) to control the robot. Try it →
 
Roomba

Roomba by iRobot

Synthiam ARCx turns iRobot Roomba into a drivable robot with scripts, sensors, browser control, and AI-ready robotics skills.
Connection Type
Controller Dependant
Number of Servos
None
Audio Support
No
Camera Support
No
UARTs
None
I2C Support
No
ADC Ports
None
Digital Ports
None
A round robot vacuum with a small camera mast and controller board on top, driven from a tablet showing a browser dashboard with a joystick and a robot status view
iRobot Roomba + Synthiam ARCx

Turn a Roomba into a robot you can drive and program

A Roomba already has motors, wheel encoders, bumpers, cliff sensors and a rechargeable battery. Synthiam turns all of that into a robot base you can drive with a joystick, program with scripts, talk to and share from a web browser. Add a camera or servos and it becomes a complete robot.

How a Roomba works with Synthiam. A Roomba is not an EZB. Synthiam controls it through a dedicated robot skill, the iRobot Roomba Movement Panel, which speaks iRobot's own serial protocol (the SCI or the Open Interface) through the 7 pin mini-DIN port under the robot's cover. The port can be reached from a USB to TTL adapter on the computer running Synthiam, from an EZ-B v4's UART, or from a serial-to-Wi-Fi bridge. The newer connected Roombas are reached over their own Wi-Fi, and the Create 3 through ROS 2. Think of the Roomba as the robot's body and Synthiam as its brain. We recommend ARCx: its Roomba skill supports every iRobot model that can be talked to, runs on Windows, Linux and Raspberry Pi, and is used from any web browser.

Meet the robot

What is the iRobot Roomba?

The Roomba is iRobot's robot vacuum. Underneath the vacuum it is a well made, affordable mobile platform (a robot base): two driven wheels, a caster, a bumper, cliff sensors that stop it falling down stairs, wheel drop switches, a wall sensor, wheel encoders, a speaker and a self-charging battery.

iRobot documented the serial protocol that many Roombas speak, so other software can drive them and read their sensors. The Roomba 400 series, Discovery, Dirt Dog and Red speak the older SCI; the 500, 600, 700, 800 and 900 series speak the Roomba Open Interface. iRobot's Create and Create 2 are Roomba-based robots made for education and hacking, and the Create 3 is a ROS 2 robot.

Because a secondhand Roomba is easy to find and already does the hard parts of a mobile robot, it is one of the quickest ways to get a real robot base moving in Synthiam.

Roomba at a glance

TypeRobot vacuum, used as a mobile robot base
MakeriRobot
ProtocolsSCI, Roomba Open Interface, Create Open Interface, local Wi-Fi interface (connected models), ROS 2 (Create 3)
Connection7 pin mini-DIN serial port, 5V TTL, 57600 or 115200 baud
PowerThe robot's own rechargeable battery and dock
Synthiam uses it forA drivable base with bumpers, cliff sensors, odometry and docking
Websiteirobot.com
Possibilities

What you can do with a Roomba in Synthiam

The Roomba skill is a movement panel, so everything in Synthiam that moves a robot drives the Roomba: on-screen joysticks, gamepads, scripts, tracking skills, navigators and AI.

🎮

Drive it

Forward, reverse, turn and stop from the panel, the arrow keys, a joystick, Movement.Forward() in a script or the Autonomous AI skill. Top speed, turn speed and acceleration are adjustable.

📡

Read every sensor

Bumpers, light bumpers, cliff sensors, wheel drops, walls, virtual walls, buttons, motor currents, encoders and battery become global variables such as $RoombaBumpLeft and $RoombaBatteryPercent.

🛑

Stay safe

Stop at bumps, cliffs and wheel drops while driving, pause a navigation on a hazard, stop after a set time without a new command, and go home on a low battery.

🧭

Know where it is

Position from the wheel encoders, sent to the navigation messaging system with bumps as obstacles, so a mapping navigator can use it. Drive exact distances and turn exact angles from a script.

📜

React with scripts

Run a script when a button is pressed, the bumper hits something, a cliff triggers, the robot docks or leaves its dock, or the battery runs low.

🎵

Clean, dock and sing

Clean, spot clean, dock, switch the brushes and vacuum, set the LEDs and display, and play tunes written as text, such as C4:16 E4:16 G4:32.

📷

Add eyes and arms

Combine the Roomba with an EZB for a camera, servos, distance sensors and LEDs, then add face, color and object tracking, speech and AI.

📱

Custom UI widgets

Put a Robot Status widget (battery, docked, charging, Clean, Dock and Stop buttons) and a Bumpers and Cliffs widget on your own phone or tablet control screen.

🌐

Drive it from anywhere

With the Exosphere robot skill, drive your Roomba robot remotely in a web browser and invite others to use it.

Compatibility

Which iRobot robots, and how to connect them

With the robot and the baud rate both set to Automatic, the ARCx skill tries the rates iRobot robots use and asks the robot which protocol it speaks.

RobotProtocolConnectionBaud
Roomba 400 series, Discovery, Dirt Dog, RedSCISerial port, EZB UART, TCP bridge57600
Create (Create 1)Create Open InterfaceSerial port, EZB UART, TCP bridge57600
Roomba 500, 600, 700, 800, 900 seriesRoomba Open InterfaceSerial port, EZB UART, TCP bridge115200
Create 2Roomba Open InterfaceSerial port (the iRobot USB cable), EZB UART, TCP bridge115200
Roomba 900, e, i, s, j and Combo series; Braava jet m6Local MQTT over Wi-FiThe robot's own Wi-Fi-
Create 3ROS 2rosbridge-

A Roomba that was switched to 19200 baud (Clean button held at power off) answers at 19200 until its battery is removed; Automatic tries 115200, 57600 and 19200.

The mini-DIN serial port

Robots with a serial port have a 7 pin mini-DIN connector under a cover (on most Roombas under the faceplate or the handle). The serial lines are 5V TTL: use a USB to TTL adapter or the iRobot Create USB cable, and never wire them to an RS-232 port. Cross the lines over: the robot's TXD goes to the adapter's or EZB's RX.

PinNameWhat it is for
1, 2Battery +Unregulated battery voltage
3RXDSerial data into the robot (from the adapter's or EZB's TX)
4TXDSerial data out of the robot (to the adapter's or EZB's RX)
5BRCWake line. Pulled low, it wakes a sleeping Roomba; pulsed once a minute, it keeps it awake
6, 7GroundConnect to the adapter's or EZB's ground

Connection types

ConnectionUse it for
Serial portA USB cable or USB to TTL adapter on the computer running ARCx, or a Raspberry Pi's UART. Reads all sensors.
EZB hardware UARTAn EZ-B v4's UART 0, 1 or 2 wired to the mini-DIN. Reads all sensors. Set the sensor rate to 100 to 200 ms.
EZB software serialAny EZB digital port wired to the robot's RXD. Transmit only: the robot can be driven and told to clean, but there are no sensor readings, odometry or events.
Serial bridge over TCPAn ESP8266 or ESP32 running ESP-Link, a RooWifi, or ser2net on a Raspberry Pi plugged into the mini-DIN. Reads all sensors over the network. Set the bridge's own baud rate to the robot's.
Robot's own Wi-FiThe connected Roombas with no serial port. They clean, pause, resume, stop, dock, empty their bin and report their state, but cannot be driven: iRobot gives them no velocity command.
Create 3A Create 3 through a rosbridge server on its ROS 2 network. Drives, reads its hazards, IR, battery, buttons and odometry, docks and undocks.
The robot skill

The ARCx iRobot Roomba Movement Panel

The ARCx iRobot Roomba Movement Panel connected to a Roomba Open Interface robot, with direction buttons, speed sliders, a top view of the robot and battery readings
The skill's window while driving: direction buttons, speed, a live top view of the robot's sensors, readings, cleaning commands and a log.
  • Status and Connect: what robot answered, and where.
  • Direction buttons: the highlighted button is the direction the robot is moving, whoever asked for it. Click Click to use keys to drive with the arrow keys.
  • The robot: a top view that lights up the bumper halves, light bumpers, cliff sensors and dropped wheels, with the battery and OI mode in the middle.
  • Readings: battery, voltage, current, temperature, OI mode, wheel speeds, position and wall sensor.
  • Clean, Brushes and Robot: cleaning commands, main brush, side brush and vacuum, Beep, Reset position and Power off.

Safe mode is handled for you. The Open Interface only accepts drive commands in Safe or Full mode, and drops out of Safe mode at a cliff, a wheel drop, on the charger and after any cleaning command. The skill puts the robot back in the configured mode the next time it drives, backs it off the dock in Full mode, and returns it to passive mode when disconnecting so it charges and sleeps.

Get started

Connect a Roomba to ARCx

  1. Charge the Roomba and wire its serial port. Connect a USB to TTL adapter (or the Create USB cable) to the mini-DIN: robot TXD to adapter RX, robot RXD to adapter TX, ground to ground. Optionally wire BRC (pin 5) to the adapter's RTS or DTR line so ARCx can wake the robot. To use an EZ-B v4 instead, wire the mini-DIN to one of its UARTs.
  2. Install ARCx on the computer the adapter is plugged into, which can be a Raspberry Pi riding on the Roomba. Download ARCx for Windows, Linux or Raspberry Pi.
  3. Add the robot skill. Open Robot Skills, choose Movement Panels and add the iRobot Roomba Movement Panel. Only one movement panel can be in a project.
  4. Pick the connection. In the configuration, choose Serial port (or EZB hardware UART), select the port, and leave Robot and Baud rate on Automatic. Press Test connection: it says what answered, with its battery and mode.
    Windows:  COM3
    Linux:    /dev/ttyUSB0
  5. Test movement safely. Lift the wheels off the ground or give the robot plenty of open space, press Connect, and try a short forward drive, a stop and a turn. Always be ready to press Stop.
  6. Build your robot. Add a joystick, a camera, speech recognition, sensors and scripts on top of the Roomba base. Turn on Connect when the project loads once everything works.

Using ARC instead?

Add the iRobot Roomba Movement Panel for ARC, choose a hardware UART, software serial or PC COM port connection to match your wiring, and set the COM port and baud rate. The ARC version always drives in Full mode.

Before you start

  • Roomba model: check it is in the table above. Most serial-port models are supported.
  • Power: charge the battery. A low battery causes disconnects and odd behavior.
  • Cable: you need a 5V TTL adapter or the iRobot USB cable, not an RS-232 cable.
  • Awake: without a wake line, press the Clean button to wake the Roomba before connecting.

Keeping it awake

A Roomba in passive mode sleeps after five minutes. Choose the line wired to BRC as the Wake line and turn on Keep awake: the skill pulses it when connecting and once a minute while the robot is passive.

No serial port?

Wi-Fi Roombas and the Create 3

Connected Roombas over Wi-Fi

The 900, e, i, s, j and Combo series and the Braava jet m6 have a local interface on the home network, the one iRobot's own app uses. ARCx connects to it directly.

  1. Choose Robot's own Wi-Fi and press Find robots, then Use beside yours to fill in its address and BLID.
  2. Put the robot on its dock and hold Home for about two seconds until it chimes (on the i, s and j series, until the light ring turns blue), then press Get password within a few seconds.
  3. Save and connect. Give the robot a reserved address in your router.

These robots start, pause, resume and stop cleaning missions, go home, empty their bin and report their battery, mission and bin, but they cannot be driven: iRobot gives them no velocity command. The robot accepts one local connection at a time; while ARCx is connected, the iRobot app works through the cloud.

Create 3 over ROS 2

The Create 3 is a ROS 2 robot. ARCx reaches it through a rosbridge server, so ARCx does not need ROS installed. Run rosbridge on a computer on the robot's ROS 2 network (with the same ROS_DOMAIN_ID and RMW as the robot) and enter its address. rosbridge_suite 1.3 or newer is needed for docking and undocking.

ros2 launch rosbridge_server rosbridge_websocket_launch.xml
# then in ARCx: ws://192.168.1.20:9090
The Roomba skill's Connection tab set to Robot's own Wi-Fi, with Find robots and Get password buttons
Connecting a Wi-Fi Roomba: find it on the network, then get its password with the Home button held.
ARCx or ARC?

Both support the Roomba. ARCx does more.

If you are starting today, choose ARCx. It runs on Windows 10/11 x64 and Ubuntu 24.04 x64 and ARM64 (including a Raspberry Pi that can ride on the Roomba), is used from any web browser by several people at once, keeps the robot running when the browser closes, and lets AI agents see, drive and program the robot through MCP.

ARCx + iRobot Roomba Movement Panel Recommended ARC + iRobot Roomba Movement Panel
Runs onWindows 10/11 x64, Ubuntu 24.04 x64 and ARM64, Raspberry PiWindows
Serial port, EZB UART, EZB software serialYesYes
Serial bridge over TCPYes-
Wi-Fi Roombas and Create 3Yes-
Drive modeSafe (default) or Full, handled automaticallyFull
Sensor variables, button script, NMS positionYes, same variable names as ARC, plus moreYes
Exact distance and angle driving, event scripts, widgetsYes-

Scripts written for earlier versions of the skill that use positions in centimeters and headings in degrees need updating: ARCx gives position in meters and radians (ROS REP 103), and the encoder and rollover bugs of the ARC version are fixed.

Help

Troubleshooting

  • Confirm the correct cable or adapter for your Roomba model: 5V TTL, not RS-232.
  • Check the lines are crossed (robot TXD to adapter RX, robot RXD to adapter TX) and that ground is connected.
  • Verify the correct COM or serial port is selected, and leave the baud rate on Automatic.
  • Make sure the Roomba is powered on, charged and awake (press Clean, or wire the BRC wake line).
  • Close other programs that might be using the same port.

  • It may be on its charger in Safe mode with Use Full mode to leave the dock turned off.
  • A cliff sensor or wheel drop may be active: the robot is lifted, or a dark carpet reads as a drop to the cliff sensors. The log says when the robot dropped out of Safe mode.
  • Make sure the wheels are not blocked and the Roomba is not reporting an error.
  • A Wi-Fi Roomba cannot be driven at all; only cleaning commands work.
  • Start with small movements and confirm Stop works.

  • Charge the battery: low voltage causes inconsistent motion.
  • Inspect the connectors and cables for a loose fit.
  • Reduce the top speed and turn speed while testing, and add some acceleration if the robot carries something tall.
  • Over an EZB UART or a Wi-Fi bridge, set the sensor rate to 100 to 200 ms.

It went to sleep. Wire the BRC pin as a wake line and turn on Keep awake, or keep the robot in Safe mode by driving it.

Tune the wheel diameter (distances short or long against a tape measure) and the wheel base (turns short or long: spin the robot ten turns with the Turn control command and compare) on the Navigation tab.

  • The robot refused the BLID or password: get the password again with the Home button held.
  • The MQTT server is unavailable: close the iRobot app or anything else connected to the robot locally; it takes one connection at a time.
  • Create 3 connected to rosbridge but nothing arrives: check the namespace, and that rosbridge runs with the robot's ROS_DOMAIN_ID and RMW.
Questions

Frequently asked questions

No. A USB to TTL adapter on the computer running ARCx (or a Raspberry Pi's UART, or a Wi-Fi serial bridge) is enough to drive the Roomba and read all its sensors. An EZB is useful when you also want a camera, servos or extra sensors on the robot, and its UART can then talk to the Roomba too.

Not with a joystick. The connected Roombas without a serial port (900, e, i, s, j and Combo series) give no velocity command, so ARCx can start, pause and stop cleaning, dock them, empty the bin and read their state, but cannot steer them. For a drivable robot, use a serial-port Roomba (500 to 900 series) or a Create 2.

Yes. The skill can start a cleaning cycle and send the robot home. In Safe or Full mode a Roomba neither charges nor sleeps, so with Leave passive when disconnecting on (the default), disconnecting puts it back in passive mode to charge on its dock.

Give your Roomba a brain

Install ARCx, add the iRobot Roomba Movement Panel, and drive, program and share your Roomba from any browser.


ARC Pro

Upgrade to ARC Pro

ARC Pro is your gateway to a community of like-minded robot enthusiasts and professionals, all united by a passion for advanced robot programming.