← All tools

Message & Error Explainer

What an ArduPilot message means and what to do about it

Українська

A device on the CAN bus stops arming

Stops itBoard, internal errors, CAN, scripting

What ArduPilot says:

CAN is the two-wire bus that DroneCAN GPS units, compasses, ESCs and rangefinders share. “DroneCAN: …” carries a reason from the node list ArduPilot keeps: “Duplicate Node” means two devices claim one node number, or a device was replaced by another with the same number; “Node N unhealthy” means a device reports itself faulty. “Same rfnd on different CAN ports” means the two CAN drivers are set to the same rangefinder protocol. “PiccoloCAN …” concerns Piccolo CAN ESCs and servos.

What to do, most likely first

  1. A DroneCAN device was swapped for another: ArduPilot remembers which hardware had each node number.

    CheckThe message is “Duplicate Node …” and it began after you changed a GPS, compass or ESC.

    FixSet bit 0 (ClearDNADatabase) of CAN_D1_UC_OPTION and reboot: the list is built again, and the bit clears itself.

  2. A device on the bus is unhealthy: no power, still starting, or really faulty.

    CheckThe number in “Node N unhealthy” is the device's node number; the ground station's DroneCAN screen lists the nodes by number and name.

    FixCheck its power and connector. If it stays unhealthy, update its firmware or replace it.

  3. Both CAN ports are set to the same rangefinder protocol, or to PiccoloCAN without Piccolo hardware.

    FixGive each CAN driver the protocol of what is really on it: CAN_D1_PROTOCOL 1 is DroneCAN, 0 is none. Reboot.

Parameters to look at

ParameterWhat it is
CAN_P1_DRIVERIndex of virtual driver to be used with physical CAN interface
CAN_D1_PROTOCOLEnable use of specific protocol over virtual driver
CAN_D1_UC_OPTIONDroneCAN options
CAN_P2_DRIVERIndex of virtual driver to be used with physical CAN interface
CAN_D2_PROTOCOLEnable use of specific protocol over virtual driver
The code that sends it

PreArm: DroneCAN: …

libraries/AP_Arming/AP_Arming.cpp AP_Arming::can_checks() · Open in ArduPilot Copter-4.7.1

PreArm: PiccoloCAN not enabled

libraries/AP_Arming/AP_Arming.cpp AP_Arming::can_checks() · Open in ArduPilot Copter-4.7.1

PreArm: PiccoloCAN: …

libraries/AP_Arming/AP_Arming.cpp AP_Arming::can_checks() · Open in ArduPilot Copter-4.7.1

PreArm: Same rfnd on different CAN ports

libraries/AP_Arming/AP_Arming.cpp AP_Arming::can_checks() · Open in ArduPilot Copter-4.7.1

Written here for Copter 4.6. In the tool you choose your vehicle and version, see your own parameter values beside the ones named here, and drop a flight log to have every message in it explained.

Open it in the Message & Error Explainer