# Z-Probe height isn't working

I just upgraded my CR-10 to a 32-bit board with Marlin and a BLTouch for bed-leveling.

Here is my process:

1. Run bed-leveling and save setting to EEPROM
2. Make sure that software end-stops are off with S211 S0
3. Move Nozzle to Z = 0.1 mm
4. Use a .1 mm feeler gauge and baby-stepping to create a 0.1 mm nozzle height.
5. Save the baby-stepping value.
6. Run print.

The print then shoves the nozzle well below bed level and scratches up the bed.

I use the following G-code at the start of each print. (Added by my slicer)

    G28 ; home all axes
M420 S1 Z25; Enable Bed mesh leveling


What am I doing wrong?

• Correct me if im wrong. I would think the G28 home command at the start of your Gcode will undo any calibration you did to baby step. Is the baby step value saved as a slicer offset? Or some other way? Aug 18 '21 at 3:22
• Is there a better homing command to use? How are others doing this? Aug 18 '21 at 16:44
• All done by using the menu structure? You haven't send M851 Z... to the printer to store your offset?
– 0scar
Aug 18 '21 at 21:35

I have an Ender 3 pro and BLTouch and the following procedure works for me, I'll post it because it should be quite the same for all the Creality printers:

• First of all install Pronterface (from the PrintRun software suite), a program that let you interact with the printer from the PC.
• Find a USB to mini-USB cable (the port on your printer should be a mini-USB) and connect the PC with the printer
• Choose the right COM port between the PC and the printer (you can find the correct one opening the "device manager" on Windows and searching for "COM PORTS"
• Then you can connect the printer with the PC and start to interact with it.
• From the command line I send the following:
G28; (AUTO HOME)
G0 Z0; (Z AXIS move to ZERO)
M211 S0; (DISABLES ENDSTOPS)

• Then you raise/lower the nozzle from the bed using the "buttons" on the left part of Pronterface, until you find the perfect height (use the piece of paper method). Usually I just calibrate the height in the middle of the bed and that's fair enough if you have leveled the complete bed manually.

• When you have found the perfect height for the Z axis, input the following lines:

M114; (GET COORDINATES)
M851 Z[ insert z coordinate here -- see end of the answer ]
M211 S1; (ENABLES ENDSTOPS)
M500; (SAVE VALUES in MEMORY)

• After that you should be done. Send again G28 and G0 Z0 to check if the printer head is now at the correct height: repeat the process above if it's not.

When you calculate the Z height in the M851 command, bear in mind that you have to do the following:

new Z height = old Z height + height corrections done in pronterface

For example: my old Z height was -0.2 , I lowered the nozzle by -0.5 with Pronterface (to get the nozzle closer to the bed), then my new Z height would be -0.7

My start G-CODE in Cura is:

G92 E0 ; Reset Extruder
G28
G29 ; Home all axes
G1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed
G1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position
G1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line
G1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little
G1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line
G92 E0 ; Reset Extruder
G1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed
G1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish