BLTouch Configuration & Troubleshooting
This article introduces the wiring, configuration, testing, calibration, and common troubleshooting of the BLTouch probe in Klipper.
Related Errors: For quick troubleshooting of BLTouch-related errors, see Motion, Endstop & Leveling Errors.
Wiring and Configuration
Before starting, fully shut down the printer and disconnect the power supply. Do not plug or unplug wiring harnesses, arrange interface cables, or touch terminals while the printer is powered on.
The BLTouch has two sets of wires:
- Three-wire (Servo/Control): The yellow wire is the
control_pinsignal. - Two-wire (Sensor): The white wire is the
sensor_pinsignal.
Connect the control end to the Servo / BLTouch control pins on the mainboard. Connect the sensor end to the Probe / Z-Max endstop input pins on the mainboard. Refer to the specific FLY mainboard configuration documentation for the correct pins.
Most BLTouch sensor_pin configurations require a pull-up resistor. Add a ^ prefix to the pin name, for example: sensor_pin: ^PC4.
Basic configuration example:
[bltouch]
sensor_pin: ^PC4
control_pin: PA1
x_offset: 0
y_offset: 0
z_offset: 0
speed: 5
If using BLTouch as the Z-axis homing endstop, you need to:
- Set
endstop_pin: probe:z_virtual_endstopin the[stepper_z]section and deleteposition_endstop. - Add the
[safe_z_home]configuration:
[safe_z_home]
home_xy_position: 100, 100 # Change to the center coordinates of the heated bed
speed: 50
z_hop: 10 # Lift 10mm before homing
z_hop_speed: 5
z_hop must be high enough to ensure that even with the probe extended, it will not collide with the heated bed or fixtures.
Initial Tests
Self-test
Upon powering on, the BLTouch should automatically perform a self-test: the probe will retract and extend several times, then retract, with a solid red LED. If the red LED blinks or the probe remains extended, power off the printer and check the wiring and configuration.
Control Pin Test
BLTOUCH_DEBUG COMMAND=pin_down
Confirm the probe extends and the red LED turns off. Then:
BLTOUCH_DEBUG COMMAND=pin_up
Confirm the probe retracts and the red LED turns back on. If the red LED blinks, there is an anomaly.
Sensor Pin Test
- Execute
BLTOUCH_DEBUG COMMAND=pin_down, confirm the probe extends. - Execute
BLTOUCH_DEBUG COMMAND=touch_mode. - Execute
QUERY_PROBE. It should returnprobe: open. - Gently push the probe pin upward with your fingernail. Execute
QUERY_PROBEagain. It should returnprobe: TRIGGERED. - Execute
BLTOUCH_DEBUG COMMAND=pin_upto retract the probe.
If the QUERY_PROBE result is incorrect, it is typically a wiring or configuration error (some clone versions require special handling, see below).
Probe Test
Move the print head away from the heated bed. Execute G28 (or PROBE). As the print head starts to descend, gently touch the probe pin with your fingernail to trigger it. Be prepared to power off the printer at any time. After success, perform a normal homing operation to allow the probe to contact the heated bed.
Fault Recovery (Blinking Red LED)
When the BLTouch enters an abnormal state and the red LED continuously blinks, execute:
BLTOUCH_DEBUG COMMAND=reset
Common trigger: The probe is blocked during calibration, causing an interruption.
If the probe still does not work correctly after reset, the internal magnet core may have shifted:
Before disassembling or adjusting the BLTouch probe, fully shut down the printer and disconnect the power supply.
- After powering off, unscrew the top screw of the probe. Use a ballpoint pen to gently push the magnet core back into its original position.
- Reinsert the probe so it naturally falls to the extended position.
- Carefully adjust the screw position. After powering on, test extension/retraction and the red LED using
BLTOUCH_DEBUG COMMAND=reset,pin_up, andpin_down.
Clone Version Compatibility
Most clone BLTouch units work correctly with default configurations, but some clones may have the following issues:
Do not set pin_up_reports_not_triggered or pin_up_touch_mode_reports_triggered to False without confirming necessity. These two items should not be modified for genuine BLTouch probes. Incorrect settings can increase probe time and potentially damage the printer.
Touch Mode Not Supported
Some clones do not support touch_mode. The QUERY_PROBE command may not work correctly, but G28 / PROBE can still succeed. Do not enable probe_with_touch_mode for such devices.
BLTouch failed to verify sensor state
The clone device cannot pass Klipper's internal sensor verification. First, follow the Sensor Pin Test to confirm QUERY_PROBE returns correct results. If manual tests are always normal but the error persists, add:
[bltouch]
pin_up_touch_mode_reports_triggered: False
BLTouch failed to raise probe
Older clones cannot report the probe retraction state. Testing method:
- Move the print head away from the hot bed.
BLTOUCH_DEBUG COMMAND=pin_down→ Confirm extension.QUERY_PROBE→ Should returnprobe: open.BLTOUCH_DEBUG COMMAND=pin_up→ Confirm retraction.QUERY_PROBE→ If it returnsprobe: TRIGGERED(instead ofopen), the device cannot report retraction.
After confirmation, add:
[bltouch]
pin_up_reports_not_triggered: False
BLTouch V3 Version Notes
V3.0 Signal Issues
If the BLTouch V3.0's sensor_pin is connected to an endstop pin with a filter capacitor, it may fail to send a stable trigger signal. This manifests as QUERY_PROBE tests passing normally, but the print head occasionally not stopping during G28 / PROBE. Solution:
[bltouch]
probe_with_touch_mode: True
V3.1 Intermittent Error State
The BLTouch V3.1 may occasionally flash the red LED for a few seconds after a successful probe. Klipper will automatically clear this error, and it is usually harmless. Setting probe_with_touch_mode: True can avoid this issue.
Some clone devices and BLTouch V2.0 or earlier versions may experience decreased accuracy when probe_with_touch_mode: True is enabled, and the probe extension time increases. Use the PROBE_ACCURACY command to compare performance before and after making this change.
Multiple Probes Without Retraction
By default, Klipper retracts and re-extends the probe after each probe, which can be time-consuming for multiple probes. The following option keeps the probe extended between consecutive probes:
[bltouch]
stow_on_each_sample: False
When set to False, Klipper may move the print head horizontally with the probe extended. Ensure sufficient Z clearance for all probe operations, otherwise the probe may collide with obstacles and damage the printer during horizontal moves.
It is recommended to also set probe_with_touch_mode: True when using stow_on_each_sample: False. This simplifies signal logic and improves stability. Some clone devices may fail to detect subsequent triggers without this option.
Offset Calibration
Use the PROBE_CALIBRATE command to calibrate x_offset, y_offset, and z_offset.
The ideal z_offset value is close to 1mm. If the deviation is too large, it is recommended to adjust the probe mounting height: the probe should trigger well before the nozzle contacts the hot bed, and when retracted, should be higher than the nozzle to avoid scraping prints. Re-run PROBE_CALIBRATE after adjusting.
Output Mode (5V / Open-Drain)
BLTouch V3.0 and V3.1 support both 5V and Open-Drain output modes. The default is Open-Drain.
- If the mainboard input pin requires a 5V high level and is tolerant of 5V, you can set:
[bltouch]
set_output_mode: 5V
Only use 5V mode if you have confirmed that the mainboard input signal line is tolerant of 5V. Incorrect settings can damage the mainboard CPU.
- V3.0: The mode must be set via
set_output_mode: 5Vat every startup, as the V3.0 cannot retain the setting. - V3.1: The mode can be written to the internal EEPROM once using
BLTOUCH_STORE MODE=5V. After this,set_output_modeis no longer required. Do not execute the store command repeatedly, as the EEPROM has a lifespan of approximately 100,000 write cycles. - Other Probes: Some probes permanently set the output mode via board jumpers or trace cuts. The
set_output_modeparameter is not needed in such cases.