Probes¶
The probe is used twice: to verify the bed is clear after a sweep, and to find Z when
homing around parts (AUTO_EJECT HOME=1). How well each works depends on the probe.
| Probe | Examples | Verify the bed | Smart homing | Measure the blade |
|---|---|---|---|---|
| Nozzle contact | Voron Tap, load cells | ✅ | ✅ | ✅ AUTO_EJECT_CALIBRATE |
| Offset contact | BLTouch, CR Touch, Klicky, inductive | ✅ The nozzle is kept clear of parts (below) | ✅ Probe and nozzle spot both kept clear | By hand in the setup |
| Eddy current | BTT Eddy, Beacon, Cartographer, Eddy-NG | ⚠️ Only with a contact/touch mode | ✅ Mainline probe_eddy_current, or your own command |
By hand in the setup |
AUTO_EJECT_SETUP shows which kind it detected on its first screen.
Offset probes¶
While an offset probe comes down, the nozzle hangs x_offset/y_offset away from it, only a
few millimetres above the bed. If a part were under the nozzle, the nozzle would hit it before
the probe triggered. So:
- Smart homing picks a spot where the probe, the nozzle and the blade are all at least
home_clearance(20 mm) from every stored part. With a[bed_mesh]the spot stays inside the mesh area, where the probe is known to work. - Verification only probes points where the nozzle is at least
nozzle_clearance(5 mm) away from every part that has not been confirmed gone yet. Parts are checked in an order that makes each one reachable: once a part is confirmed gone, the nozzle may pass over its spot. - When a part is found, the rest of the plan is no longer safe (it assumed that part was gone). The remaining points are skipped and those parts count as still there, so a retry pushes them again and checks them again.
- A part that still cannot be probed safely stops with an error (
verify_unsafe_action: "error"). Check it by hand and runAUTO_EJECT_CLEAR.
Eddy-current probes¶
Eddy probes measure the distance to the metal bed, and plastic is invisible to them.
- Homing: Z comes out correct even with a part underneath. The toolhead still comes down to
a few millimetres, so the spot is still chosen clear of parts. Klipper's own
probe_eddy_currentworks with the defaulthome_z_gcode: "PROBE". For Beacon, Cartographer or Eddy-NG, sethome_z_gcodeto a command that homes Z at the current XY in your setup. - Verification: a plain proximity reading cannot detect a leftover part. Unless you set
verify_probe_gcodeto your probe's contact/touch command, verification is skipped and every eject prints:
Without verification, check the bed yourself (or with a camera) before queued jobs run.
AUTO_EJECT_GUARD cannot check either, so it stops a print that would start on old parts until
you run AUTO_EJECT_CLEAR.
Testing status: contact probes are tested on real hardware (Voron Tap). Offset probes and the eddy logic are covered by the automated tests only. If you run an eddy probe, please share your
verify_probe_gcode/home_z_gcodein the discussions.