Skip to content

PRTouch

Tim edited this page Aug 15, 2026 · 2 revisions

PRTouch

The load-cell/pressure-probe touch-detection system, in klippy/extras/prtouch_*.py. A drop-in, pure-Python rewrite of Creality's compiled prtouch_v2_wrapper.so, using standard Klipper host APIs — config-section-compatible with the stock [prtouch_v2] printer.cfg section on purpose.

Physically bed-mounted, not toolhead-mounted — the load cell sits at the bed's front-left corner, under the bed. Testing it means pressing the bed by hand, not the nozzle.

Modules: prtouch_v2.py (orchestration), prtouch_mcu.py, prtouch_nozzle.py, prtouch_probe.py, prtouch_calibration.py, prtouch_safety_guard.py, prtouch_units.py, each with dedicated tests (test_prtouch_*.py).

Deliberately not ported from the original compiled wrapper: run_G28_Z/run_G29_Z/ bed_mesh_post_proc/run_re_g29s/correct_bed_mesh_data and their gcode entry points — confirmed dead code in real production (BLTouch owns homing/bed-mesh), plus most of the debug/diagnostic command set (cheap to add later, not blocking the real feature).

Evidence: LIVE_HARDWARE_VERIFIED. Physical qualification (2026-08-12 through 2026-08-14): homing, mesh, heating, and extrusion all passed live; a disarm-on-step-timer-mismatch fix and an XY-reference fix were both live-qualified; a Z-stepper sound issue was resolved. The qualified state is tagged in NebulaOS-firmware as nebulaos-canonical-baseline-2026-08-14-prtouch-qualified.

READ_PRES is the one diagnostic command that touches zero motion (a pure MCU sensor-channel read) and is safe to run standalone to confirm the load cell is alive before ever risking a real motion-based touch_probe() call — it goes through the same plausibility-verdict safety guard a real descent would.

See also: Z Compensation, NebulaOS Changes.

Clone this wiki locally