Drone Collision icon Drone Collision — Add HC-SR04 ultrasonic sensors with an EZ-B to AR Parrot Drone v1/v2 for collision detection and avoidance Try it →
 
Raspberry Pi

Raspberry Pi by Pi Foundation

Synthiam ARCx runs natively on Raspberry Pi 4/5, controlling robots via browser with EZB controllers, vision, speech and scripting.
Connection Type
Wi-Fi
Number of Servos
None
Audio Support
Yes
Camera Support
Yes
UARTs
None
I2C Support
No
ADC Ports
None
Digital Ports
None

A small single-board computer on the top deck of a wheeled robot, wired by USB to a microcontroller that moves a pan and tilt camera, with a tablet and laptop showing a browser dashboard that controls the robot
Raspberry Pi + Synthiam ARCx

Make a Raspberry Pi your robot's brain

ARCx runs natively on a Raspberry Pi 4 or Pi 5 with Ubuntu 24.04 LTS (64-bit). The Pi sits inside the robot and runs the whole project, with no monitor or keyboard, and you drive, program and talk to the robot from a web browser on any phone, tablet or computer.

A Raspberry Pi is a computer, not an EZB. With Synthiam it plays the role of the robot's on-board brain: ARCx runs on the Pi itself (Ubuntu 24.04 LTS ARM64), and the robot's servos, motors and sensors plug into a small I/O controller running EZB firmware, such as an Arduino, an ESP32, an EZ-B v4 or an IoTiny, connected to the Pi by USB, Wi-Fi or the Pi's serial pins. We recommend ARCx for the Raspberry Pi. ARC is a Windows desktop application, so it is not the natural fit for a Pi.

Meet the hardware

What is a Raspberry Pi?

The Raspberry Pi is a small, affordable single-board computer: processor, memory, USB, networking and video output on one credit-card sized board. It was created to make computing accessible to students and makers, and it has become a common choice for the computer inside a hobby or classroom robot.

For a robot, a Pi brings everything a robot computer needs: Wi-Fi and Ethernet so you can reach it from anywhere on the network, USB ports for cameras, microphones, lidars and controllers, and enough processing power on a Pi 4 or Pi 5 to run vision, speech and AI robot skills on board.

What a Pi is not is a motion controller. It has no analog inputs, limited hardware PWM, and its pins run at 3.3 V under a full operating system, so servo timing is not as steady as on a microcontroller. That is why the Synthiam approach pairs the Pi with a dedicated EZB controller for the wiring, and lets the Pi do what it does well: run the robot's software.

Raspberry Pi at a glance

TypeSingle-board computer (ARM, 64-bit)
MakerRaspberry Pi (Raspberry Pi Foundation)
Recommended modelsRaspberry Pi 4 or Raspberry Pi 5, 4 GB of memory or more
Operating system for ARCxUbuntu 24.04 LTS 64-bit (Server or Desktop). Not Raspberry Pi OS
ConnectivityWi-Fi, Ethernet, Bluetooth, USB, 40-pin GPIO header with a UART
Synthiam uses it forRunning ARCx on board the robot; robot I/O comes from an EZB controller
Websiteraspberrypi.com

Why Ubuntu and not Raspberry Pi OS? ARCx supports one Linux distribution: Ubuntu 24.04 LTS, on x64 and ARM64. Raspberry Pi OS is not supported because ARCx's vision libraries (OpenCV) depend on packages it does not provide; the most visible symptom is a camera that shows no picture. Other Ubuntu releases (such as 22.04 or 26.04) do not work either. Raspberry Pi Imager writes Ubuntu 24.04 for you in a couple of clicks.

Capabilities

What a Pi running ARCx can do

🤖

Run the whole robot on board

The ARCx project lives on the Pi and keeps running when nobody is connected. Set ARCx up as a service and the robot starts its project by itself at power on.

📱

Any browser is the remote

Open the robot's ARCx interface from a phone, tablet or laptop on the same network. Several people can be connected at once, and closing the browser leaves the robot running.

⚙

Servos, motors and sensors

Through an EZB controller, the Pi gets servos, PWM, digital and analog ports, I2C and UARTs. Movement panels, Auto Position animations and the Servo Pad all work as on any Synthiam robot.

📷

Camera and vision

Plug a USB camera into the Pi and add the Camera Source (usb) robot skill for face, color, glyph and object tracking.

🎙

Voice and sound

Speech recognition, text to speech and sound playback through a USB microphone and speaker on the Pi, from cloud and offline engines.

📡

Lidar and navigation

USB lidars such as the RPLidar plug straight into the Pi, with robot skills that feed ARCx's navigation messaging system for mapping and obstacle detection.

🧩

Program it your way

Blockly for beginners, JavaScript and Python for everyone else, all edited in the browser and run on the Pi.

🧠

AI agents

ARCx is an MCP server, so AI agents such as Claude can see, drive and program the robot. Add conversational AI robot skills and the Pi-powered robot can talk and act.

🎮

Custom UI and remote access

Build touch-friendly control screens with Custom UI, and use the Exosphere robot skill to drive the robot from anywhere or invite others for telepresence.

Wiring the robot

Give the Pi hands: connect an EZB controller

The Ezb Connection robot skill connects ARCx to any board running EZB firmware. Pick whichever link suits your robot; a project can use several boards at once (EZB 0, EZB 1, EZB 2...).

Browser Phone, tablet or laptop on the network
⇄
Raspberry Pi + ARCx Ubuntu 24.04 ARM64, the robot's brain
⇄
EZB controller Arduino, ESP32, EZ-B v4 or IoTiny over USB, Wi-Fi or UART
⇄
Servos, motors, sensors Wired to the controller's ports
LinkTypical controllersAddress in Ezb ConnectionNotes
USB Arduino Uno, Mega, Leonardo or similar with EZB firmware; USB-serial adapters /dev/ttyACM0 or /dev/ttyUSB0 Set the baud rate to match the firmware in the skill's configuration. Your Ubuntu user must be in the dialout group.
Wi-Fi / network EZ-B v4, IoTiny, ESP32 with EZB firmware 192.168.1.1 or host:port Default EZB port 23. The controller can live anywhere on the robot with only power wiring to it.
GPIO serial (UART) A 3.3 V controller wired to the Pi's TX and RX pins /dev/serial0 Ubuntu uses these pins for a login console by default. Remove the console from /boot/firmware/cmdline.txt, disable the login service on that port and reboot (see the install guide).

Raspberry Pi serial pins

Header pinPi signalConnect to the controller's
Pin 8GPIO14, TXDRX
Pin 10GPIO15, RXDTX
Pin 6 (or any GND pin)GroundGND
Get started

Set up ARCx on a Raspberry Pi

The full, current instructions (including the list of system libraries to install and the download link) are in Install ARCx on Raspberry Pi (ARM64). Here is the shape of it.

  1. Write Ubuntu 24.04 LTS (64-bit) to the card. In Raspberry Pi Imager on another computer, choose Ubuntu Server 24.04.x LTS (64-bit) for a robot with no screen, or Ubuntu Desktop on a Pi 4 or Pi 5 with 4 GB or more. Set the username, password, Wi-Fi and SSH in Imager's settings.
  2. Boot the Pi and check the system. The first boot takes a few minutes. Then confirm you have the right operating system and architecture:
    cat /etc/os-release          # ID=ubuntu, VERSION_ID="24.04"
    dpkg --print-architecture    # arm64
  3. Install the libraries and ARCx. Follow the install guide to install the system libraries with apt, download the ARM64 zip and unzip it into an ARCx folder. ARCx includes .NET, so nothing else is needed.
  4. Allow ARCx to use the hardware. Add your user to the groups for serial ports, cameras, sound, controllers and the GPU, then log out and back in:
    sudo usermod -aG dialout,video,audio,input,render $USER
    Always include -a, or your other groups (including sudo) are removed.
  5. Start ARCx so other devices can reach it.
    cd ~/ARCx
    chmod +x ARCx
    ./ARCx -b http://0.0.0.0:5000
    Find the Pi's address with hostname -I, then open http://<pi-address>:5000 in a browser on your phone, tablet or computer.
  6. Connect your controller. Add the Ezb Connection robot skill, set the baud rate for a USB board in its configuration, type the address (/dev/ttyACM0, /dev/serial0 or an IP address) and press connect.
  7. Make the robot move. Add a Servo robot skill or a movement panel, move a servo or drive forward, then save the project.
  8. Start on boot. When everything works, set ARCx up as a systemd service as the install guide describes, optionally opening your project automatically, so the robot is ready as soon as it is switched on.

Good to know

  • ARCx has no login of its own. Anyone who can reach port 5000 can control the robot, so use it on trusted networks only.
  • A Pi 4 or Pi 5 with 4 GB or more is recommended. Each browser window opened on the Pi itself uses roughly 100-200 MB, and 2 GB or less can run out of memory.
  • Use a good power supply and some cooling. Most "random" Pi problems on robots are power or heat.
  • Fast storage helps: a quality microSD card or a USB 3 SSD makes boot and project loading noticeably quicker.
  • To stop ARCx, press Ctrl+C and allow about 20 seconds for a clean shutdown.
ARCx or ARC?

ARCx is the way to use a Raspberry Pi

ARCx was built for computers like the Raspberry Pi: it runs on Windows 10/11 x64 and on Ubuntu 24.04 LTS for x64 and ARM64, runs headless, and is used from any web browser, by several people at once. It is an MCP server for AI agents, and it installs robot skills from the Synthiam store. ARC is Synthiam's Windows desktop application.

ARCx Recommended ARC
Runs on a Raspberry PiYes, natively, on Ubuntu 24.04 LTS ARM64Only on Windows 11 for ARM, an unofficial community install
InterfaceAny web browser on the networkWindows desktop, viewed on a monitor or over remote desktop
Headless on the robotYes, can start on boot as a serviceNeeds Windows remote desktop tools
Pi as the robot's I/O boardNo; use an EZB controllerCommunity EZB server firmware (see below)

Before ARCx, the only way to run Synthiam software on a Pi was to install Windows 11 for ARM on it and run ARC there. It still works for people who need ARC specifically, but it is an unofficial install, needs more hardware, and is slower than ARCx on Ubuntu. If you go this way:

  • Use a Raspberry Pi 4 or newer (the Pi 4 is the oldest model that runs Windows properly) with 8 GB of memory.
  • Boot from an external SSD or a fast USB 3 drive. Windows and ARC from a microSD card are very slow.
  • Connect an EZB controller (Arduino, ESP32 or EZ-Robot controller) over USB or Wi-Fi for the servos and sensors.
  • The WoR Flasher tool can prepare the Windows install from the Pi itself, while it runs a Debian-based OS. There is also a guide for installing from a PC.
  • Windows-on-Pi instructions change over time, so follow the video below and look for newer guides if something differs. Our Tips to Make a Robot guide covers freeing space, performance, power and running headless on Windows.

Two community projects turn a Raspberry Pi into an EZB, so ARC on another computer can reach the Pi's camera, GPIO and UART over Wi-Fi or Ethernet: EZBPi Server and BlueBerry Server. Both are listed in the Firmware section below. They date from 2019 and were written for ARC.

They work on older Raspberry Pi models too, but the Pi's on-board I/O is still limited for robotics (no analog inputs, few PWM channels, 3.3 V logic). ARCx's Ezb Connection speaks the same EZB protocol over the network, but these servers have not been tested with ARCx. For a new robot, run ARCx on the Pi and use a dedicated EZB controller instead.

Troubleshooting

When something does not work

This is what happens on Raspberry Pi OS, which ARCx does not support. Reinstall with Ubuntu 24.04 LTS (64-bit). On Ubuntu, make sure your user is in the video group and that you logged out and back in after adding it.

Add your user to the dialout group (sudo usermod -aG dialout $USER), log out and back in, and check with groups. If ARCx runs as a service, restart the service. If a CH340 or similar USB-serial adapter appears and then vanishes, the brltty package may be grabbing it; if you have no braille display, remove it with sudo apt remove brltty.

Start ARCx with -b http://0.0.0.0:5000 so it listens on the network, and browse to the Pi's own address (from hostname -I), never 127.0.0.1, from the other device. If the ufw firewall is on, allow the port with sudo ufw allow 5000/tcp. If something else is using port 5000, start ARCx on another port, such as -b http://0.0.0.0:5001.

Check that the serial console was removed from /boot/firmware/cmdline.txt and its login service disabled (then reboot), that TX goes to RX and RX to TX, that the grounds are joined, that the baud rate matches the firmware, and that the controller uses 3.3 V logic or a level shifter.

Under-powered and overheating Pis misbehave in strange ways. Use the official power supply rating for your model, power servos from their own supply rather than the Pi, and add a heatsink or fan. On 2 GB boards, avoid opening browser windows on the Pi itself and use Ubuntu Server. Fast storage also helps.

Closing an SSH session stops programs started from it. Run ARCx as a systemd service (see the install guide) so it keeps running after you disconnect and starts again at boot. Closing the browser never stops ARCx.
Questions

Frequently asked questions

A Raspberry Pi 4 or Raspberry Pi 5 with 4 GB of memory or more. The install guide also lists the Pi 3 and Pi Zero 2 W, but with their smaller memory they are only suited to light projects.

No. ARCx supports Ubuntu 24.04 LTS (64-bit) only. Raspberry Pi OS lacks packages ARCx's vision libraries need, and cameras show no picture on it.

For servos, motors and sensors, yes. ARCx reaches hardware through EZB controllers, and a small Arduino or ESP32 with EZB firmware gives steady servo timing, analog inputs and more serial ports than the Pi has. Some hardware needs no controller at all: USB cameras, microphones, speakers and USB lidars plug straight into the Pi.

Yes. Ubuntu 24.04 is the operating system ROS 2 Jazzy targets. Run rosbridge alongside ARCx and connect them with the ARCx ROS 2 Connector. See the ROS 2 hardware page.

A Pi 4 or Pi 5 runs a typical ARCx project with servos, a camera, speech and scripts. Very heavy vision or several cameras at high resolution are better suited to an x86 board or a PC, and cloud AI robot skills move the hardest work off the robot entirely.

Put ARCx on your Raspberry Pi

Install Ubuntu 24.04, add ARCx, connect an EZB controller, and control your robot from any browser.


ARC Pro

Upgrade to ARC Pro

With ARC Pro, your robot is not just a machine; it's your creative partner in the journey of technological exploration.

Author Avatar
PRO
Synthiam
LinkedIn Thingiverse Twitter YouTube GitHub
#1  

Updated with a new version that broadcasts it's address

#2  

:DGreat to see the updating happening,Nice!

Author Avatar
Canada
#4  

Hello.  

I'm trying to get the EZ Pi server running on my Pi and I'm getting the following error.  Any help would be greatly appreciated!

Broadcast error. The broadcast service has stopped. Here is why: System.Net.Sockets.SocketException (0x80004005): Access denied at System.Net.Sockets.UdpClient.Connect (System.String hostname, System.Int32 port) [0x001b0] in :0 at System.Net.Sockets.UdpClient..ctor (System.String hostname, System.Int32 port) [0x00044] in :0 at EZBPi.Broadcaster.doSendUDP (System.String str) [0x00001] in :0 at EZBPi.Broadcaster._timer_Elapsed (System.Object sender, System.Timers.ElapsedEventArgs e) [0x00050] in :0

Author Avatar
PRO
Synthiam
LinkedIn Thingiverse Twitter YouTube GitHub
#5  

The instructions for launching the pi server requires sudo (root) permission to use certain server features on the OS. Look above at the instructions to launch the pi server and type the same command.

Author Avatar
Canada
#6   — Edited

Hello DJ Sures,

Thank you for your quick reply.  I have ran the above exactly as the commands on two different pi's with a fresh image three times between them now.  Two different places just to make sure something on my network wasn't messing with it and I still get the same error when running sudo mono ./EZBPi.exe.  Tried a version 3 and version 2 also, one on ethernet and the other with wifi and ethernet.  Once I run the command it shows as it should ( I watched the live hack night as well and made sure to follow each step) and once it hits the part to hit esc to exit, about 5 seconds later the above errors keep going over and over.

Raspberry EZBPi Version: 2019.3.29.0 Verbose logging is: False Serial port is: /dev/serial0 EZB: TCP Started on port 23 EZ-B Server started on TCP Port: 23 Camera: TCP Started on port 24 Camera Server started on TCP Port: 24 Press ESC to quit Broadcast error. The broadcast service has stopped. Here is why: System.Net.Sockets.SocketException (0x80004005): Access denied at System.Net.Sockets.UdpClient.Connect (System.String hostname, System.Int32 port) [0x001b0] in :0 at System.Net.Sockets.UdpClient..ctor (System.String hostname, System.Int32 port) [0x00044] in :0 at EZBPi.Broadcaster.doSendUDP (System.String str) [0x00001] in :0 at EZBPi.Broadcaster._timer_Elapsed (System.Object sender, System.Timers.ElapsedEventArgs e) [0x00050] in :0

#7  

This really has me interested. I love to see all the new options and capabilities we are now adding and I am excited about those to come but don’t understand the benefits using Raspberry Pi instead of EZ-Robot micro controller.  Please clarify why you would use a Raspberry over a EZ-Robot. I get loading ARC it on Pi as a benefit but not providing PMW has me stumped. I really want to do this but I want to understand the benefits.

Author Avatar
PRO
Synthiam
LinkedIn Thingiverse Twitter YouTube GitHub
#8  

Legion, can you do a sudo apt-get upgrade?

also a sudo apt-get update

perhaps the os versions are out dated. Reading the error you posted, the ezbpi cannot bind to the network interface, which is absolutely required for operation.

Ellis, there’s only benefits to those who need it.