Appearance
Common mistakes — NMEA 2000 gateway
General CanCan problems (LED codes, box invisible on the bus, firmware update) are in Common mistakes. This chapter is what goes wrong with the NMEA 2000 side specifically.
Nothing at all appears
Ask the gateway first — it lists what it has seen, and an empty list means nothing is reaching CAN 2:
sh
muxen-uds -i can0 -F 17 -I <io-instance> routine --action 1 --routine 2| Likely cause | How to tell | Fix |
|---|---|---|
| The backbone runs at another speed | total silence, no errors | the gateway is fixed at 250 kbit/s and cannot be changed. A backbone that is not at 250 kbit/s is not an NMEA 2000 backbone |
| Termination | 60 Ω across the powered-down backbone; anything near 120 Ω is wrong | 120 Ω at each end, nowhere else |
| The backbone is not powered | the other equipment is silent too | NMEA 2000 equipment talks only on a powered backbone |
| Wrong side | CAN 1 is the MUXEN bus, CAN 2 the backbone | swap the connectors |
The list shows devices, but they do not appear on the boat
| Likely cause | How to tell | Fix |
|---|---|---|
| The equipment is not one the gateway knows | it is on the backbone but never in the routine 2 list | check the family list in Reference — NMEA 2000 gateway. Unknown equipment is ignored, silently and on purpose |
| The identifying frame has not arrived yet | the device is listed with instance 63 | wait. A battery is identified by its status frame, an alternator by its DC status frame, a thruster by its control frame — silent equipment is never identified |
| More than 32 translated devices | the newest devices stay at 63 forever | the gateway holds 32 configurations. Reduce the backbone, or split it across two gateways |
Two devices, one MUXEN device
Two NMEA 2000 devices left on the same instance collide. For Victron converters and MPPTs the gateway reacts: it asks the newcomer to move to a free NMEA 2000 instance, chosen between 0 and 7. If all eight are taken, or if the equipment refuses, the second device stays inert.
The alternator and the bow thruster cannot be moved at all — the gateway reads their instance and lives with it.
Fix it where it belongs: give each Victron device a distinct instance in its own configuration, then power-cycle the gateway.
A battery appears, but with no state of charge
This is the NMEA 2000 battery-instance convention, and it catches everyone.
The gateway reads the MUXEN instance as the NMEA 2000 battery instance divided by 32, and accepts state of charge only from an instance that is an exact multiple of 32.
| NMEA 2000 instance | What the gateway does with it |
|---|---|
| 0, 32, 64 … | main battery data — becomes MUXEN battery 0, 1, 2 … |
| 1, 33, 65 … | minimum cell voltage and temperature of that battery |
| 2, 34, 66 … | maximum cell voltage and temperature of that battery |
| anything else | voltage and current only, no state of charge |
A battery monitor left on instance 5 therefore lands on MUXEN battery 0 with no SoC, and quietly overwrites a real battery 0. Number the batteries 0, 32, 64 on the NMEA 2000 side.
The battery's charge and discharge limits look invented
They are — for a shunt. The gateway asks each battery device whether it is a managed BMS or a plain shunt (BMV, SmartShunt, Lynx Shunt). A BMS announces its own limits and they are used as they are; a shunt announces none, so the gateway falls back to the limits written in that device's configuration and derives the charge request from voltage alone, using AlertVmin / AlertVmax and their hysteresis. If a shunt-based parc behaves oddly, that is where to look — not at the equipment.
The equipment is gone but still on the screens
A device that stops talking is dropped after 2 minutes of silence, and its MUXEN device disappears with it. The delay is deliberate: it rides out a busy backbone. A device that flickers in and out of the screens is one whose frames are not arriving reliably — suspect the backbone, not the gateway.
The Zeus alternator does not charge, or charges at nothing
| Likely cause | How to tell | Fix |
|---|---|---|
| A curve is configured but interpolates to zero | the alternator is limited to 0 A at that engine speed | the three curves are read once, when the alternator is discovered — correct the curve, then power-cycle the gateway |
| No curve at all | the alternator runs at its own maximum | that is the intended fallback, not a fault |
| The alternator never announced its capacity | boost and generator mode are refused | the gateway offers them only once the alternator has answered with its maximum current |
Two masters on the backbone
By default the gateway publishes the boat's battery voltage, current, state of charge and charge limits onto the NMEA 2000 network for the Arco Zeus alternator and for a Victron Cerbo GX (N2K_EmitTarget = 1). If a Cerbo GX with its own BMS, or another charge master, is already doing that, the two disagree and the charge limits jump. Decide who is in charge; to make the gateway read-only for a device:
sh
muxen-uds -i can0 -F 27 -I <n> writeconfig --name N2K_EmitTarget --value 0A device shows up as the wrong kind of thing
Every Victron device that announces itself as a battery charger is published as a MUXEN solar charger, function 10. For an MPPT that is right; for a mains-fed charger it is misleading but harmless, its panel side simply reads nothing.
A charger from another brand does nothing useful
The profiles are written against Victron, MG, Arco Zeus and Vetus/Maxwell. Equipment of another manufacturer announcing itself as an inverter, a charger or a DC/AC converter is not supported by this firmware. Keep it off the gateway's backbone.
muxen-uds locate does not blink the box
On this firmware the routine that normally blinks the LED returns the list of NMEA 2000 devices instead. Identify the box by its UID, not by locate.
After a factory reset, everything came back with different numbers
Expected. The gateway rediscovers the equipment on its own, but the instance numbers you chose, the parc bindings and the alternator curves are gone, and the automatic numbering starts again from whatever the NMEA 2000 network says. Restore them from the CSV you saved at commissioning.
