Peripheral and Driver Testing
This document is used to verify whether peripheral modules such as stepper drivers and CAN tool boards are working correctly. The testing approach is consistent with the basic I/O test, using a minimal Klipper configuration to isolate individual hardware.
If you need to test MCU connection, temperature sensors, fan output, or input ports, please refer to Hardware Testing Method first.
Driver Testing
Test Purpose
Use the simplest Klipper configuration to verify whether a single TMC driver (in UART or SPI mode) can communicate properly with the mainboard and confirm that the motor can be controlled.
Prerequisites
Please completely shut down the printer and disconnect the power supply before proceeding with the following operations. Do not hot-plug driver modules or stepper motor cables.
- The printer is completely powered off.
- The TMC driver to be tested is correctly inserted into the corresponding slot on the mainboard, with the correct orientation confirmed.
- For UART mode drivers (e.g., TMC2209), confirm that the UART jumper cap for the corresponding driver port is installed.
- Connect only one stepper motor to the driver port under test. Leave other driver ports empty for now.
- Prepare a minimal
printer.cfgfile containing only the driver to be tested. It is recommended to back up the original complete configuration file first.
Single Driver Minimal Configuration
Use the following minimal configuration to replace printer.cfg, retaining only the [printer], [mcu], the [manual_stepper Drive0] for the driver under test, and the corresponding [tmcXXXX manual_stepper Drive0] sections. The [manual_stepper] still requires a minimal [printer] section (kinematics: none), which is simpler than motion axis configurations and suitable for pure hardware verification.
- UART Mode (TMC2209 / TMC2240 etc.)
- SPI Mode (TMC5160 / TMC2130 etc.)
[printer]
kinematics: none
max_velocity: 200.00
max_accel: 40000.00
[mcu]
serial: /dev/serial/by-id/usb-Klipper_xxxxxxxxxxx
[manual_stepper Drive0]
# Modify the following three items according to the actual mainboard pins
step_pin: PE2
dir_pin: PC5
enable_pin: !PF11
# The following parameters do not need modification
microsteps: 16
rotation_distance: 40
velocity: 500
accel: 10000
position_min: 0
position_max: 1000
[tmc2209 manual_stepper Drive0]
# Modify uart_pin according to the actual mainboard pins
# Modify sense_resistor according to the driver manufacturer's documentation
uart_pin: PC4
interpolate: False
run_current: 0.8
sense_resistor: <driver_sense_resistor>
stealthchop_threshold: 0
[printer]
kinematics: none
max_velocity: 200.00
max_accel: 40000.00
[mcu]
serial: /dev/serial/by-id/usb-Klipper_xxxxxxxxxxx
[manual_stepper Drive0]
# Modify the following three items according to the actual mainboard pins
step_pin: PE2
dir_pin: PC5
enable_pin: !PF11
# The following parameters do not need modification
microsteps: 16
rotation_distance: 40
velocity: 500
accel: 10000
position_min: 0
position_max: 1000
[tmc5160 manual_stepper Drive0]
# Modify cs_pin and spi_bus according to the actual mainboard pins
# Modify sense_resistor according to the driver manufacturer's documentation
cs_pin: PC4
spi_bus: spi1a
run_current: 0.8
sense_resistor: <driver_sense_resistor>
stealthchop_threshold: 0
serial: Replace with the actual serial port ID of the mainboard (can be checked vials /dev/serial/by-id/).step_pin/dir_pin/enable_pin: Replace with the mainboard pins corresponding to the driver port under test.uart_pin(UART mode) /cs_pin+spi_bus(SPI mode): Replace with the actual pins and SPI bus number.sense_resistor: Must be filled in according to the parameters provided by the driver manufacturer. Do not guess based solely on the chip model. Different TMC5160 driver boards may have values like0.075,0.033,0.022, or others; sampling parameters for drivers like TMC2240 may also differ. If the manufacturer's documentation does not specify, please consult the manufacturer or use their official configuration example first.- The configuration does not contain any heaters or fans; it is only for driver communication verification.
Multi-Driver Testing Method
If you need to verify multiple driver ports on a mainboard one by one, you can name each driver port independently, such as Drive0, Drive1, Drive2, referencing the test configuration naming convention:
[manual_stepper Drive1]
step_pin: PE3
dir_pin: PF13
enable_pin: !PF14
microsteps: 16
rotation_distance: 40
velocity: 500
accel: 10000
position_min: 0
position_max: 1000
[tmc2209 manual_stepper Drive1]
uart_pin: PF12
interpolate: False
run_current: 0.8
sense_resistor: <driver_sense_resistor>
stealthchop_threshold: 0
During testing, only connect the motor to the driver port currently under test. After confirming one port, power off and switch to the next port.
Test Steps
-
Save the above minimal configuration as
printer.cfg. -
Confirm the motor and driver are correctly plugged in, then power on and start Klipper.
-
In the Mainsail / Fluidd console, enter the following commands to enable the motor and set the current position to
0:MANUAL_STEPPER STEPPER=Drive0 ENABLE=1MANUAL_STEPPER STEPPER=Drive0 SET_POSITION=0- If the motor has holding torque after being enabled, it indicates
enable_pinis basically effective. - If the motor can still be turned freely, power off and check the
enable_pin, driver orientation, jumper caps, and power supply.
- If the motor has holding torque after being enabled, it indicates
-
Perform manual movement test:
MANUAL_STEPPER STEPPER=Drive0 MOVE=100 SPEED=100MANUAL_STEPPER STEPPER=Drive0 MOVE=0 SPEED=100MOVE=is the target position, not a relative movement. ExecutingMOVE=100followed byMOVE=0will make the motor reverse back to the start point.- If the motor is still connected to the machine's motion mechanism, it is recommended to first modify to
MOVE=10 SPEED=5for the initial test to confirm direction and travel distance safety before increasing speed. - If the motor rotates smoothly without stuttering, it indicates the driver, motor, and step/direction pins are basically normal.
- If the motor does not respond, only vibrates, or has abnormal direction, power off and check pin configuration, motor wiring sequence, driver direction, and jumper caps.
-
Verify TMC communication status:
DUMP_TMC STEPPER=Drive0If register information is returned successfully, the UART/SPI communication is basically normal. If it prompts that the register cannot be read, please refer to TMC Error Troubleshooting.
-
After testing, disable the motor enable:
MANUAL_STEPPER STEPPER=Drive0 ENABLE=0
Expected Results
| Test Item | Normal Result | Abnormal Performance |
|---|---|---|
| Manual Movement | Motor moves forward and backward as commanded | No movement, vibration, stuttering, or abnormal direction |
| TMC Communication | DUMP_TMC returns register information | Unable to read UART/SPI registers |
| Holding Torque | Motor shaft cannot be turned freely after ENABLE=1 | Shaft can be easily turned (not enabled) |
If all three items above are normal, the driver-mainboard communication and motor wiring are confirmed to be without issues. You can restore the original printer.cfg and continue troubleshooting other hardware.
CAN Tool Board Minimal Test
Test Purpose
Confirm that the CAN tool board is recognized by Klipper and verify the temperature sensor, fan, accelerometer, or input ports on the tool board.
Minimal Configuration
[mcu tool]
canbus_uuid: xxxxxxxxxxxx
[temperature_sensor ToolBoard]
sensor_type: temperature_mcu
sensor_mcu: tool
[output_pin tool_FAN0]
pin: tool:gpio13
pwm: True
cycle_time: 0.010
value: 0
shutdown_value: 0
Test Steps
- Follow the CAN Network Configuration and ID Search steps to search for and fill in the
canbus_uuid. - After restarting Klipper, check if the
ToolBoardtemperature is displayed correctly. - Use
SET_PIN PIN=tool_FAN0 VALUE=1to test the low-voltage fan output on the tool board. After testing, executeSET_PIN PIN=tool_FAN0 VALUE=0. - If you need to test the accelerometer or input ports on the tool board, add the corresponding configuration according to the relevant section above.
Operations on CANH/CANL wiring sequence, termination resistors, jumper caps, and cable management must be done with the power off. Do not plug/unplug CAN cables or adjust termination resistors while the system is powered on.
Common Anomalies and Next Steps
| Anomaly | Common Keywords in klippy.log | Priority Check | Next Steps |
|---|---|---|---|
| Klipper cannot connect to MCU | Unable to connect, Connect error, Serial connection closed | serial / canbus_uuid, firmware, USB/CAN connection | Common Error Overview |
| Abnormal temperature display | ADC out of range, temperature, not heating | sensor_type, sensor_pin, thermistor connector | Temperature, Heating, and Extrusion Errors |
| Heater or heated bed shutdown | Verify heater, not heating at expected rate | Thermistor contact, PID, heater power, SSR | Temperature, Heating, and Extrusion Errors |
| Fan not spinning | No error (output ports do not generate logs) | pin, fan voltage specification, PWM compatibility | Replace fan or cross-test with another port |
| Input state unchanged | No error (input ports do not generate logs) | Pull-up ^, wiring sequence, switch type | Power off and check connector and port |
| No data from accelerometer | Invalid adxl345 id, Invalid lis2dw id, timeout | cs_pin, spi_bus, wiring, module model | Accelerometer Testing and Calibration |
| Resonance test failure | No data, Insufficient axis data, Frequency range | Sensor fixation, belt tension, fan vibration | Accelerometer Testing and Calibration |
| Motor not moving | Unable to read tmc uart, Unable to write tmc spi | step_pin, dir_pin, enable_pin, TMC configuration | TMC Error Troubleshooting |
| TMC unable to read register | DRV_STATUS, read register, GSTAT | UART/SPI pins, jumper caps, driver power, driver model | TMC Error Troubleshooting |
| CAN tool board offline | bytes_invalid, Network is down, No buffer space, Timer too close | CAN wiring sequence, termination resistor, power supply, UUID | CAN Network Configuration and ID Search |
| Random stuttering/loss during printing | Stepper too far in past, Rescheduled timer, Lost communication | Host computer load, communication line interference, velocity/acceleration | System, Performance, and Service Errors |
| Configuration cannot be saved | Unable to write, Option conflict, CRC does not match | File permissions, auto-save section conflict, FIRMWARE_RESTART | Configuration Errors |
Reference Configuration Snippets
When maintaining test configurations, you can extract snippets from the corresponding mainboard/tool board templates based on the hardware type:
- Mainboard testing:
temperature_sensor,manual_stepper DriveN,tmcXXXX manual_stepper DriveN,output_pin FANx,gcode_button IOx. - Tool board testing:
temperature_sensor,adxl345/lis2dw,manual_stepper Drive0,output_pin FANx,gcode_button. - Multi-driver testing: Maintain naming like
Drive0,Drive1,Drive2. TheSTEPPER=in test commands must match the configuration section names. - Low-voltage output testing: Prioritize low-voltage loads such as fans, RGB, buzzers. Do not use heater cartridges or heated beds as general
output_pintest loads.
If a module cannot pass the above minimal tests, please restore the original configuration first, then proceed to the corresponding FAQ page for further troubleshooting based on the specific error.