Skip to content

Victron VE.Direct

Purpose

The regulator listens (RX-only) to a Victron VE.Direct serial stream on UART_RX1, allowing it to read state of charge, voltage, current, and other parameters from a Victron device (BMV battery monitor, SmartShunt, MPPT charge controller, etc.). The data is used to qualify charging decisions — for example, holding the alternator at maintenance-only current when the Victron BMV reports the bank is full.

There is no TX path; the regulator does not send commands to the Victron device.

For the underlying isolation circuit (HCPL2531 optocoupler, current-limiting resistors, pull-ups, ESD), see NMEA0183 and VeDirect Hardware. This page covers the protocol-level configuration and physical wiring.

Electrical

Parameter Value Notes
Signal level (Victron side) 3.3 V or 5 V TTL UART, open-collector Victron VE.Direct cables typically 3.3 V logic
Baud rate 19200 baud VE.Direct standard, not configurable
Data format 8 data bits, no parity, 1 stop bit (8N1) Standard
Frame timing TEXT frames sent ~once per second See Victron VE.Direct protocol documentation
Isolation 2500 VRMS via HCPL2531 See linked hardware doc
Internal pull-up 13 kΩ to 3.3 V on UART_RX1_ISOL Inactive line idles HIGH

Connector Pins

UART_RX1 is broken out at two physical locations, in parallel — use whichever is most convenient for your install. Do not wire both at once.

Cable Connector Pin Wire color (T568A) Signal ESP32 GPIO
2 RJ5 — right port 15 Brown/White UART_RX1 GPIO7
3 RJ3 — left port 1 Green/White UART_RX1 GPIO7

Both pins land on the same trace inside the board, so connecting wires to both will short the two Victron-side cables together — that is electrically OK but mechanically pointless and may cause cable strain.

Wiring to a Victron Device

Victron VE.Direct cables (VE.Direct to bare-wire, part numbers ASS030530200, ASS030530300, etc.) expose three wires:

Victron wire color Function Connects to
Yellow TX from Victron device RJ5 pin 15 (or RJ3 pin 1) — the regulator's UART_RX1
Red RX to Victron device Not connected — regulator does not transmit
Black GND RJ5 pin 16 (Brown / GND) — or RJ3 pin 8 if using the RJ3 path

Tape off the Victron red wire; leaving it floating near the regulator harness is fine, but do not let it touch 3.3 V or 5 V — it is an input on the Victron side and could be damaged.

Why Yellow goes to a pin labelled "RX"

A common confusion. The pin label on the regulator is from the regulator's perspective: UART_RX1 is the regulator's receive input. The Victron device's TX (yellow) is what the regulator wants to receive. So Victron TX → regulator RX is correct.

Software Notes

  • The firmware UART driver expects standard 8N1 framing at 19200 baud.
  • VE.Direct sends two frame types: TEXT frames (human-readable, ~1 Hz) and HEX frames (binary, on demand). The firmware parses TEXT frames; HEX frames are ignored.
  • Field acceptance is gated by VE.Direct's per-frame checksum field. Bad-checksum frames are dropped silently.
  • See the firmware docs for the current list of recognized VE.Direct field IDs (V, I, SOC, etc.).

Troubleshooting

Symptom Likely cause
No VE.Direct data appearing in regulator console Wrong wire — confirm Victron Yellow goes to UART_RX1, not Red. Common installer mistake.
Data appears intermittently Long cable run picking up engine RFI — keep the VE.Direct cable away from alternator wiring, or shorten it
Console shows correct frame structure but field values are wrong/stale Victron device firmware version may report different field IDs — confirm against current Victron VE.Direct field documentation
Garbled characters Baud rate mismatch — unlikely since VE.Direct is fixed at 19200, but verify the firmware is configured for 19200 and not 4800
Data stops when alternator engages EMI pickup on unshielded cable — use a shielded twisted-pair extension, ground the shield at the Victron end only