I'm having a problem getting a clean first layer on an Ender 3 with BLTouch auto bed leveling. Thickness seems to fluctuate all over the bed, but in a consistent (repeatable) way. Here's my attempt to print a single layer 5 square bed calibration test:

Full bed I stopped the print midway through filling the first square, but you get the idea. Lines go from too low so no filament comes out to too high.

I printed this several (many) times with slight settings tweaks and it looks pretty much the same every time; the ups and downs aren't random. For example, the center square always is always too low on the left and too high on the right:

Center square

The printer is a SainSmart Ender 3 Pro with a BLTouch V3.1 and Creality glass bed, otherwise stock. I flashed a bootloader and Marlin 2.0 using the instructions and pre-compiled firmware from 3D Printing Canada. I'm using the glass bed upside-down on the plain glass side (no coating).

I pre-heated and leveled the four corners manually using the paper method. I auto-homed and then lowered the hot end until it would just catch a piece of paper and used that height to set the Z offset using M851 and saved it with M500. It's currently set at -2.80.

I added G29 to GCode start in Cura, and it does a 3x3 probe before the print starts. Here's the output when I run M420 V:

Bilinear Leveling Grid:
      0      1      2
 0 -0.207 +0.172 +0.162
 1 -0.100 -0.160 +0.220
 2 -0.118 +0.215 +0.295

Here's what it looks like in the Bed Visualizer plug-in in Octoprint:

Bed visualization

If I understand this right (dubious) it's showing that the glass is lower toward the front and left, highest at back-right. But it's only 0.4mm from the lowest to highest points. And the whole point of mesh leveling is to compensate for this anyway.

At Paulster's suggestion I turned off mesh leveling using M420 S0, leveled manually, and printed again. The result is pretty similar (note that this time I let it run all the way through):

Second print without mesh leveling

Where should I start looking to diagnose this problem?


I noticed my X-axis belt was a bit loose, so I tightened it up. It seems to have helped with the odd Z slanting. My test print is still not great though, so this may not be the whole problem. Also I've never seen this effect listed as one caused by loose belts, so it's dubious as the cause. Here's the current test print after tightening the belt:

Updated test print Closeup test print

It's flatter, but I'm still getting (I think) under-extrusion and some odd wobbles at the corners.

  • 1
    $\begingroup$ Did you try just leveling manually then running it to see what it would do without the z-offset? $\endgroup$ – Pᴀᴜʟsᴛᴇʀ2 Jan 4 at 16:44
  • $\begingroup$ @Pᴀᴜʟsᴛᴇʀ2 I did as you suggested and got a pretty similar result (added to question). Not sure what to make of this. I guess this means it's not an autoleveling issue? So where should I start? $\endgroup$ – Robert Jan 5 at 10:15
  • $\begingroup$ Do you Z-hop in between squares? Is there any play in Z direction? This looks strange, I'm wondering it it is related to Z-axis backlash. $\endgroup$ – 0scar Jan 8 at 6:46
  • $\begingroup$ @0scar I don't have Z-hop turned on in Cura, so as far as I know there's no Z-hop. I think this was at least partly caused by a loose X-axis belt. I tightened it and it seems to have helped. See photos added to question. It's still not perfect though, so I would appreciate suggestions for further refinement. $\endgroup$ – Robert Jan 8 at 9:32
  • 2
    $\begingroup$ Basically you're looking for play in the system; e.g. loose nuts or misalignments. You can also do some measurements of the four corners with respect to the carriage at different heights. I would also look if the bed is stable, not wobbling/tilting, to be sure. $\endgroup$ – 0scar Jan 9 at 7:24

Two things:

  1. Did you bring the bed up to operating temperature to do the levelling (manual or automatic). The metal & glass will expand/warp at different levels depending on temp.
  2. Check your G-code to make sure it is not doing a G28 (auto home). That turns off auto-levelling. If it is there you can add:
G28 ;Home
M420 S1 ; turn levelling on
M501 ; reload your last-saved bed levelling from EEPROM

This assumes you saved the results from your auto-levelling with M500:

G29 ; Automatic Bed Levelling
M500 ; save the bed levelling data to EEPROM
| improve this answer | |
  • $\begingroup$ I have been bringing the bed up to operating temperature by manually preheating it before starting a print. I auto-home with G28 before leveling with G29. $\endgroup$ – Robert Jan 8 at 9:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.