Raspberry Pi

EZBPi Server

Hardware: Raspberry Pi Raspberry Pi

Author: amin

This firmware converts a Raspberry Pi into an EZB for ARC to connect to it.

This server program turns a Raspberry Pi into an EZ-B. The Raspberry Pi Camera, Digital Ports and UART are just some of the peripherals of the Raspberry Pi that can be controlled by ARC with this server. If you are running ARC on the Pi at the same time, connect to the EZBPi server with address 127.0.0.1.

If the EZBPi server is used, the ARC connection can be remote from an external computer over WiFi (or LAN). Or the ARC connection can be running on the Raspberry Pi by connecting to 127.0.0.1 (localhost). There are limitations to the EZBPi Server, in that PWM servos are not supported, but Bi-Directional UART/Serial servos are (Robotis Dynamixel, LewanSoul, etc.)

You can connect to Raspberry Pi to control the ports and watch the live camera feed from a Windows PC using this program.

Use The Pi as an EZBPi Server

This server program turns a Raspberry Pi into an EZB that robot components can connect to and ARC connects to the server. The Raspberry Pi Camera, Digital Ports, and UART are just some of the peripherals of the Raspberry Pi that can be controlled by ARC with this server. The server turns the Raspberry Pi into an EZB.

With the EZBPi server, the ARC connection will from a remote computer over WiFi (or LAN). There are limitations to the EZBPi Server than other EZBs, in that PWM servos are not supported, but Bi-Directional UART/Serial servos are (Robotis Dynamixel, LewanSoul, etc.)

EZBPi Server Install Instructions

  1. Install Mono (32 bit OS only)

sudo apt install mono-devel

  1. Download the EZBPi Server ZIP file from the firmware list above

  2. Unzip the archive.


unzip EZBPi.zip

  1. Navigate into the newly created directory

cd EZBPi

  1. Execute the server with sudo and mono. Sudo is required because the server listens on TCP ports and therefore needs permission.

sudo mono ./EZBPi.exe

  1. Connect to the EZBPi server from ARC by entering the IP Address of the Pi in the connection skill.

EZBPi Server UART

The Raspberry Pi has a hardware UART that is connected to GPIO14 (TX) and GPIO15(RX). These are physical pins 8 and 10, respectively. Any ARC skills that use the UART (such as Dynamixel) or Script commands will default to using this port.

User-inserted image

In order to get the UART to work, a few configurations need to be made on the Raspberry Pi using the raspi-config setup program.

From command-line, type: sudo raspi-config

  • Select the Interfaces menu option
  • Select the Serial menu option
  • Answer NO to the question about login shell
  • Answer YES to the question about serial hardware port
  • Save and exit the raspi-config menu
  • Reboot

EZBPi Server Command-Line Arguments

The EZBPi server accepts command-line arguments for configuration values. With these command-line arguments, the default TCP ports for the EZB and Camera can be changed. Also, the verbose logging can be changed. To view the list of available arguments, enter...


sudo mono EZBPi.exe -h


Fix for turning off and reading GPIO pins

Supported Capabilities
  • Broadcasts to ARC's PnP network scanner
    Controller broadcasts itself on the network using the ARC PnP network scanner protocol. This is so ARC can find devices on the network which may have dhcp assigned addresses.
  • Can stream video v4 codec
    The controller supports the streaming Video v4 codec on a TCP or UART or USB connection.
  • Hardware UART TX/RX with DMA buffer and adjustable baud rate
    Contains 1 or more hardware UARTs with TX/RX functionality and DMA RX buffering.
  • Native WiFi Connectivity from ARC
    Controller supports WiFi connectivity using TCP between your computer with ARC.
  • Read/Write Digital I/O Ports
    The ports marked as being digital will respond to Read and Write commands of boolean logic. The status of the digital port will be either TRUE or FALSE when voltage is detected or not, respectively.
  • Reports CPU temperature
    Reports CPU temperature

Fix for slower devices (i.e. Zero) where UDP broadcast for EZB broadcaster may still be running on next timer event.

Click to show supported capabilities
Supported Capabilities
  • Broadcasts to ARC's PnP network scanner
    Controller broadcasts itself on the network using the ARC PnP network scanner protocol. This is so ARC can find devices on the network which may have dhcp assigned addresses.
  • Can stream video v4 codec
    The controller supports the streaming Video v4 codec on a TCP or UART or USB connection.
  • Hardware UART TX/RX with DMA buffer and adjustable baud rate
    Contains 1 or more hardware UARTs with TX/RX functionality and DMA RX buffering.
  • Native WiFi Connectivity from ARC
    Controller supports WiFi connectivity using TCP between your computer with ARC.
  • Read/Write Digital I/O Ports
    The ports marked as being digital will respond to Read and Write commands of boolean logic. The status of the digital port will be either TRUE or FALSE when voltage is detected or not, respectively.
  • Reports CPU temperature
    Reports CPU temperature

Fix for UDP Broadcast (Access Denied message)

Click to show supported capabilities
Supported Capabilities
  • Broadcasts to ARC's PnP network scanner
    Controller broadcasts itself on the network using the ARC PnP network scanner protocol. This is so ARC can find devices on the network which may have dhcp assigned addresses.
  • Can stream video v4 codec
    The controller supports the streaming Video v4 codec on a TCP or UART or USB connection.
  • Hardware UART TX/RX with DMA buffer and adjustable baud rate
    Contains 1 or more hardware UARTs with TX/RX functionality and DMA RX buffering.
  • Native WiFi Connectivity from ARC
    Controller supports WiFi connectivity using TCP between your computer with ARC.
  • Read/Write Digital I/O Ports
    The ports marked as being digital will respond to Read and Write commands of boolean logic. The status of the digital port will be either TRUE or FALSE when voltage is detected or not, respectively.
  • Reports CPU temperature
    Reports CPU temperature

What's New - Improved camera feed performance

Known Issues - Server program crashes occasionally when the feed is disconnected from camera control in EZ-Builder

Click to show supported capabilities
Supported Capabilities
  • Can stream video v4 codec
    The controller supports the streaming Video v4 codec on a TCP or UART or USB connection.
  • Hardware UART TX/RX with DMA buffer and adjustable baud rate
    Contains 1 or more hardware UARTs with TX/RX functionality and DMA RX buffering.
  • Native WiFi Connectivity from ARC
    Controller supports WiFi connectivity using TCP between your computer with ARC.
  • Read/Write Digital I/O Ports
    The ports marked as being digital will respond to Read and Write commands of boolean logic. The status of the digital port will be either TRUE or FALSE when voltage is detected or not, respectively.
  • Reports CPU temperature
    Reports CPU temperature

ARC Pro

Upgrade to ARC Pro

Join the ARC Pro community and gain access to a wealth of resources and support, ensuring your robot's success.

#1  

@Athena, Write instructions for installing a EZBPi server on the Windows 11 operating system.

PRO
Canada
#2  

The EZBPi server is designed to run on a Raspberry Pi and is not intended for installation on Windows 11. However, you can install ARC on a Raspberry Pi by installing Windows 11 on a Raspberry Pi 4 or newer, and then run ARC directly on the Raspberry Pi.

To run ARC on a Raspberry Pi with Windows 11, follow these general steps:

  1. Ensure you have a Raspberry Pi 4 or newer with at least 8GB of RAM.

  2. Install Windows 11 on your Raspberry Pi. You can find instructions on the internet for installing Windows 11 on a Raspberry Pi 4 or newer. A popular tool for installing Windows on a Raspberry Pi is the WoR (Windows on Raspberry) tool.

  3. Once Windows 11 is installed on your Raspberry Pi, you can install ARC by downloading it from the Synthiam website.

  4. Run ARC on your Raspberry Pi with Windows 11 and use it to control your robot.

Please note that running Windows 11 on a Raspberry Pi is not officially supported by Microsoft, and performance may vary. It is recommended to use an SSD drive or a speedy USB thumb drive for storage to improve performance.

If you need to control the Raspberry Pi's GPIO, camera, or other peripherals from a Windows PC, you would typically use the EZBPi server running on the Raspberry Pi's native OS (Raspbian or another Linux distribution) and connect to it from ARC running on your Windows PC. The EZBPi server turns the Raspberry Pi into an EZB that ARC can connect to remotely.

For detailed instructions on setting up and running the EZBPi server on a Raspberry Pi, please refer to the previous response. If you have any further questions or need assistance with specific steps, feel free to ask.


I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
#3  

@Athena, So, I should install Linux and EZBPi server to manage the peripherals, then install Windows on top of it to run the ARC program. Only in this case, the cycle will be closed, and everything will work on one Raspberry Pi. Is that right? Or is there more to it?

PRO
Canada
#4  

To clarify, you cannot run both Linux and Windows simultaneously on a single Raspberry Pi. Instead, you have two options for setting up your Raspberry Pi to work with ARC and manage peripherals:

  1. Use Raspberry Pi as an EZB Server with Linux:

    • Install a Linux-based OS (such as Raspberry Pi OS) on your Raspberry Pi.
    • Install and run the EZBPi server on the Raspberry Pi. This server will allow you to control the Raspberry Pi's GPIO, camera, and other peripherals.
    • From a separate Windows PC, run ARC and connect to the EZBPi server over your network to control your robot.
  2. Run ARC Directly on Raspberry Pi with Windows 11:

    • Install Windows 11 on your Raspberry Pi 4 or newer.
    • Once Windows 11 is installed, download and install ARC on the Raspberry Pi.
    • Run ARC directly on the Raspberry Pi to control your robot. However, this method may not provide direct control over the Raspberry Pi's GPIO, camera, and other peripherals as easily as the EZBPi server does on Linux.

If you choose to run Windows 11 on your Raspberry Pi and need to control the GPIO and peripherals, you may need to explore additional software or methods compatible with Windows 11 IoT Core or use external hardware that can interface with Windows 11 to control those peripherals.

In summary, for the full functionality of controlling the Raspberry Pi's peripherals and using ARC, it is recommended to use the EZBPi server on a Linux-based OS on the Raspberry Pi and connect to it from ARC running on a separate Windows machine. If you prefer to run ARC directly on the Raspberry Pi, you will need to install Windows 11, but keep in mind the potential limitations regarding peripheral control.


I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
#5  

Hi,

I tried to install EZBPi server version 5 2019.08.27 on Raspberry Pi 4 with RPI OS 64-bit commanding sudo mono ./EZBPi.exe from termina, then the following msg pops up: is this a raspberry pi? dllnotfoundexception libwiringpi.so.2.46 ezb

the dll is there within the same folder extracted from .zip how could I fix this ?

PRO
Synthiam
#7  

Yeah, support is correct. This was created by the author when raspbian was 32bit. So the mono that it runs with was 32bit as well.

I’m not sure if mono can run 32bit in a 64bit OS. If so you could try that rather than reinstalling the os.

#8   — Edited

hey, thanks for the replies.

  1. restored to 32bit
  2. download ver 5 EZBPi server
  3. I got this
openfield@raspberrypi:~/Downloads $ cd EZBPi/
openfield@raspberrypi:~/Downloads/EZBPi $ sudo mono EZBPi.exe
Raspberry EZBPi Version: 2019.8.27.1
Oops: Unable to determine board revision from /proc/cpuinfo
 -> No "Hardware" line
 ->  You'd best google the error to find out why.
openfield@raspberrypi:~/Downloads/EZBPi $ sudo apt-get install EZBPi.exe
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package EZBPi.exe
E: Couldn't find any package by glob 'EZBPi.exe'
E: Couldn't find any package by regex 'EZBPi.exe'
openfield@raspberrypi:~/Downloads/EZBPi $ 

what I do wrong?

#9   — Edited

Sorry, I'm unable to what you're trying to do with the command...

sudo apt-get install EZBPi.exe

That command would not be able to do anything. Also, you have EZBPi.exe installed because you showed the output earlier in the log.

The issue that you may want to focus on is resolving this error..

Oops: Unable to determine board revision from /proc/cpuinfo
 -> No "Hardware" line
 ->  You'd best google the error to find out why.

The error message suggests googling. I was able to google for you and found these:

It seems Raspbian has removed features - and their suggested solutions may be found on those pages.

PRO
Synthiam
#10  

Hey - I wonder if there's some packages that need to be upgraded. I just built a new copy of it for any CPU so it should just work for you. Try this: EZBPi x64 v2024.07.25.00.zip

PRO
USA
#12  

Hey I'm still having this issue, has any solution been found?

PRO
USA
#14  

I received the same error as OpenField when I downgraded to a 32bit OS Raspberry EZBPi Version: 2019.8.27.1 Oops: Unable to determine board revision from /proc/cpuinfo -> No "Hardware" line -> You'd best google the error to find out why. Is this compatible with the raspberry pi 5?

#15  

What 32 bit OS have you installed? Raspberry pi natively supports rasbian which is required for the /proc/cpuinfo of the dependency libraries.

PRO
USA
#16  

I am running a 32 bit version of Bookworm

#17  

@Athena How to control Arduino Mega as EZB to connect with EZBPiserver Raspberrypi

#18  

@Athena im Running EZBpi server on pi5 im getting this error how to resolve this? ~/EZBPi $ sudo mono EZBPi.exe Raspberry EZBPi Version: 2019.8.27.1 Is this a Raspberry Pi? System.DllNotFoundException: libwiringPi.so.2.46 assembly: type: member:(null) at (wrapper managed-to-native) Unosquare.WiringPi.Native.WiringPi.WiringPiSetupGpio() at Unosquare.WiringPi.GpioController.Initialize (Unosquare.WiringPi.ControllerMode mode) [0x00066] in <57ba28dc71224faf83dfd691c70e4268>:0 at Unosquare.WiringPi.GpioController..ctor () [0x00016] in <57ba28dc71224faf83dfd691c70e4268>:0 at Unosquare.WiringPi.BootstrapWiringPi.Bootstrap () [0x0001a] in <57ba28dc71224faf83dfd691c70e4268>:0 at Unosquare.RaspberryIO.Pi.Init[T] () [0x0001f] in :0 at EZBPi.EZBProgram.Main (System.String[] args) [0x000ca] in :0

PRO
Canada
#19  

The error you're encountering is related to the libwiringPi.so.2.46 library, which is part of the WiringPi library used for GPIO control on Raspberry Pi. It seems that the library is either missing or not properly installed on your Raspberry Pi 5.

Here's how you can resolve this issue:

  1. Install WiringPi:

    • WiringPi is a GPIO interface library for the Raspberry Pi. You can install it using the following commands:
      sudo apt-get update
      sudo apt-get install wiringpi
      
  2. Verify WiringPi Installation:

    • After installation, verify that WiringPi is installed correctly by running:
      gpio -v
      
    • This command should return the version of WiringPi installed.
  3. Check for Compatibility:

    • Ensure that the version of WiringPi you installed is compatible with Raspberry Pi 5. If not, you might need to look for an updated version or alternative library that supports Raspberry Pi 5.
  4. Re-run the EZBPi Server:

    • Once WiringPi is installed and verified, try running the EZBPi server again:
      sudo mono EZBPi.exe
      
  5. Alternative Libraries:

    • If WiringPi is not compatible with Raspberry Pi 5, you might need to explore alternative libraries or methods for GPIO control that are supported on Raspberry Pi 5.

If you continue to experience issues, please let me know, and we can explore further troubleshooting steps.


I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
#20  

@Athena  Im getting errors sudo apt-get install wiringpi Reading package lists... Done Building dependency tree... Done Reading state information... Done Package wiringpi:armhf is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source

E: Package 'wiringpi:armhf' has no installation candidate

PRO
Canada
#21  

It seems that the WiringPi package is no longer available in the default repositories for your version of the Raspberry Pi OS. This is a known issue since WiringPi has been deprecated. However, you can still install it manually by following these steps:

  1. Download WiringPi Source:

  2. Build and Install WiringPi:

    • Navigate to the WiringPi directory and build the library:
      cd WiringPi
      ./build
      
  3. Verify Installation:

    • After building, verify that WiringPi is installed correctly by running:
      gpio -v
      
    • This command should return the version of WiringPi installed.
  4. Re-run the EZBPi Server:

    • Once WiringPi is installed and verified, try running the EZBPi server again:
      sudo mono EZBPi.exe
      

If you encounter any issues during the installation process, please let me know, and we can explore further troubleshooting steps. Additionally, if WiringPi does not work on Raspberry Pi 5, you might need to look for alternative GPIO libraries that are compatible with your hardware.


I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
#22  

@Athena I installed from GitHub but I'm getting like this and unable to connect with ARC

laxme@raspberrypi:-/EZBP1 $ sudo mono EZBPi.exe

Raspberry EZBP1 Version: 2019.8.27.1

Is this a Raspberry Pi?

System.DllNotFoundException: libwiringPi.so.2.46 assembly: type: member: (null)

at (wrapper managed-to-native) Unosquare.WiringPi.Native.WiringPi.WiringPiSetupGpio()

Unosquare.wiringPi.GpioController. Initialize (Unosquare.WiringPi.ControllerMode mode) [0x00066] in <57ba28dc71224

at Unosquare.WiringPi.GpioController..ctor () [0x00016] in <57ba28dc71224faf83dfd691c70e4268>:0

at Unosquare.WiringPi.BootstrapWiringPi.Bootstrap () [0x0001a] in <57ba28dc71224faf83dfd691c70e4268>:0

at . Init [T] () [0x0001f] in :0

at Unosquare. Raspberry10.Pi at EZBP1.EZBProgram. Main (System.String[] args) [0x000ca] in :0

laxme@raspberrypi:~/EZBP1 S mono EZBPi.exe

Raspberry EZBP1 Version: 2019.8.27.1

Verbose logging is: False

Serial port is: /dev/seriale

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

EZB: Error Access denied

Camera: Error Access denied

PRO
Canada
#23  

The error messages you're encountering suggest a couple of issues related to permissions and possibly the WiringPi library. Let's address these step by step:

  1. Permissions Issue:

    • The "Access denied" errors for both the EZ-B and Camera servers indicate that there might be permission issues with accessing the required ports. Ensure that you are running the EZBPi server with sudo to have the necessary permissions.
  2. WiringPi Library Issue:

    • The DllNotFoundException for libwiringPi.so.2.46 suggests that the WiringPi library is either not installed correctly or not found in the expected location. Since WiringPi is deprecated, you might need to ensure that the library is correctly linked.
  3. Check WiringPi Installation:

    • Verify that the WiringPi library is installed and accessible. You can check if the library file exists in the /usr/local/lib directory:
      ls /usr/local/lib/libwiringPi.so*
      
    • If the file is not found, ensure that the build process completed successfully and that the library is installed in the correct location.
  4. Rebuild WiringPi:

    • If the library is not found, try rebuilding WiringPi:
      cd WiringPi
      ./build
      
  5. Check Serial Port Permissions:

    • Ensure that the user running the EZBPi server has access to the serial ports. You can add the user to the dialout group to grant access:
      sudo usermod -aG dialout $(whoami)
      
    • After adding the user to the group, log out and log back in for the changes to take effect.
  6. Re-run the EZBPi Server:

    • After addressing the above issues, try running the EZBPi server again with sudo:
      sudo mono EZBPi.exe
      

If you continue to experience issues, please let me know, and we can explore further troubleshooting steps. Additionally, consider checking for any updates or alternative libraries that might be more compatible with Raspberry Pi 5.


I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
#24  

@Athena  Even after following all instructions still im getting the same error , how to resolve this? and make raspberrypi as a EZBPi server? laxme@raspberrypi:-/EZBP1 $ sudo mono EZBPi.exe

Raspberry EZBP1 Version: 2019.8.27.1

Is this a Raspberry Pi?

System.DllNotFoundException: libwiringPi.so.2.46 assembly: type: member: (null)

at (wrapper managed-to-native) Unosquare.WiringPi.Native.WiringPi.WiringPiSetupGpio()

Unosquare.wiringPi.GpioController. Initialize (Unosquare.WiringPi.ControllerMode mode) [0x00066] in <57ba28dc71224

at Unosquare.WiringPi.GpioController..ctor () [0x00016] in <57ba28dc71224faf83dfd691c70e4268>:0

at Unosquare.WiringPi.BootstrapWiringPi.Bootstrap () [0x0001a] in <57ba28dc71224faf83dfd691c70e4268>:0

at . Init [T] () [0x0001f] in :0

at Unosquare. Raspberry10.Pi at EZBP1.EZBProgram. Main (System.String[] args) [0x000ca] in :0

PRO
Canada
#25  

The error you're encountering indicates that the libwiringPi.so.2.46 library is not found, which is crucial for the EZBPi server to function. Since WiringPi is deprecated, let's try an alternative approach to resolve this issue:

Alternative Approach Using PiGPIO

  1. Install PiGPIO:

    • PiGPIO is an alternative library that can be used for GPIO control on the Raspberry Pi. Install it using the following commands:
      sudo apt update
      sudo apt install pigpio
      sudo systemctl enable pigpiod
      sudo systemctl start pigpiod
      
  2. Modify EZBPi Server to Use PiGPIO:

    • If the EZBPi server is hardcoded to use WiringPi, you might need to modify the source code to use PiGPIO instead. This requires programming knowledge and access to the source code of the EZBPi server.
    • If you have access to the source code, look for WiringPi references and replace them with PiGPIO equivalents.
  3. Check for Updated EZBPi Server:

    • Check if there is an updated version of the EZBPi server that supports PiGPIO or does not rely on WiringPi. This might be available on the Synthiam website or forums.
  4. Use an Alternative Method:

    • If modifying the server is not feasible, consider using an alternative method to control the Raspberry Pi GPIOs. You can use Python scripts with PiGPIO to control the GPIOs and communicate with ARC using network protocols.
  5. Contact Synthiam Community:

    • Reach out to the Synthiam community or support for any updates or alternative solutions for using the Raspberry Pi as an EZBPi server without WiringPi.

If you need further assistance with modifying the server or using alternative methods, feel free to ask!


I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
#26  

@Athena How to install EZB Builder in Raspberry pi? and Can this EZBPi Server works on Raspberry pi 5?

PRO
Synthiam
#27  

The instructions on how to install the EZBPi Server are at the top of this page. Scroll to the top of the page and read the step-by-step instructions.