Ramblings of an aging IT geek
← Ramblings of an aging IT geek
hardware

making peace with the first layer

A long-running fight with 3D printer bed levelling, what actually fixed it, and why the first layer is where every print is won or lost.

A 3D printer mid-print in a workshop

Almost every failed print I've ever had failed in the first half millimetre. The spaghetti monster on the bed at hour six, the part that pinged off mid-print and got dragged around, the warped corner that lifted: trace them back and they nearly all start with a first layer that didn't adhere properly. Which means almost every print problem is, at root, a bed levelling problem, and bed levelling has been my longest-running fight with this hobby.

I want to write down what actually fixed it, because I spent far too long chasing the wrong things.

Levelling is the wrong word

The first thing to unlearn is the name. "Levelling" implies you're making the bed level with respect to gravity, and you aren't. Gravity is irrelevant. What you actually want is the nozzle to stay a constant distance from the bed surface as it moves, everywhere on the bed. If the bed is tilted but flat, and the gantry is tilted by exactly the same amount, that's perfect, even though a spirit level would scream. What you're fighting is the bed not being a plane, or not being parallel to the plane the nozzle moves in.

Once I started thinking of it as "make the nozzle-to-bed gap constant" rather than "make the bed flat", a lot of my mistakes made sense. I'd been adjusting the wrong things.

The manual rituals that don't scale

For a long time I did the paper trick. Move the nozzle to each corner, slide a sheet of paper underneath, adjust the corner screw until there's a slight drag. It works, sort of, for a small bed that's genuinely flat. The problems are two. First, it only checks four corners and assumes everything in between is a plane, which on a cheap aluminium bed it usually isn't. Second, "slight drag on the paper" is wildly subjective and varies with paper thickness, the angle you pull, and how much coffee you've had.

A cluttered workshop bench

I got reasonable results from it for years, but "reasonable" meant re-levelling every few prints and accepting a certain failure rate as the cost of doing business. The corners I could get perfect. The middle of the bed, where a heated aluminium plate bows up by a few tenths of a millimetre as it warms, I could not, because the paper trick has no way to even see that.

What actually fixed it: mesh and Z-offset, separately

The real fix came from understanding that there are two different problems hiding under "levelling", and they need two different solutions.

The first is the shape of the bed: is it a plane or is it warped? A probe and a mesh handle this. The printer touches a grid of points across the bed, builds a height map, and the firmware then adjusts the Z height in real time during the print to follow that surface. A warped bed stops mattering because the nozzle rides the warp. I added an inductive probe, ran a mesh of 25 points, and the bowed middle that had defeated paper for years simply went away. The print software compensates for it on every layer.

The second problem is the absolute gap: even with a perfect mesh, how high is the nozzle above the surface on the first layer? This is the Z-offset, and it's a single number that the mesh can't determine for you, because the probe triggers at a slightly different height than the nozzle tip sits. You have to set it by hand, once, and then it stays.

The method that finally gave me consistent results was the live-adjust-during-first-layer approach. Start a print, watch the first layer go down, and nudge the Z-offset in small steps while it prints. Too high and the lines sit as separate round threads you can see gaps between. Too low and the nozzle squashes the plastic into translucent over-smeared ridges, or worse, scrapes the bed. The sweet spot is lines that have just merged into each other with no gaps, slightly flattened on top, like neatly laid ribbon. You can see it happen. Once I'd seen the right first layer a few times I stopped guessing.

; nudge Z offset live during the first layer, then save
SET_GCODE_OFFSET Z_ADJUST=-0.01 MOVE=1
; when it looks right:
Z_OFFSET_APPLY_PROBE
SAVE_CONFIG

That's roughly the workflow on my setup. Adjust in hundredths of a millimetre while watching, then bake the value in so I never touch it again.

The boring maintenance that prevents most of it

A few unglamorous habits cut my failure rate more than any clever firmware feature.

Clean the bed. Fingerprints leave oil, and oil is exactly where prints don't stick. A wipe with isopropyl before a print does more for adhesion than another round of levelling. I was levelling to fix what was actually a grease problem more often than I'd like to admit.

Heat the bed and let it soak before levelling or probing. The bed changes shape as it warms. Probing it cold and printing it hot means you measured a different surface than you printed on. Five minutes at temperature first, every time.

Check the bed springs or mounts aren't slowly loosening from vibration. A lot of "the printer drifts out of level every few days" is just screws backing off. Better springs or solid spacers fixed that for me, and the mesh has stayed valid for months rather than days.

Where I've landed

The war isn't really over, but it's gone cold. A probe to handle the bed's shape, a Z-offset set once by eye and saved, a clean warm bed before each print, and mounts that don't drift. With those four things in place I now expect the first layer to work, which after years of expecting it to fail is a genuinely different relationship with the machine.

The thing I wish someone had told me at the start: stop trying to make the bed perfect. Make the firmware compensate for the bed you have, set the gap once, and keep it clean. Perfection in hardware is expensive and temporary. Compensation in software is cheap and stays. Most of my eternal war was me trying to win it mechanically when the answer was to stop fighting and let the printer measure its own faults.