Appearance
Reference
The identifiers a box carries
Every CanCan answers with four identifiers. They are read-only.
| Parameter | What it is | Example |
|---|---|---|
ProductId | the finished product — which application this box implements | 010010005 |
HardwareId | the board generation | 990010047 (v1), 990010061 (v2) |
SoftwareId | the application program | 990050004 |
SoftwareVersion | the version of that program; 5.x = CanCan v1, 6.x = CanCan v2 | 6.2 |
sh
muxen-uds -i can0 -d <address> readconfig --only-name ProductId \
--only-name SoftwareVersionProduct, software and version, per application
| Product ID | Application | Software ID | v1 | v2 |
|---|---|---|---|---|
| 010010003 | Bell Marine | 990050008 | 5.2 | — |
| 010010004 | NMEA 2000 | 990050002 | 5.24 | 6.5 |
| 010010005 | Scheiber | 990050004 | 5.7 | 6.2 |
| 010010006 | Fischer Panda | 990050018 | 5.4 | — |
| 010010020 | Aquabase | 990050012 | 5.5 | 6.2 |
| 010010026 | Magic Trim | 990050017 | 5.2 | — |
| 010010027 | Eco Sistems | 990050011 | 5.11 | 6.2 |
| 010010032 | bus extender | 990050023 | 5.1 | 6.2 |
| 010010034 | J1939 | 990050027 | 5.3 | 6.4 |
Versions are those of the source tree at the time of writing; the box itself is always the authority.
How a device is addressed
A MUXEN device is a function (what kind of thing it is) and an instance (which one). The address used by muxen-uds -d is the two packed together:
address = function × 64 + instanceA CanCan registers more than one device: its own generic I/O, plus one or more devices for whatever it translates. Function 17 is the generic I/O, so the I/O side of a box set to instance 0 is at 17 × 64 = 0x440. The same device can be reached by name:
sh
muxen-uds -i can0 -F 17 -I 0 readconfigInstance numbers run 0…62. 63 and above mean "not addressed", and 255 is the factory default for the generic I/O of every box.
Watch out for the exceptions: a few translated device types default to instance 0, not 255 — the watermakers, the propulsion motor and the Magic Trim device. A factory-fresh box of those applications starts publishing on instance 0 immediately, so two of them on one bus collide before anyone has configured anything. Number them one at a time.
The generic I/O device, on every box
Function 17. Present whatever the application does.
| Parameter | Default | Meaning |
|---|---|---|
InstanceNum | 255 | the instance number — nothing is published until this is set |
EnGenIo | 0 | publish the state of the inputs, outputs and analog inputs. A few applications publish regardless of it — see their manual |
EnAnalogPwr | 1 | power the analog sensor supply |
EnCanAuxPwr | 0 | leftover parameter — drives a signal shipped boards do not use. Leave it at 0 |
What it publishes, when enabled: the two dry-contact inputs, the two relay states, and the two analog inputs in millivolts. It publishes on change, and at least once every half second otherwise. It accepts commands to open and close each relay.
LED codes
| Rate | Meaning |
|---|---|
| 1 Hz (on 500 ms, off 500 ms) | running normally |
| ≈25 Hz (very fast flicker) | the firmware could not confirm itself — power-cycle, the previous version returns |
| steady on | stuck during startup |
| off | not running at all |
Applications may add their own rates; theirs are listed in their own reference chapter.
Where things live in the source tree
| Applications | workspace/muxen/cancan/app_<name>/ |
| Board definitions | workspace/muxen/cancan/boards/arm/muxen_cancan[_v2]/ |
| Per-product settings (IDs, versions, bus speeds) | boards/arm/<board>/<productid>.overlay |
| Signing keys | workspace/muxen/cancan/keys/ |
| Released images | built by CI, published as <productid>[-V2]-<app>-firmware.srec |
Releases are cut by tagging <productid>-v<version>, which rebuilds only that product.
