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.

  • 2
    $\begingroup$ Did you try just leveling manually then running it to see what it would do without the z-offset? $\endgroup$ Jan 4, 2020 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, 2020 at 10:15
  • $\begingroup$ The Ender uses a single stepper for the Z height positioning, this is not optimal and many times the cause for misalignment between the X-min and X-max side. Maybe you need to inspect the XZ carriage on the non driven Z side? Regarding your update, I doubt this is under extrusion, it looks as if the gap is just bigger on the X-max side. As this is a single Z stepper driven carriage, a higher X belt tension may indeed stress the XZ assembly such that it prints better. $\endgroup$
    – 0scar
    Jan 8, 2020 at 9:42
  • 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, 2020 at 7:24
  • 1
    $\begingroup$ @Robert: Make sure both of the mounting plates (the one with the extruder and the one at the other side) are bolted perfectly level with the gantry (horizontal aluminum extrusion bar). Because of the way they mount, there is significant play, when they're not tightened down, and if you tighten them down misaligned you'll have all sorts of trouble. If this weren't a new unit I would also suspect uneven wear on the wheels; it's possible that one or more of the wheels is just defective and not centered correctly. $\endgroup$ Feb 7, 2020 at 13:48

2 Answers 2


This turned out to be a problem with the tightness of the rollers at the left and right sides of the X-axis gantry (that roll up and down the Z rails).

Z-axis motion is driven by a single stepper motor on the left side, so the rollers have to be just the right amount of tight to keep the right side in sync. If the right side is tighter or looser than the left then it lags behind, which gives the gantry a slight slant which changes as it goes up and down.

If the gantry is changing pitch throughout the print, no amount of bed leveling will help. Even auto-leveling is worthless, because the readings the BLTouch takes become immediately out of sync with the gantry as soon as it moves again.

The solution is to adjust the eccentric nuts in the rollers on the left and right. The best description I could find is that they need to be just tight enough that there's some resistance if you roll the top wheel with your finger, but loose enough that you can roll it without forcing the gantry up and down.

I ended up putting a magnetic digital level on top of the gantry rail so I could see exactly how much its incline changed. Send gcode to slide it up and down, then adjust the eccentric nuts a little bit, then repeat. Once I got it so the level didn't change, I re-leveled the bed and printed a beautiful first layer.

That was almost a year ago and it's been working ever since. I've had to re-adjust the eccentric nuts periodically when things start to get off, probably due to thermal expansion when the weather changes.

  • $\begingroup$ Isn't this always the problem with this design 😜. Nine times out of ten it is something with the rollers. Although the printers have a stiff and cheap frame, the motion system (rollers and single lead screw) seem to be the Achilles heel. Thanks for posting the answer, much appreciated, please accept after 48 hours! $\endgroup$
    – 0scar
    Feb 1, 2021 at 21:43

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
  • $\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, 2020 at 9:14

You must log in to answer this question.

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