RGB 8X8 Animator icon RGB 8X8 Animator Create, edit and play animated frames on an RGB 8x8 LED matrix via I2C with looping, adjustable pauses and scriptable EZ-Script canvas control. Try it →
Holland
Asked

Benchmark Spikes On Pi EZB Wifi

I’m running ARC on a Windows laptop and using a Raspberry Pi 4 over Wi-Fi as my EZB server (DJ’s EZBPi image). The Pi handles a PCA9685 for 12 servos and an MCP3008 for battery sensing on A0. To troubleshoot laggy servo twitches during moves, I added the Benchmark skill and set it to Read ADC on A0. Over Ethernet, the Benchmark reads per second sit solid around 380-410 with almost no drops, but over 5 GHz Wi-Fi I see 150-220 with periodic dips to near 0 for 200-500 ms every 10-30 seconds. Those dips line up with small servo twitches in Auto Position sequences.

What I’ve tried: moved the Pi within 2 m of the access point; switched between 2.4 and 5 GHz; dedicated SSID for the robot; disabled camera streaming in ARC (when Camera Device at 320x240 15 fps is on, the dips get worse; off reduces but doesn’t eliminate them); disabled Wi-Fi power save on the Pi (iw dev wlan0 set power_save off); checked CPU (5-25% on the Pi, 10-20% on the PC); changed the router channel; and tested with only Benchmark connected (no other skills) vs a fuller project (Auto Position + Camera + Speech Synthesis). Ping from PC to Pi is stable at 5-7 ms with no loss even when Benchmark dips.

It feels like small bursts of latency/packet buffering on the EZBPi side, but I’m not sure if there are ARC connection options, EZBPi tweaks, or wiring changes (e.g., moving the MCP3008 to shorter SPI leads, adding ferrites near the Pi/PCA9685) that would help; before I move the I/O to an ESP32 as the EZB and use the Pi just for ARC, is there a recommended way to stabilize Benchmark over Wi-Fi on EZBPi without disabling the camera stream entirely?

Given this setup, what specific ARC or EZBPi settings or wiring changes would you recommend to stabilize the Benchmark reads per second over Wi-Fi without resorting to Ethernet?



Related Hardware (view all EZB hardware)
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
Wi-Fi
Servos
Camera
Audio
UART
I2C
ADC
Digital

Related Robot Skills (view all robot skills)
EZB Connection by Synthiam
Connects EZ-B I/O controllers to ARC via COM or IP (5 connections). Supports init scripts, battery monitoring, TCP/EZ-Script server and serial/I2C.
Benchmark by Synthiam
Diagnose EZ-B connection speed and reliability; benchmark ADC read rates (4-70/sec), reveal flood-control effects and optimize data throttle.

ARC Pro

Upgrade to ARC Pro

Discover the limitless potential of robot programming with Synthiam ARC Pro – where innovation and creativity meet seamlessly.

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#1  

Yes - the pattern you’re describing sounds much more like Wi-Fi latency/jitter bursts than an ARC benchmark problem or a pure CPU bottleneck.

A few things stand out:

  • Ethernet is stable at 380-410 rps
  • Wi-Fi drops periodically to near zero for 200-500 ms
  • Ping stays fine at 5-7 ms
  • Camera streaming makes it worse
  • Servo twitches line up with the dips

That combination usually means the Pi is being interrupted briefly by network buffering, Wi-Fi contention, or the way the EZB server and camera traffic share resources.

What I’d recommend, in order

1. Keep the camera off the Pi Wi-Fi path if possible

Since camera streaming makes the dips worse, the best fix is usually to avoid sending video over the same Wi-Fi path as control traffic.

Options:

  • Use a USB camera directly into the Windows laptop running ARC
  • Use a lower resolution / lower FPS camera profile
  • If the camera must stay on the Pi, keep it as light as possible

Even though ping stays good, video traffic can still create short bursts that affect control traffic.

2. Use the Benchmark as a symptom test, not the root cause

The Benchmark skill is useful here because it shows the comms stalls clearly, but the actual issue is likely the EZBPi server’s response timing under Wi-Fi load.

ARC Benchmark docs:

3. Check whether the Pi is running any background network services

On Raspberry Pi-based EZB servers, I’d look for:

  • mDNS / discovery chatter
  • logging
  • camera processes
  • any service that polls sensors too frequently
  • any scripting loop that may be competing with ARC requests

If DJ’s EZBPi image has service options, disable anything not required for the robot test.

4. Shorten and clean up the local wiring on the Pi side

Your idea about wiring is reasonable, especially for the MCP3008 and PCA9685.

For the Pi side:

  • Keep MCP3008 SPI leads as short as possible
  • Keep PCA9685 wiring short
  • Route signal wires away from servo power wires
  • Use a solid common ground
  • Add decoupling near the servo power rail if not already present

What I’d prioritize:

  • Power decoupling near the PCA9685/servo distribution
  • Separate servo power from Pi power
  • Keep analog sensing wiring away from servo current paths

Ferrites can help in some builds, but I’d treat them as a secondary fix after power/wiring cleanup.

5. Verify the servo power supply is not causing Wi-Fi brownout noise

Even if the Pi itself isn’t rebooting, servo current spikes can inject noise into:

  • the 5V rail
  • ground reference
  • Wi-Fi radio stability
  • the MCP3008 readings

If the servos are on the same supply path, try:

  • a dedicated servo power supply
  • thick ground wiring
  • star grounding
  • local bulk capacitance near the servo board

This is a very common cause of "random twitches" that look like network hiccups.

6. In ARC, reduce anything that causes burst traffic

If the robot behaves better when you disable extra skills, that’s a clue.

Try:

  • lower camera frame rate
  • reduce image size
  • reduce how often scripts poll sensors
  • avoid excessive repeated reads from multiple skills
  • if Auto Position is polling heavily, simplify the loop

7. Test Wi-Fi on 2.4 GHz as well as 5 GHz, but favor stability over speed

You already tested both, which is great.

In robotics, 5 GHz is not always better if the AP has short burst buffering behavior or if the client has weaker signal handling under load. Sometimes a clean 2.4 GHz link is more consistent for control traffic, even if slower.

8. If the Pi is acting as both EZB server and video source, that’s the main architectural limit

Honestly, the setup you’re pushing is right near the edge of what I’d expect to stay perfectly smooth over Wi-Fi with servo control plus video.

If you want the most robust setup, Synthiam’s own guidance for Raspberry Pi robotics usually favors:

  • ARC on Windows 11
  • a separate I/O controller for real-time robot I/O

That doesn’t mean you must switch immediately, but it is the cleanest long-term solution if smooth servo motion is the priority.

Raspberry Pi support page:

Best practical fixes to try next

If I were tuning your setup, I’d do this sequence:

  1. Run Wi-Fi with camera disabled
  2. Shorten PCA9685 and MCP3008 wiring
  3. Separate servo power from Pi power
  4. Add bulk capacitance near the servo rail
  5. Reduce camera FPS/resolution if needed
  6. Test 2.4 GHz vs 5 GHz for the most stable control link
  7. Look for any service or script on the Pi that spikes during servo activity

About ARC settings

For this specific issue, there isn’t usually an ARC checkbox that fixes Wi-Fi burst latency on an EZB server. The big wins are usually:

  • traffic reduction
  • power integrity
  • wiring layout
  • removing video from the same communication path

A couple of questions that would help narrow it down

  1. Is the camera physically on the Pi, or is ARC pulling video from the Pi over the network?
  2. Are the PCA9685 servos powered from the same supply as the Pi, or from a separate servo supply?
  3. Which exact Wi-Fi adapter / chipset is in the Pi 4 setup, and is the Pi using onboard Wi-Fi or USB Wi-Fi?
  4. Does the dip still happen if you run Benchmark alone with camera completely removed from the project?

If you want, I can also help you build a minimal ARC test project to isolate whether the jitter is coming from:

  • Wi-Fi transport,
  • camera streaming,
  • servo power noise,
  • or the EZBPi server process itself.

The ARC AI Assistant inside ARC can also help rewrite or simplify your test scripts quickly if you’re adjusting polling or auto-position logic: https://synthiam.com/Products/AI-Assistant

I am a customer support AI and still learning. Please verify important answers in our support documentation. For advanced AI features, use the AI Script Agent built into ARC.