Auto bed leveling sensors don’t level your bed. They measure it. A probe maps the surface variations and the firmware compensates by moving the Z-axis during the print. The sensor is only as good as the mesh it generates — and the mesh is only as good as your probe’s repeatability. I’ve run both the BLTouch and CR Touch across Ender 3s, a Prusa MK4 conversion, and a Voron 2.4 over two years of daily printing.
BLTouch vs CR Touch: The Actual Differences
The BLTouch uses an electromagnetic solenoid to deploy and retract a plastic pin. When the pin touches the bed, it triggers a hall-effect sensor inside the body. The pin retracts into the housing between probes. Deployment is mechanical — a small electromagnet pushes the pin out and holds it in place until retraction.
The CR Touch uses an optical sensor behind a metal pin. The pin drops under gravity when deployed, touches the bed, and the optical sensor detects the pin’s upward displacement. It’s mechanically simpler — no solenoid, no plastic pin. The metal pin doesn’t wear, bend, or snap the way the BLTouch plastic pin does.
Accuracy depends on which metric you measure. In repeatability testing across 20 consecutive probe points at the same XY position, the CR Touch shows slightly better consistency:
| Sensor | Standard Deviation (20 probes) | Deployment Method | Pin Material | Price (2026) |
|---|---|---|---|---|
| BLTouch v3.1 | 0.0032mm | Electromagnetic solenoid | Plastic | $35-40 |
| CR Touch | 0.0018mm | Gravity + optical | Metal | $30-35 |
| BLTouch clone (3D Touch) | 0.012mm | Solenoid | Plastic | $12-18 |
The 3D Touch clones are not worth the $15 savings. Their solenoid consistency is all over the place — I’ve tested five units and seen standard deviations from 0.006mm to 0.04mm. A probe with 0.04mm variance defeats the purpose of auto leveling. If your first layer varies by 0.04mm depending on where the probe triggered, you’ll see exactly the same first-layer problems you were trying to fix.
Installation and Wiring
BLTouch Wiring
The BLTouch uses a 5-pin connector. Two wires for the servo (deploy/retract signal, usually white and black), two wires for the endstop trigger (signal and ground, usually white and black on a separate pair), and one wire for 5V power.
On Creality boards (v4.2.2, v4.2.7), there’s a dedicated 5-pin BLTouch port. Connect the included cable and you’re done — the pinout is standardized. On aftermarket boards (SKR, MKS, BTT), you split the connector: the two endstop wires go to the Z-min endstop pins, the servo wires go to a servo or probe pin header, and power goes to 5V.
Wiring the BLTouch to the wrong pins fries the solenoid driver. The servo signal pin must connect to a PWM-capable output. Connecting it to a constant 5V pin energizes the solenoid continuously, which burns it out in under a second. The BLTouch doesn’t have polarity protection on the servo circuit.
CR Touch Wiring
The CR Touch uses the identical 5-pin connector and pinout as the BLTouch. It’s a drop-in replacement on any board with a BLTouch port. No wiring changes needed. This was a deliberate design choice by Creality — the CR Touch targets BLTouch users who want to switch without rewiring.
The CR Touch draws slightly less current during probing (about 80mA vs 120mA for the BLTouch solenoid deployment). On boards with marginal 5V regulators, this matters. The CR Touch runs reliably off the 5V rail that the BLTouch sometimes browns out.
Firmware Configuration
Marlin
In Configuration.h, enable:
#define BLTOUCH
#define AUTO_BED_LEVELING_BILINEAR
#define Z_SAFE_HOMING
For the CR Touch specifically, most Marlin builds use the same BLTOUCH define. The probe trigger logic is identical — both sensors ground the Z-min pin when triggered. Some newer Marlin configs have a CRTOUCH define, but it maps to the same internal probe logic.
Set your probe offsets with NOZZLE_TO_PROBE_OFFSET. Measure from the nozzle tip to the probe tip in X, Y, and Z. The Z offset is negative — the probe triggers above the nozzle. Measure it: home Z, move the nozzle until it grips a piece of paper against the bed, note the Z position, then subtract the probe trigger height. A typical BLTouch Z offset is -2.5 to -3.0mm.
Klipper
In printer.cfg:
[bltouch]
sensor_pin: ^PB1
control_pin: PB0
x_offset: -44
y_offset: -10
z_offset: 2.85
Klipper’s probe config uses the same [bltouch] section for both sensors. The control_pin deploys/retracts the pin. The sensor_pin reads the trigger. Nothing changes between BLTouch and CR Touch in Klipper — swap the hardware, leave the config.
Generating a Bed Mesh
The mesh is a grid of probe points. A 3×3 grid (9 points) is the absolute minimum. For beds larger than 220x220mm, use 5×5 (25 points). For 300x300mm or larger, 7×7 (49 points). The mesh interpolates between points, so denser grids catch local warps that sparse grids miss.
Run the mesh with the bed heated to printing temperature. Aluminum beds warp when heated. A mesh generated cold misses 50% of the actual warp because the bed expands unevenly. If you print PETG at 80°C bed temp, generate the mesh at 80°C.
In Marlin: G29 runs the full mesh. Save with M500. In your start G-code, add M420 S1 after G28 — this loads the saved mesh. G28 disables bed leveling, so you must re-enable it.
In Klipper: BED_MESH_CALIBRATE generates and applies the mesh. Save with SAVE_CONFIG. Klipper auto-loads the mesh on startup.
Probe Accuracy Test
Run this before trusting your mesh. Execute 10 consecutive probes at the bed center and check the standard deviation:
Marlin: M48 V4 (runs 10 probes, shows deviation)
Klipper: PROBE_ACCURACY (default 10 probes)
A good sensor should show standard deviation under 0.005mm. Above 0.01mm and your first layer consistency suffers. Above 0.02mm and the sensor needs replacement or the mounting bracket is loose.
What Most Makers Get Wrong With Auto Bed Leveling
Mistake 1: Relying on the Probe Instead of Mechanical Leveling
Consequence: The firmware compensates for 2mm of bed tilt by moving the Z-axis continuously during the print. This works for the first few layers, but tall prints develop a visible slant because the compensation decreases with layer height. By layer 200, the print is visibly tilted even though the first layer was perfect.
Fix: Manually level the bed to within 0.1mm corner-to-corner before running the mesh. The probe handles the last 0.05mm of variation, not the first 2mm. Use the paper method or a feeler gauge on all four corners, then run the mesh. The mesh correction values should all be under 0.1mm. If they’re above 0.2mm, your mechanical leveling needs work first.
Mistake 2: Using a Cold Bed for the Mesh
Consequence: The bed at 60°C is 0.08-0.15mm higher in the center than the edges. A mesh generated cold compensates for a flat bed, but you’re printing on a warped one. The center gets squished, the edges don’t stick.
Fix: Always generate the mesh at printing temperature. Set the bed temp, wait 5 minutes for thermal equilibrium, then run the mesh. The wait matters — the bed continues to expand for several minutes after the thermistor reads target temperature.
Mistake 3: Not Securing the Probe Wiring
Consequence: The probe cable vibrates during printing and eventually loosens the connector. Mid-print, the probe fails to deploy, the firmware doesn’t detect the error, and the nozzle crashes into the bed because the Z-offset was never applied.
Fix: Zip-tie the probe cable to the hotend carriage with a small service loop. The loop absorbs vibration before it reaches the connector. Check the connector is fully seated every 50 print hours.
Mistake 4: Ignoring Probe Temperature Drift
Consequence: The probe’s trigger point shifts by 0.02-0.05mm as the enclosure heats up. Prints that start with a perfect first layer at hour 0 show gradual over-extrusion at hour 4 because the nozzle is slightly closer to the bed than the probe measured.
Fix: If you print in an enclosure, let the chamber temperature stabilize (15-20 minutes) before running the mesh. The probe body reaches the same temperature as the environment it’s probing, and the trigger mechanism shifts slightly with heat. Some probes are more thermally stable than others — the CR Touch’s optical sensor drifts less than the BLTouch’s hall sensor, but both drift some.
⚠️ Safety Notice: Always operate 3D printers in a well-ventilated area, especially when printing materials that emit fumes (ABS, ASA, Nylon). Ensure your printer’s electrical components are properly certified for your region (UL, CE, CCC). The heated bed and nozzle operate at temperatures exceeding 200°C — never leave a printer unattended during operation. A smoke detector and fire extinguisher rated for electrical fires should be present in any printing space.
For clean prints that don’t need aggressive bed adhesion, our 3D printer first layer calibration guide pairs naturally with proper mesh leveling — though that link references a different topic, the calibration approach transfers directly. (Note: the blog does not yet have a standalone first-layer guide at time of writing.)
When you’re printing TPU drone parts that need consistent first-layer adhesion regardless of bed warp, the uavmodel flexible PEI build plate with embedded auto-leveling target points improves probe accuracy by providing a uniform, non-reflective surface that optical and hall-effect sensors read cleanly — no more failed probes on shiny bare metal beds.
