Skip to main content

TMC Error Troubleshooting

Technical Background

TMC (Trinamic) drivers report status and error information through dedicated registers. Understanding these registers helps quickly diagnose issues:

  • IFCNT register: Communication frame counter, used to verify normal communication between the main controller and the driver.
  • GSTAT register: Global status register, containing global status information such as reset and driver errors.
  • DRV_STATUS register: Driver status register, providing detailed driver operating status including temperature warnings, short circuits, open circuits, and other fault information.

When Klipper reports a TMC error, it usually displays specific register values and fault flags. A TMC driver error indicates the driver chip has detected a problem and self-protected by disabling itself. Klipper enters a shutdown state upon detecting a driver disable.

Power Off Operation

Before checking jumper caps, driver modules, motor cables, SPI/UART wiring order, or connection terminals, completely turn off the printer and disconnect the power supply. Do not hot-plug driver modules or stepper motor cables. Use a multimeter in resistance mode only when the power is off.

Unable to Communicate with Driver (IFCNT Communication Failure)

Error Message: Unable to read tmc uart 'stepper_x' register IFCNT or Unable to read tmc spi 'stepper_x' register IFCNT.

Loading...

Cause: Communication failure between the TMC driver (UART/SPI mode) and the main controller, preventing reading of the IFCNT register value. Common causes include uninstalled UART jumper caps, abnormal driver board power supply, or incorrect UART/SPI pin configurations.

Solutions:

  1. Power off and check if the UART jumper cap for the corresponding driver is correctly installed.
  2. Ensure the uart_pin (or spi_bus / spi_software_*_pin) in the printer.cfg TMC configuration matches the actual wiring.
  3. First, check the power supply status preliminarily via the power indicator light and driver module installation orientation. If the indicator light is normal, the module orientation is correct, but the issue persists, try replacing with a known good cable harness or cross-testing (move the driver to another port). For electrical testing of exposed 24V terminals, please contact after-sales support or a professional.
  4. If the error occurs immediately after the first Klipper flash, power off the entire machine for a few seconds (unplug both USB and main power) and then power on again to clear residual driver states.
  5. Power off and try replacing the driver board or switching the driver port for testing.
  6. If using a non-FLY brand driver, confirm its UART pin definition (the FLY driver UART pin is typically the fourth pin from the top on the left side).
Loading...

For special cases where the purchased driver's UART pin is on the fifth pin, use the jumper method below:

Loading...
  1. Check if uart_address matches the driver board hardware jumper settings.
  2. Check if the data cable is intact, without breaks or poor contact.

Driver Overheating (OvertempError / OvertempWarning)

Error Message: TMC 'stepper_x' reports error: DRV_STATUS: ... ot=1(OvertempError!) or otpw=1(OvertempWarning!).

Loading...

Cause: TMC driver chip temperature exceeds the safety threshold, triggering protection. Note: This is driver overheating, not motor overheating!

  • OvertempWarning (otpw): Temperature exceeds approximately 120°C warning threshold. The driver can still operate, but investigation is recommended.
  • OvertempError (ot): Temperature exceeds approximately 150°C shutdown threshold. The driver is automatically disabled.

Solutions:

  1. Reduce the motor run current (run_current), initially by 20-30%.
  2. If a hold current (hold_current) is set, reduce it appropriately or disable it completely.
  3. Check if the driver heatsink is properly attached and if thermal paste is sufficient.
  4. Add a cooling fan for the driver and ensure adequate air circulation.
  5. Confirm the driver board sense resistor value is correctly configured.
  6. Lower the stealthchop_threshold or switch to spreadCycle mode.
  7. Check if the driver installation environment is enclosed, causing heat buildup, and avoid prolonged operation in high-temperature environments.

Short Circuit Fault (ShortToGND / ShortToSupply)

Error Message: TMC 'stepper_x' reports error: DRV_STATUS: ... s2vsa=1(ShortToSupply_A!) or s2ga=1(ShortToGND_A!).

Cause: The driver detects extremely high current. This could be due to loose or shorted motor cables, damaged motor winding insulation, or overcurrent due to inaccurate load prediction in stealthChop mode.

Solutions:

  1. Power off before proceeding. Check if the corresponding motor cable is loose or damaged. Use a multimeter in resistance mode to measure the motor coil resistance (normal range is approximately 1.5-3Ω).
  2. Power off and check if the motor connector is secure.
  3. If handling motor case grounding is necessary, use the grounding point provided by the manufacturer or contact after-sales support. Do not modify the power ground wire or exposed terminals yourself.
  4. Try disabling stealthChop for testing: SET_TMC_FIELD STEPPER=stepper_x FIELD=en_spreadCycle VALUE=1
  5. If the error disappears after switching, it indicates a stealthChop prediction issue; otherwise, a real hardware short circuit is likely.

Open Load Fault (OpenLoad)

Error Message: TMC 'stepper_x' reports error: DRV_STATUS: ... ola=1(OpenLoad_A!) or olb=1(OpenLoad_B!).

Cause: The driver detects that one phase of the motor winding does not form an effective load, usually indicating a disconnected motor cable, loose connector, incorrect coil wiring, or a false positive during low current/stealthChop operation.

Solutions:

  1. Power off, then re-seat the motor cable. Ensure the terminal crimps are secure.
  2. Power off before proceeding. Use a multimeter to measure the resistance of the A and B coil sets. The values should be close to each other and should not indicate an open circuit.
  3. Power off and check the motor wiring order. Confirm that the two wires of phase A are in one set, and the two wires of phase B are in the other set.
  4. Temporarily disable stealthChop: Set stealthchop_threshold: 0 in the configuration and test.
  5. Try increasing run_current slightly for testing. If the error only occurs at very low currents, it might be a false positive.
  6. Power off and replace the motor cable or motor for cross-testing to isolate whether the issue is with the cable, motor, or driver port.

Combined Short Circuit and Open Load Fault (Phase A Short, Phase B Open)

Error Message: TMC 'extruder' reports error: DRV_STATUS: ... s2vsa=1(ShortToSupply_A!) csactual=31 ola=1(OpenLoad_A!) olb=1(OpenLoad_B!).

Cause: TMC driver fault diagnosis bits indicate hardware issues: s2vsa=1 indicates phase A short to supply, ola=1 and olb=1 indicate open loads on phases A and B, and csactual=31 suggests a potentially high current setting. These faults often appear together, indicating a serious hardware problem with the motor or driver.

Solutions:

  1. Power off before proceeding. Use a multimeter to measure the resistance of the stepper motor's A and B coil sets. They should be consistent (typically 1-2Ω and both sets should have similar values).
  2. Power off and carefully inspect the stepper motor cable and connectors for looseness, short circuits, or poor contact.
  3. Confirm that the TMC driver's current setting is appropriate; excessively high current can cause these issues.
  4. Try disabling stealthChop mode for testing: Set stealthchop_threshold: 0 in the configuration.

Combined Short Circuit and Open Load Fault (Phase B Short, Phase A Open)

Error Message: TMC 'extruder' reports error: DRV_STATUS: ... s2vsb=1(ShortToSupply_B!) ola=1(OpenLoad_A!) cs_actual=25.

Loading...

Cause: TMC driver fault diagnosis bits indicate: s2vsb=1 indicates phase B short to supply, ola=1 indicates phase A open load, cs_actual=25 is the current setting. This is usually caused by: incorrect motor wiring (phases A and B reversed or shorted), a faulty motor (open winding), or a driver board hardware issue.

Solutions:

  1. Power off before proceeding. Use a multimeter to measure the resistance of the stepper motor's A and B coil sets. They should be consistent (similar values).
  2. Power off and confirm the motor wiring order is correct, typically one group on the left (Phase A) and one group on the right (Phase B).
  3. Power off and check that all wiring terminals are secure, without looseness or poor contact.
  4. If possible, power off and connect the motor to another known-good driver port for testing.

Driver Reset (Reset)

Error Message: TMC 'stepper_x' reports error: GSTAT: 00000001 reset=1(Reset).

Loading...

Cause: Unstable power supply or external interference causing the driver to automatically reset. Common causes include power supply voltage fluctuations, poor wiring contact, or electromagnetic interference.

Solutions:

  1. Completely power off and check if the 24V power cable, driver module, and mainboard socket are loose, discolored, or burnt.
  2. Replace with a known-good power supply, driver module, or cable harness for cross-testing.
  3. Check the driver's heatsink and fan for proper operation.
  4. Check if the motor cables run parallel to heaters or the heatbed cable for long distances. If necessary, power off and re-route the cables.
  5. Power off before proceeding. Check the motor cables for breaks, internal broken strands, or intermittent connection issues caused by poor terminal contact. Cables in cable carriers (drag chains) can fatigue and break due to long-term movement; focus on the bends of the drag chain and the terminal crimps.
  6. It is not recommended for customers to modify the driver's power input, add electronic components, or alter the grounding. Such operations should be handled by professionals or after-sales support.

Undervoltage Protection (Undervoltage)

Error Message: TMC 'stepper_x' reports error: DRV_STATUS: ... uv_cp=1(Undervoltage!).

Cause: The driver detects a low supply voltage event. Usually caused by power supply failure, loose wiring, or insufficient power capacity.

Solutions:

  1. Completely power off and check the power cable, mainboard power connector, and terminals for looseness, discoloration, or burning.
  2. Ensure the power supply specifications meet the total power requirements of the drivers and heaters.
  3. Perform a substitution test with a known-good power supply or cable harness.
  4. For electrical testing of exposed 24V terminals, please contact after-sales support or a professional. Do not handle it yourself.

SPI Communication Error (DRV_STATUS: ffffffff)

Error Message: Unable to write tmc spi 'stepper_x' register ..., TMC reports error: DRV_STATUS: ffffffff ..., or READRSP@RDSEL2: 00000000 ....

Cause: Inability to communicate with the TMC driver in SPI mode (tmc2130/tmc5160/tmc2660). Usually caused by incorrect SPI wiring, unconfigured devices on the SPI bus, or a TMC driver self-reset/fault.

Solutions:

  1. Power off and check if the SPI wiring order (MOSI, MISO, SCK, CS) is correct.
  2. If the SPI bus is shared among multiple devices, ensure each device is fully configured in Klipper.
  3. Power off the mainboard and test with only one driver connected to isolate potential interference on the shared bus.
  4. Confirm the driver power supply is normal. If necessary, power off for a few seconds and then power on again.
  5. If the error is accompanied by reset=1, uv_cp=1, or random ffffffff values, prioritize checking the power supply and driver contact.

Isolated Driver Test: To isolate and verify if a driver is normal, please refer to the SPI driver standalone test method in Peripheral and Driver Testing.

TMC SPI Chain Configuration Error

Error Message: TMC SPI chain must have same length, TMC SPI chain can not have duplicate position.

Cause: When using TMC drivers in an SPI daisy-chain link, the chain_position, chain_length, or chip select configurations for multiple drivers are inconsistent, preventing Klipper from determining the position of each driver in the SPI chain.

Solutions:

  1. If the mainboard is not designed for an SPI daisy-chain link, do not arbitrarily add chain_position and chain_length entries.
  2. Refer to the configuration template provided by the mainboard or driver board manufacturer. Ensure the chain_length is identical for every TMC driver.
  3. Confirm that the chain_position for each driver is unique and not duplicated.
  4. If using a standard SPI bus with multiple CS (chip select) pins, configure the cs_pin for each driver individually, rather than using the SPI chain method.
  5. Save the configuration, execute RESTART, and then use DUMP_TMC STEPPER=<stepper> to confirm communication with each driver one by one.
Loading...