Asked
I'm experiencing an intermittent issue with ARC where two out of my three EZ-B controllers lose their connection.
- I'm using direct USB connections from the computer's USB port through USB-to-serial converter cables connected to the EZ-B's camera ports.
- At startup, ARC connects to the two EZ-Bs using an initialization script. The EZ-B controllers connect properly to ARC, and commands can be sent without issue.
- Randomly, connections 0 and 2 will disconnect from the computer. This could happen to either connection or both, but at different times. It seems they don't disconnect simultaneously.
- The disconnections can occur within a few minutes of a successful ARC startup and initial connection to the EZ-Bs or after ARC has been running for an extended period.
- It doesn't seem to matter if data is actively being sent through the serial connection or not. Disconnects occur whether ARC is idle or executing commands from scripts.
- The EZ-B controllers do not lock up. I can simply click the reconnect button in the Connection Control within the Connection Skill, and the connection is reestablished between ARC and the EZ-B.
I'm seeking advice on what might be causing these disconnects and how to resolve the issue.
Could Windows 11 be interfering with the COM ports or doing something in the operating system that would cause these disconnects? Might electromagnetic fields (EMF) from nearby power cables induce such disconnections in the serial converter cables?
Thanks in advance for any suggestions.
Related Hardware (view all EZB hardware)
EZ-B V4
by EZ-Robot
EZ-B v4/2 robot controller: dual Cortex ARM, Wi-Fi, audio/video, 24 servo/digital ports, I2C/UART, camera and Synthiam ARC control for custom robots
Wi-Fi / USB
Servos
24
Camera
Audio
UART
3
I2C
ADC
8
Digital
24
Related Robot Skills (view all robot skills)
Serial Terminal
by Synthiam
PC and EZB serial terminals for ARC: connect, monitor and send text/ASCII to serial devices. Supports COM, flow control, baud, DTR/RTS, hex
Connection Diagnostic
by Synthiam
Diagnose EZ-B Wi-Fi connection issues with verbose EZ-B communication logging, ping tests, log export and diagnostic reports for Synthiam support.
Requires ARC
v6

In the last paragraph of my last post the polling speed change should have read "slowed down the polling in that script from 100 ms to 350 ms.
Excellent progress - thanks for the clear status updates. Slowing the poll to 350 ms and seeing 12 hours of stability is a very useful datapoint: it strongly suggests the problem is related to polling frequency / command traffic (or correlated power/EM events that happen when polling is heavy).
You asked about switching from ADC.get() to ADC.waitFor*(...) with a frequency parameter. That’s a fine idea - both can work. Below I explain the trade-offs, give a ready-to-run ADC.waitFor-based single-watcher script (with hysteresis/debounce), show how to integrate it safely with your existing actions (Action Runner pattern), and give short next-step tests and things I still need from you if instability persists.
Short trade-off summary
Recommended safe approach (minimal change)
If you want a waitFor* implementation, here is a single-watcher version using ADC.waitForHigher/Lower with frequency and timeouts. It scans ports sequentially with a small per-port timeout so total loop time stays modest. It posts a small event var for an external Action Runner to handle heavy tasks.
ADC.waitFor-based single-watcher (use this if you want waitFor* with frequency)
Notes about this waitFor script
Action Runner (lightweight consumer)
Example Action Runner skeleton:
Integration checklist (step-by-step)
Other improvements and diagnostics to try (if you still see disconnects)
Because you already had much improved stability at 350 ms, try the waitFor script with perPortTimeoutMs 60 ms and perPortFreqMs = 50, and keep Action Runner pollMs = 400. That should result in a total worst-case scan near 480 ms and keep the watcher light.
A few follow-ups to tune further
If you want, I’ll:
Which variant would you like next - the ADC.get central watcher (with explicit hysteresis/debounce), the ADC.waitFor watcher above (you already have it), or the ADC-skill-variable watcher (reads $ variables from ADC skill rather than reading directly)?
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.