System:
- Ekrano GX, Venus OS Large v3.75
- 2× EV Charging Station NS (AC22NS), firmware v2.08
- 3× Docan Panda 48 kWh LiFePO4 (CAN BMS on VE.Can), 3-phase MultiPlus-II
- Custom Node-RED EV phase balancer (reads/writes the chargers over the GX dbus, 1-second control loop, protecting a 38 A/phase limit)
The problem:
Both AC22NS chargers are on a dedicated 2.4 GHz IoT wifi network with a mesh AP less than 2 m away, static IPs, and Bluetooth disabled. Despite the strong signal, they continuously drop and re-appear on the GX. The dbus-modbus-client log shows a constant cycle, roughly every 15–30 seconds, 24/7 — even when the chargers are completely idle and not charging:
[tcp:192.168.#.#:502:1] Device failed: Modbus Error: [Connection] Failed to connect
[tcp:192.168.#.#:502:1] Found EV charger: Victron Energy AC22NS
registered ourselves on D-Bus as com.victronenergy.evcharger.evc_...
Ping tests to both chargers show severe latency and packet loss on an otherwise healthy LAN (spikes from ~5 ms to 2000–2700 ms, 5–10% packet loss), which is why the Modbus reads time out (“No response received, expected at least 8 bytes”).
The consequence:
This constant disconnect/reconnect churn keeps re-registering the chargers on dbus, which in turn keeps the whole dbus chain busy (vecan-dbus, dbus_systemcalc, vrmlogger, flashmq). Combined with my Node-RED balancer polling the chargers every second, dbus-modbus-client sits at ~25% CPU permanently. This has twice escalated into a full CPU load storm (load average >40, 0% idle) that triggered a hardware watchdog reboot — taking the whole system down, including AC output while in island mode. The watchdog_processlist.txt confirms the dbus/CAN chain saturating at the moment of the reset.
I’ve isolated it with before/after CPU measurements:
- Chargers ON + balancer ON →
dbus-modbus-clientat 25% CPU, system near the edge - Chargers OFF + balancer ON → still 25% (balancer keeps hammering the now-dead chargers)
- Chargers ON + balancer OFF →
dbus-modbus-clientnegligible, 83% idle
So the chargers on their own are fine; it’s the combination of their wifi instability and any client polling them that creates the churn.
My questions to the community:
- Is this AC22NS wifi/Modbus instability a known issue, and is there any firmware or config fix that makes the connection stable? (I’ve already tried: dedicated IoT SSID, static IP, Bluetooth off, matched subnet mask, scan period 0.)
- Is there a way to make the GX
dbus-modbus-clientmore tolerant of an unresponsive charger — e.g. back off and stop re-registering instead of retrying every few seconds — so a flaky charger can’t drive the whole dbus chain into a load storm? - Has anyone successfully moved these chargers to a wired connection, given the AC22NS has no ethernet port? Any bridge/adapter approach that actually resolved it?
- More broadly: should a single misbehaving Modbus device really be able to escalate to a watchdog reboot of the GX? Is there any GX-side protection against this?
Any pointers appreciated — happy to share more logs (dbus-modbus-client, watchdog_processlist, ping traces) if useful.