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 |