Raspberry Pi

Raspberry Pi by Pi Foundation

Run Synthiam ARC on Raspberry Pi 4+ with Windows 11 for robot control; use external EZB/Arduino for reliable I/O, SSD/USB storage recommended
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

There are two common ways to use a Raspberry Pi with ARC:

Option A (Recommended): Run ARC on Windows 11 installed on the Raspberry Pi

Install Windows 11 on a Raspberry Pi 4 (or newer), install ARC, and then use a dedicated robot I/O controller (an “EZB”) such as an Arduino, ESP32, or an EZ-Robot controller for servos and sensors.

Option B: Use the Raspberry Pi as an EZB Server

In this setup, ARC runs on another computer and connects to the Pi over WiFi/Ethernet. The Pi hosts an EZB Server firmware. If you choose this route, select one of the firmware options shown at the top of this page (for example, DJ’s EZBPi or PTP’s Blueberry).

Install ARC on Raspberry Pi with Windows 11 (recommended)

You can run ARC directly on a Raspberry Pi by installing Windows 11 for ARM. This is recommended if you want the Pi to be the robot’s main computer (running the ARC project locally).

Minimum hardware (so performance is usable)
  • Raspberry Pi 4 or newer (Pi 4 is the oldest model that runs Windows properly)
  • 8GB RAM minimum (more is better if available)
  • External SSD strongly recommended (Windows + ARC on microSD is usually very slow)

When running ARC on Windows 11 (on the Pi), connect an external I/O controller (EZB) via USB or WiFi:

  • Arduino (common choice for sensors/servos)
  • ESP32 (WiFi + I/O, good for distributed robot parts)
  • EZ-Robot controller (purpose-built robotics controller)

If you want to boot from a fast USB thumb drive, these models have worked well:

Windows 11 installation resources

Windows-on-Pi instructions can change over time, so it’s okay to follow the video below and also search for newer guides if something is different on your setup.

Beginner-friendly notes from the video (WoR Flasher)

It’s possible to install Windows 11 on a Raspberry Pi without using a separate PC. You can prepare the Windows installer directly from the Pi while it’s running a Debian-based OS (like Raspberry Pi OS) using WoR Flasher by Botspot.

The method shown in the video can install Windows 11 to:

  • microSD card (works, but usually slow)
  • USB drive (fast USB recommended)
  • USB-to-SSD (recommended for the best experience)

Installation Tips & Performance for SBCs

If you are using a Raspberry Pi or any other single-board computer (SBC) in a robot, setup details matter a lot (power, cooling, storage speed, and remote access). Our Support guide includes helpful steps such as freeing storage space, improving performance, powering an SBC reliably, and running “headless” (no monitor/keyboard) using Remote Desktop tools.

View the instructions here: /Support/Tips to Make a Robot/Overview


ARC Pro

Upgrade to ARC Pro

ARC Pro is your passport to a world of endless possibilities in robot programming, waiting for you to explore.

Author Avatar
PRO
USA
#17  

@Legion:

Can you unzip the file ConsoleApp1.zip and run the command:

mono ./ConsoleApp1.exe

Note: No need the root privileges e.g. sudo

Please post the output.

Author Avatar
Canada
#18  

=== AddressList ==== Af=[InterNetwork] Addr=[192.168.1.178] === Send Udp Message ==== Send Udp message=[EZ-B||Testing||192.168.1.178||23]

Author Avatar
PRO
USA
#19  

@DJ: It seems is a bug in the udp code:

please change your code:

        private void doSendUDP(string str)
        {
            using (UdpClient udpClient = new UdpClient("255.255.255.255", 4242))
            {
                byte[] bytes = Encoding.ASCII.GetBytes(str);
                udpClient.Send(bytes, bytes.Length);
            }
        }

to this code:

        private void doSendUDP(string str)
        {
            var ipEndPoint = new IPEndPoint(IPAddress.Broadcast, 4242);
            using (var udpClient = new UdpClient())
            {
                var bytes = Encoding.ASCII.GetBytes(str);
                udpClient.Send(bytes, bytes.Length, ipEndPoint);
                udpClient.Close();
            }
        }
Author Avatar
PRO
USA
#20  

@Legion:

Download this fix EZBPi_fixed.zip do backup copy of the existent EZBPI.exe and then override with the new file. then run:

sudo mono ./EZBPi.exe

Let me know if it works.

Author Avatar
Canada
#21  

IT WORKED!!!!

Oh ty ty ty so much!

Author Avatar
PRO
Synthiam
#22  

I’ll get amin to update next week. Thanks guys!!

Author Avatar
United Kingdom
#23  

Hi, I'm having the same problem as above on my RasPi3B when trying to run EZBPi.exe. I've followed all the above checks and the code update but I'm still getting the same response:

pi@raspberrypi:~ $ sudo mono /home/pi/EZBPi/EZBPi.exe 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 <0d7091e22ba140df8312a9ba44fa579a>:0 at EZBPi.Broadcaster._timer_Elapsed (System.Object sender, System.Timers.ElapsedEventArgs e) [0x00050] in <0d7091e22ba140df8312a9ba44fa579a>:0

I also have a Pi ZeroW and a Pi 2B on the network and get the same response. Pi Zero and 3 both running Buster, Pi 2 running Stretch.

I've also tried all the other usual fixes, like disabling firewall etc.

I'm getting a similar response when trying to connect ARC 2019.05.08.00 from my PC (Win10) to the Pi:

Attempting connection on 192.168.1.183 Connection Failed: System.Net.Sockets.SocketException (0x80004005): No connection could be made because the target machine actively refused it 192.168.1.183:23 at System.Net.Sockets.Socket.InternalEndConnect(IAsyncResult asyncResult) at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) at System.Net.Sockets.TcpClient.EndConnect(IAsyncResult asyncResult) at EZ_B.EZB.Connect(String hostname, Int32 baudRate) Disconnected

I don't have anything else running that might be causing any conflict and I can connect to all my Pi's remotely from my phone using RasPi Check and RaspController.

Regards, CRW

Author Avatar
Canada
#24  

Did you use the exe fix PTP gave?