Victron inverter/chargers and chargers on NMEA 2000: the PGNs decoded
Multis and Quattros don't have a CAN port — they talk VE.Bus — yet their data shows up on NMEA 2000 MFDs. How it gets there decides what you see: two network addresses for one inverter/charger, AC data in J1939 messages rather than NMEA ones, and alarms packed into a switch-bank message. This guide decodes all of it, with frames for the CAN frame decoder and the log analyzer.
How a Multi gets onto NMEA 2000
Two routes, with the same structure on the bus:
- A GX device with NMEA2000-out enabled (Settings for the VE.Can port; off by default, the CAN-bus profile must include VE.Can at 250 kbit/s). The GX publishes each inverter/charger, battery monitor and other device it knows as its own virtual device. Since GX devices gained NMEA2000-out in late 2019, Victron recommends no longer using the interface below: connect the inverter/chargers' VE.Bus port to the GX and enable NMEA2000-out.
- The VE.Bus to NMEA 2000 interface (or VE.Bus to VE.Can interface), the older drop cable between one VE.Bus system and the network.
Either way, an inverter/charger is two functions, each with its own address:
| Function | Represents | Sends |
|---|---|---|
| 153 "Inverter" | AC output | AC output PGNs, Charger Status, Inverter Status, Battery Status, Binary Status Report, VREGs |
| 154 "AC Input" monitor | AC input | AC input PGNs only |
Victron's own example of a GX publishing two BMVs and an inverter/charger: the inverter/charger is class 35 (Electrical Generation) at two addresses, function 153 for the AC output and 154 for the AC input.
Mind the numbers. In the official NMEA 2000 list, function 153 is AC Mains and 154 is AC Output — the reverse. Victron set its mapping early, it is in use on many systems, and Victron says to follow its mapping when interpreting its AC PGNs. Displays that can't tell the two addresses apart show the output as utility #0 and the input as utility #1.
The message list
From the VE.Bus to NMEA 2000 interface manual — both functions accept the network-management PGNs (60928, 65240, 126208, 126996, 126998); then:
| PGN | Hex | Sent by | Content |
|---|---|---|---|
| 65014 / 65011 / 65008 | 0xFDF6 / 0xFDF3 / 0xFDF0 | 153 and 154 | Phase A / B / C: voltage, current, frequency |
| 65013 / 65010 / 65007 | 0xFDF5 / 0xFDF2 / 0xFDEF | 153 and 154 | Phase A / B / C: power |
| 65017 / 65016 | 0xFDF9 / 0xFDF8 | 153 and 154 | Average voltage, current, frequency / apparent power of all phases |
| 127507 | 0x1F213 | 153 | Charger Status (inverter/chargers only, not inverters) |
| 127508 | 0x1F214 | 153 | Battery Status |
| 127509 | 0x1F215 | 153 | Inverter Status |
| 127501 | 0x1F20D | 153 | Binary Status Report: alarms (bank 0), LEDs (bank 1) |
Phase B and C messages only appear on multi-phase systems. The AC PGNs are sent every 1500 ms.
AC data: J1939-75 PGNs
The AC messages are SAE J1939-75 formats, which NMEA 2000 builds on. The canboat database that most open-source tools use names them Utility Phase A …; on a Victron system the sending function tells you whether it is the inverter's output (153) or its input (154).
65014 — phase A voltage, current, frequency:
| Bytes | Field | Encoding |
|---|---|---|
| 0–1 | Line-line voltage | 1 V |
| 2–3 | Line-neutral voltage | 1 V |
| 4–5 | Frequency | 1/128 Hz |
| 6–7 | Current | 1 A |
ID 0CFDF62A priority 3, PGN 65014, from 0x2A
data FF FF E6 00 00 19 04 00 230 V, 50 Hz, 4 A
Decode it. 0x00E6 = 230 V; 0x1900 = 6400 × 1/128 = 50 Hz.
65013 — phase A power: real and apparent power as two 32-bit values, each with an offset of −2,000,000,000 (the J1939 convention), so a raw value of 2,000,000,920 means 920 W:
ID 0CFDF52A
data 98 97 35 77 A6 97 35 77 920 W, 934 VA
Decode it. Forgetting the offset gives "−1,999,999,080 W" — a common first bug.
Charger and Inverter Status
The interface translates the VE.Bus system state into the NMEA charger and inverter states like this:
| VE.Bus state | 127507 Charger state | 127509 Inverter state |
|---|---|---|
| Off | Disabled | Disabled |
| Passthru | Not charging | Passthru |
| Bulk | Bulk | Passthru |
| Absorption (incl. repeated) | Absorption | Passthru |
| Float | Float | Passthru |
| Storage | Float | Passthru |
| Inverting / assisting | Not charging | Invert |
| Fault | Fault | Fault |
19F2152A 00 00 00 D0 127509: instance 0, AC 0, DC 0, Invert, enabled
19F2132A 00 00 F1 FD FF FF 127507: Bulk, charger enabled
Both are fast-packet PGNs; these are the reassembled payloads. Decode Inverter Status and Charger Status. In 127509 byte 3, bits 0–3 are the state (0 = Invert) and bits 4–5 the enable (01 = on); in 127507 byte 2, bits 0–3 are the state (1 = Bulk).
For the VE.Bus to NMEA 2000 interface, Victron's whitepaper notes that the Battery instance (127508), DC instance (127506), 127509's DC instance and the Charger instance (127507) are the same number — changing one changes all.
Alarms and LEDs: PGN 127501
Two switch banks, each a list of 2-bit indicators (00 off, 01 on, 11 unavailable).
Bank 0 — alarms, sent every 6 seconds and immediately on change:
| Indicator | Meaning when on |
|---|---|
| 1–4 | not used |
| 5 / 6 | Low battery warning / alarm |
| 7 / 8 | Temperature warning / alarm |
| 9 / 10 | Overload warning / alarm |
| 11 / 12 | Ripple warning / alarm |
19F20D2A 00 FF 01 00 FF FF FF FF low battery warning, everything else off
Decode it: indicator 5 on, 6–12 off.
Bank 1 — the front-panel LEDs, off by default. Setting bit 8 of VREG 0x0202 (remote control used) turns it on; it is then sent every 8 seconds and on change. Indicators come in pairs — mains on / mains blink, absorption on / blink, bulk, float, inverter, overload, low battery, temperature — and the pair tells you the LED: on-bit only = on, blink-bit only = blinking, both = blinking in anti-phase.
State of charge: 127506 is off by default
The VE.Bus SoC is reported in DC Detailed Status, PGN 127506, but Victron disables it by default, because the inverter/charger's own SoC is only valid when no other chargers or DC loads are on the battery. It can be enabled by changing its transmission interval with the NMEA Request Group Function, PGN 126208. On a boat with a BMS or battery monitor, read SoC from that instead.
VREGs from the inverter/charger
Values without a standard PGN are in Victron VREGs on PGN 61184 (data starting 66 99). Send requests to the Inverter (153) address — the AC input address does not answer VREGs. Two useful ones:
- 0x0201 Device state — Off, Fault, Bulk, Absorption, Float, Storage, Equalize, Passthru, Inverting, Assisting, Power supply mode … Broadcast on change, so you don't need to poll it.
- 0x0202 Remote control used — whether AC-in current limits and on/off use the internal or the remote value; bit 8 enables the LED bank above.
1CEFFF2A 66 99 01 02 09 00 00 00 device state 0x09 = Inverting
Skylla-i chargers
The Skylla-i has its own VE.Can port, so it is on the bus directly. Per Victron's whitepaper and switch-bank page:
| PGN | Content |
|---|---|
| 127508 Battery Status | output voltage, current, temperature — the 3-output model sends one per output, distinguished by battery instance |
| 127750 Converter Status | charger state in field 3: off, bulk, absorption, float … |
| 127744 AC Power / Current | AC input current |
| 127501 Binary Status Report | bank 0: 1 relay, 2 alarm, 3 low voltage, 4 high voltage |
| 127507, 127503 | deprecated in favour of 127750 and 127744; not sent by default, can still be requested |
19F30631 01 00 03 00 FF FF FF FF 127750: Bulk, temperature/overload/voltage/ripple good
1CEFFF31 66 99 DA ED 02 00 00 00 VREG 0xEDDA charger error 2: battery voltage too high
Decode Converter Status and the charger error VREG. When the alarm indicator in 127501 is on, the reason is in VREG 0xEDDA. Two practical notes: Skylla-i chargers use the device instance (in the address claim) to group and synchronise, and a Skylla-i switches off without mains — so it stops sending and answering on the bus.
Other chargers via a GX
With NMEA2000-out, a GX also publishes Smart IP43 chargers (the 120–240 V model can be switched and current-limited from a compatible MFD) and Orion XS DC-DC chargers (on/off). The GX manual doesn't list their PGNs; record a log and look in the log analyzer for the virtual device's address.
Sources
Checked on 25 October 2026:
- Victron Energy — Cerbo GX manual, "Marine MFD integration by NMEA 2000": NMEA2000-out, functions 153/154 and the reversed mapping, virtual devices, supported device types
- Victron Energy — VE.Bus to NMEA 2000 interface manual (version 09, 7 January 2020): PGN lists per function, state mapping, binary states and LEDs, VREGs
- Victron Energy — Data communication with Victron Energy products: per-product PGN tables (VE.Bus, Skylla-i), instances, 127506 disabled by default
- Victron Energy — NMEA2000 switch bank PGN definitions: 127501 for Skylla-i, VREG PGN 61184
- Victron Energy — VE.Can registers (public): 0x0201, 0x0202, 0xEDDA
- canboat v9.0.0 — field layouts of 65013, 65014, 127501, 127507, 127509 and 127750 (incl. the J1939 power offset)
We are not affiliated with Victron Energy.