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. It's a drop-in, pure-Python rewrite of Creality's compiled prtouch_v2_wrapper.so, using standard Klipper host APIs — it's config-compatible with the stock [prtouch_v2] section on purpose.

Worth knowing before you touch this: the load cell is bed-mounted, not toolhead-mounted — it sits at the bed's front-left corner, under the bed. If you're testing it, press 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 its own tests.

We deliberately didn't port everything from the original compiled wrapper — run_G28_Z/run_G29_Z/ bed_mesh_post_proc/run_re_g29s/correct_bed_mesh_data turned out to be dead code in real production (BLTouch actually owns homing/bed-mesh), and most of the debug/diagnostic commands were left out too — cheap to add back later, just not blocking the real feature.

This has been live-tested on real hardware: homing, mesh, heating, and extrusion all passed, a disarm-timing fix and an XY-reference fix both got qualified live, and a Z-stepper sound issue got resolved along the way. That qualified state is tagged in NebulaOS-firmware as nebulaos-canonical-baseline-2026-08-14-prtouch-qualified.

If you want to sanity-check the hardware without risking a real probe move, READ_PRES is the one command that touches zero motion — a pure sensor read, safe to run on its own.

See also: Z Compensation, NebulaOS Changes.

Clone this wiki locally