Questions about setting the Z offset

Basic Information:

Printer Model: Prusa i3MK3S+
MCU / Printerboard: Einsy Rambo
Host / SBC: Raspberry Pi 5

Describe your issue:

From the internet, I read that I have to get the Z value of the printer before installing Klipper. I did that and in the printer.cfg, I keyed in:

[probe]
z_offset = 2.0

After bed mesh leveling, I tried to set Z Offset. I went to MAINSAIL to heat the bed to 65C. Then, pressed the HOME icon. Next, I went to CONSOLE and typed probe_calibrate. A GUI showed up and I lowered the nozzle until it started to grab the paper in between the nozzle and the steel sheet. Then, I clicked Accept.

The console showed "probe: z_offset: 1.970
The SAVE_CONFIG command will update the printer config file
with the above and restart the printer.

Am I supposed to put a # sign before [probe] and z_offset = 2.0 to comment them out like the following before typing: save_config from the console? I am concerned that if I leave them there, they may overwrite or mess up the newly calibrated z_offset.

#[probe]
#z_offset = 2.0

@printeruser ,

Can you try the below procedure?

  1. Home all axes
  2. Place paper below the nozzle
  3. Move Z down until Mainsail says it’s at 0

After the above procedure, is the paper slightly stuck between the nozzle and bed? If so, your Z-offset is working.

After Home, I keyed in: probe_calibrate and it started at ??? >>> 7.090 <<< ???.

At Manual Probe -0.302 >>> 0.098 <<< 0.198, I feel the friction as I slide the paper. The nozzle is already scratching the paper. If I continue to lower the Z to 0, I may damage the components. Shall I leave it at 0.098

I’m a bit confused. Can you please show a screenshot of this?

In Mainsail, you can adjust the Z-offset up 0.098 (or 0.1 to simplify) then hit save.

I have not moved the printer but it is strange that this time I could go down to -0.025, rather than +0.098, before feeling friction between the nozzle and the paper as I moved the paper. Shall I click Accept?

Was the printer heated during this?

Yes it was heated to 65C in both cases.

I’m not really following up here.
@printeruser, what you described in your first post sounded pretty much correct.
Your resulting z-offset of 1.970 could be correct, depending on the probe. Since you ignored the request for a klippy.log, nothing more can be said.

This is exactly what SAVE_CONFIG is doing, and you are not supposed to change anything manually after this procedure, of course assuming your configuration is properly set up.

2 Likes

Thanks. I just re-do the Z calibration using the stock Prusa SuperPINDA at bed temperature 65C. This time it is -0.050 (please refer to the screenshot). Enclosed is the log file for your reference.

Actually do we need to worry if it is positive or negative as long as the nozzle is lowered into a height that we just feel friction as we move the paper below the nozzle?

=============== Log rollover at Sat Apr 12 11:12:06 2025 ===============
Starting Klippy...
Args: ['/home/user1/klipper/klippy/klippy.py', '/home/user1/printer_data/config/printer.cfg', '-I', '/home/user1/printer_data/comms/klippy.serial', '-l', '/home/user1/printer_data/logs/klippy.log', '-a', '/home/user1/printer_data/comms/klippy.sock']
Git version: 'v0.12.0-490-g5493bdfb4'
Branch: master
Remote: origin
Tracked URL: https://github.com/Klipper3d/klipper
CPU: 4 core ?
Python: '3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0]'
Start printer at Sat Apr 12 11:12:08 2025 (1744470728.7 39.8)
===== Config file =====
[virtual_sdcard]
path = ~/printer_data/gcodes
on_error_gcode = CANCEL_PRINT

[pause_resume]

[display_status]

[respond]
default_type = command

[gcode_macro CANCEL_PRINT]
description = Cancel the actual running print
rename_existing = CANCEL_PRINT_BASE
gcode =

        {% if printer.pause_resume.is_paused|lower == 'false' and park|lower == 'true'%}
        _TOOLHEAD_PARK_PAUSE_CANCEL
        {% endif %}
        TURN_OFF_HEATERS
        CANCEL_PRINT_BASE
        SDCARD_RESET_FILE

        G1 Z60 F3000
        G90

        M84
variable_park = True

[gcode_macro PAUSE]
description = Pause the actual running print
rename_existing = PAUSE_BASE
gcode =
        PAUSE_BASE
        _TOOLHEAD_PARK_PAUSE_CANCEL

[gcode_macro RESUME]
description = Resume the actual running print
rename_existing = RESUME_BASE
variable_last_extruder_temp = {'restore': False, 'temp': 0}
variable_restore_idle_timeout = 0
variable_idle_state = False
gcode =

        {% set extrude = printer['gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL'].extrude %}

        {% if 'VELOCITY' in params|upper %}
        {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
        {%else %}
        {% set get_params = "" %}
        {% endif %}