Skip to content
Tercio S1

Faults and warnings

1 min readFirmware v2 · protocol v2

The S1 reports what it is doing as a state, what went wrong as faults, and what is getting close to wrong as warnings. All three are in every telemetry frame, and Tercio Control shows them on each motor’s page.

ValueStateMeaning
0DisabledBridge off. The shaft turns freely.
1HoldingClosed loop, at rest, holding the target.
2MovingFollowing a position move.
3VelocityTurning at a set velocity.
4Step/DirFollowing the STEP/DIR/EN inputs.
5CalibratingCalibrate is running.
6HomingHome is running.
7Auto-tuningAutoTune is running.
8FaultA hard fault switched the bridge off. ClearFaults once the cause is gone.

A fault latches: it stays set until it is cleared, even if the cause went away. There are two kinds:

  • Hard faults switch the bridge off and put the axis in the Fault state. The motor has no holding torque.
  • Soft faults stop the motion. The axis stays enabled.
BitFaultEffectWhat to do
0 0x0001Over-temperature
OVER_TEMPERATURE
Bridge offThe board is too hot. Let it cool, improve airflow or lower the run current.
1 0x0002Driver over-temperature
DRIVER_OVER_TEMP
Bridge offThe TMC2209 shut down on heat. Lower the current or add cooling.
2 0x0004Driver fault
DRIVER_FAULT
Bridge offThe driver switched its bridge off: short circuit or supply problem. Check the motor wiring.
3 0x0008Driver not responding
DRIVER_COMM
Bridge offThe TMC2209 stopped answering over UART. Check the motor supply.
4 0x0010Encoder
ENCODER
Bridge offNo valid encoder readings. Check the magnet and the encoder connection.
5 0x0020Stall
STALL
Stops motionThe shaft fell behind the command. Reduce speed or acceleration, raise the current, or check for a blockage.
6 0x0040Calibration failed
CALIBRATION_FAILED
Stops motionThe encoder did not follow the motor. Check the magnet, steps per revolution and gear ratio.
7 0x0080Homing failed
HOMING_FAILED
Stops motionNo switch or hard stop was found in time, or the axis was blocked.
8 0x0100Command timeout
COMMAND_TIMEOUT
Stops motionThe host went quiet while the axis was moving, so it stopped.
  1. Fix the cause using the table above.
  2. Send ClearFaults (Tercio Control: Clear fault on the red banner; Python: motor.clear_faults()). If the cause is still there, the S1 refuses with Faulted and the fault stays.
  3. After a hard fault, enable the motor again.

Soft faults also clear on their own when the next move starts: a new MoveTo, MoveBy or SetVelocity clears Stall and Command timeout; starting a procedure clears Calibration failed and Homing failed as well.

How fast does the host hear about it? A new fault goes out at once on the event ID (0x080 + node), without waiting for the next telemetry frame. In Python, set bus.on_fault.

Warnings are live, not latched: each one is set while its condition lasts. They never stop the motor by themselves.

BitWarningMeaning
0 0x0001Running hot
TEMPERATURE_HIGH
The board is within 10 °C of the shutdown temperature.
1 0x0002Driver near thermal limit
DRIVER_PRE_WARNING
The TMC2209 reports its pre-warning temperature.
2 0x0004Magnet too weak
MAGNET_WEAK
The encoder magnet is too far away or too weak.
3 0x0008Magnet too strong
MAGNET_STRONG
The encoder magnet is too close or too strong.
4 0x0010Supply voltage low
SUPPLY_LOW
The supply is below 8 V.
5 0x0020CAN errors
CAN_ERROR_PASSIVE
The CAN controller is error-passive: check wiring and termination.
6 0x0040Motor disconnected?
OPEN_LOAD
The driver sees no current in a coil while enabled: a motor wire may be loose.
7 0x0080Saving settings failed
STORAGE
The last SaveConfig failed.

Telemetry also carries eight flags.

BitFlagSet when
0 0x01enabledThe bridge is on.
1 0x02calibratedCalibration has been done (and saved).
2 0x04homedHome succeeded since power-up.
3 0x08settledAt the target, within the deadband.
4 0x10limitMinThe IN1 switch is active.
5 0x20limitMaxThe IN2 switch is active.
6 0x40movePendingA move is queued, waiting for Sync.
7 0x80extEnableThe step/dir EN input is active.