I'm having an issue with bed levelling since upgrading my stock Ender 3 pro to Marlin

The upgrade process seems to have gone through fine, I get the new options and it shows the FW version when I power on. My issue however, is that after I auto home the printer, disable stoppers and then level the bed, using a piece of paper, any time I attempt to print the nozzle hits the bed which stops all flow as there's no space for the filament to come out.

This process is exactly the same as I used to do before the upgrade and I never had issues, only since the upgrade.

For reference, I've manually adjusted all the wheels on the printer so there's a large gap (for testing) between the paper and the nozzle at any point on the bed (the piece of paper passes below the nozzle with zero resistance). However, when I attempt a print, it homes the printer and then the nozzle drops lower and crushes any paper I put between the nozzle and the bed (I do this while testing so it doesn't damage the bed), the paper is impossible to move by hand.

Anyone know what I'm doing wrong here? None of the guides that I've found for installing Marlin 2.x on the Ender 3 Pro mention anything about having to make any changes to allow the Z axis to work like before so at a bit of a loss as to why this is happening.

Something that occurred to me. I use PrusaSlicer as my slicer and I noticed that it has the following lines in the custom G-code for the template that I always use that reference "Z", now admittedly I'm no expert with G-codes but could it be either of these that's causing the issue:

G1 Z2 F240
G1 Z0.28 F240

Edited to add full prusaslicer template gcode below:

Start G-code

M83 ; extruder relative mode
M104 S[first_layer_temperature] ; set extruder temp
M140 S[first_layer_bed_temperature] ; set bed temp
M190 S[first_layer_bed_temperature] ; wait for bed temp
M109 S[first_layer_temperature] ; wait for extruder temp
G28 ; home all
G1 Z2 F240
G1 X2 Y10 F3000
G1 Z0.28 F240
G92 E0
G1 Y190 E15 F1500 ; intro line
G1 X2.3 F5000
G92 E0
G1 Y10 E15 F1200 ; intro line
G92 E0

End G-code

{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F600{endif} ; Move print head up
G1 X5 Y170 F{travel_speed*60} ; present print
{if max_layer_z < max_print_height-10}G1 Z{z_offset+min(max_layer_z+70, max_print_height-10)} F600{endif} ; Move print head further up
M140 S0 ; turn off heatbed
M104 S0 ; turn off temperature
M107 ; turn off fan
M84 X Y E ; disable motors

Before layer G-code

G92 E0

After layer G-code


1 Answer 1


This seems like Z homing issue. Sounds pretty frustrating, so I will try to give some hints, though I do not have Ender 3. Also maybe my few questions will be helpful.

Did you "adjusted all the wheels on the printer" after the Z position was zeroed? This could be crucial, especially that firmware may raise Z up after homing (e.g. to 4mm). The G-Code you have sent makes simple Z moves: rises to 2mm, then lowers to 0.28 mm above the sea level (and F is denotion of speed). And obviously this should happen AFTER homing Z axis, not earlier - could you check earlier G-Code for G28 call? If you can manually move the bed out of heatend's range (to avoid crashing it) then I suggest to use own file containing only two commands to experiment with Z homing only, e.g.:

G90             ; absolute positioning (just to be sure it is not incremental G91)
G28 Z           ; homing Z axis
G1 Z0.0 F100    ; firmware may have raised Z up slightly, so lower again to 0

If homing would cause the bed accident, than I am unfortunately right - or:

(Added after tracing real problem) Check if Z axis is not loose - e.g. coupler screws are tight - so Z axis cannot rotate on its own by gravity and wight of carrige. When Z steppers are enabled, you should not be possible to move carriage up and down with slight pressur of hands.

Does the printer react to Z endstop? This is first thing to check, actually. You can you press it with finger during Z homing to check if it would react properly (Z homing stopped).

If not, then... did you compile Marlin on your own? For example maybe the Z endstop is or should be inverted. More insight is needed then against the Configuration.h, e.g. file for Z_MIN_ENDSTOP settings. Would be good to have its version from previous firmware, or google some valid Ender 3 file to compare with.

  • $\begingroup$ This is all great stuff. I'll run through your suggestions and checks in the morning and feedback $\endgroup$
    – Saf
    Jan 6, 2021 at 0:28
  • $\begingroup$ I just had a chance to go through your suggestions: $\endgroup$
    – Saf
    Jan 6, 2021 at 13:06
  • $\begingroup$ I just had a chance to go through your suggestions: 1) Did you "adjusted all the wheels on the printer" after the Z position was zeroed? - Yes, I adjusted all wheels and ensured everything was correct. 2) could you check earlier G-Code for G28 call? - I updated my original post with the full gcode 3) Does the printer react to Z endstop - Yes, it functions correctly. If I move the Z to the middle of the axis and then click auto-home and press down the switch, it stops. As a test, I updated the firmware to the official firmware from the creality website and the issue remains :/ $\endgroup$
    – Saf
    Jan 6, 2021 at 13:11
  • $\begingroup$ I changed line G1 Z0.28 F240 to G1 Z2 F240 and when it does the initial line down the side of the print bed (before it starts the actual print) the levelling is correct based on my manual levelling. When it moves to the middle of the bed and starts the actual print, it again drops down and crushes the paper that I put down. I ran the printer with no filament and the paper below the nozzle and when I let it run it will continue to "print" (with no filament) and the nozzle will continue to increase in height layer after layer but that first part is definitely an issue. I hope this makes sense $\endgroup$
    – Saf
    Jan 6, 2021 at 13:14
  • $\begingroup$ At the very end of the start g-code (in my question) I added the line: G1 Z2 F240 but this also didn't fix the z axis being lower than it should be. I don't know a lot about gcode so I'm pretty sure I'm trying to fix it in a way that isn't correct but thought I'd test it out $\endgroup$
    – Saf
    Jan 6, 2021 at 14:05

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .