The fault command is executed automatically upon failure of any other command; it can never fail. Once issued, the fault command will not report completion until explicitly canceled by sending the standby command (this behavior is sometimes referred to as latching fault). No other command will be executed as long as the current state is fault.

The fault state is parameterized with two values:

  • The culprit — the command whose execution triggered the fault (e.g., self test).

  • The error — the information on the cause of the fault (e.g., bad parameters).

High-level reduced information on the nature of the fault is provided via Cyphal node heartbeat messages and the status indication LED.


Invalid parameters error#

This error is reported when the command could not be executed due to incorrect configuration. The values of the configuration registers pertaining to the failed command should be verified. Remember that changes to some of the registers do not take effect until restart.

Hardware error#

The VSI interface includes a discrete input signal that can be asserted by the power stage hardware to indicate failure. This error is reported when said fault signal is asserted.

The possible causes may include malfunction of the following: transistor driver, phase current measurement circuitry, low-voltage power supply (e.g., step-down DC-DC converter), as well as overheating, overload, and so on (refer to the hardware documentation for more information). Any command may report the hardware error if it detects that the VSI fault signal(s) is/are asserted.

Runtime error#

This error is reported when the execution of a command completed unsuccessfully (e.g., self test completed but unsuccessfully). It is parameterized with an integer error code. The interpretation of the error code depends on which command has reported failure; more information on this is provided in the command-specific sections.

System status register#

This command is indicated via the system status register using the following schema.

{ "fault": { "c": { COMMAND_NAME: COMMAND_VALUE }, "e": { ERROR_KIND: ERROR_VALUE } } }

COMMAND_NAME, COMMAND_VALUE are replaced with the details of the culprit. The ERROR_KIND and ERROR_VALUE represent the error as follows:

Error kind



Invalid parameters








integer error code