Appearance
Commissioning
The gateway discovers the propulsion controllers as they speak and fixes each one's identity at that moment, so every numbering change ends with a restart. Everything below is run on the boat's Brain.
1. Wire it and check it lives
CAN 1 to the MUXEN bus, CAN 2 to the propulsion bus, power on. The system LED must blink once a second. Anything else: see Common mistakes.
Expect relay 2 — the power-limitation contact — to be closed at this point. That is normal on a box that has not yet seen a healthy battery bank.
2. Find the box and give it its own identity
sh
muxen-uds -i can0 uid --scanThe box's own generic I/O device ships unaddressed (InstanceNum = 255) and needs a number, both for its inputs and so the box can be reached for a firmware update later:
sh
muxen-uds -i can0 uid --uid <the-box-uid> --instance 4 --preferred-function-code 17--preferred-function-code is not optional: this box answers on two functions — 17 for its own I/O and 7 for each motor. Do this one box at a time; two unconfigured boxes collide on the parking address.
3. Power the controllers one at a time
This is the step that saves the afternoon. Every newly discovered controller starts at motor instance 0. Bring them up one by one, and number each one before starting the next:
sh
mosquitto_sub -h 127.0.0.1 -t 'device/7/#' -v # first controller onlyWithin a second or so the gateway publishes device/7/0/life. If nothing appears, go to Common mistakes — Bell Marine gateway before changing anything. Give that controller its final number and restart the gateway:
sh
muxen-uds -i can0 -F 7 -I 0 writeconfig --name InstanceNum --value 1 --rebootThe number is remembered against that controller's node number, so it survives restarts and stays with that controller. Motor instances run 0…62 and must be unique per function across the whole boat — check with muxen-uds -i can0 scan before choosing.
Then power the next controller, which will again appear at instance 0, and repeat.
4. Check what the motor reports
sh
mosquitto_sub -h 127.0.0.1 -t 'device/7/1/life' -vYou should see, refreshed twice a second: a state (off, regeneration, drive or error), the shaft speed in rpm, a temperature in °C, and the DC bus voltage and current. Turn the shaft or run the motor briefly and watch the values move.
Two things before you judge the numbers: speed is a magnitude — ahead and astern both show a positive rpm — and error carries no detail, it only means the controller reported a mode the gateway does not recognise. The reason has to be read on the Bell Marine side.
5. Check which battery bank the motor was bound to
Each motor is tied to one of the boat's battery banks — that is what decides the power-limitation relay. By default the gateway picks the bank itself, from the DC bus voltage it measures the first time the controller reports, and then writes the result down permanently:
sh
muxen-uds -i can0 -F 7 -I 1 readconfig --only-name BindToParc| Value | Meaning |
|---|---|
| 254 | still automatic — no valid voltage seen yet |
| 1, 2, 3 | bound to that battery bank |
| 255 | standalone: the voltage matched no known bank, the motor is not watched |
A motor left at 255 never limits: relay 2 stays open whatever the batteries do. If that is not what the installation expects, set the bank by hand:
sh
muxen-uds -i can0 -F 7 -I 1 writeconfig --name BindToParc --value 1 --rebootRelay 2 opens within a second or two of a healthy bank being seen. If it stays closed, the bank is not reporting — see Common mistakes — Bell Marine gateway.
6. Check the regeneration request
sh
mosquitto_pub -h 127.0.0.1 -t 'device/7/1/command' -m '{"requestRegeneration":true}'Relay 1 must close. It reopens five seconds after the last request, so a screen that wants regeneration held has to keep asking. To release it at once:
sh
mosquitto_pub -h 127.0.0.1 -t 'device/7/1/command' -m '{"requestOff":true}'Do this with someone watching the propulsion system: relay 1 is wired into a real installation.
7. Keep a copy
sh
muxen-uds -i can0 -F 7 -I 1 readconfig --save-as-csv bellmarine-motor-1.csvOne file per motor. A factory reset erases the numbering and the bank binding, and both have to be redone controller by controller.
