Files
firmware/docs/bed-mesh.md
Oleksandr ShyshatskyiandClaude Opus 5 65a7528e09 The manual assumed a printer that arrives broken. It arrives calibrated.
The pages written on top of the old README inherited its premise: that after
flashing you face a gauntlet -- go/no-go checks, a safety net, a mandatory
calibration -- before the machine can be trusted with a model. That is not
what happens. The factory numbers import themselves on the first boot, a bed
mesh loads at the start of every print, and the mod is built to run the files
the stock firmware ran. A printer that printed before the flash prints after
it. "Your first print" now says so in its first line, and everything under it
is optional, ordered by what you would actually reach for: check the offsets
are applied, and calibrate only if that disagrees with the machine.

Three audiences now, because owner and contributor was not the real split.
"For experienced users" sits between them: How a print runs, and How
calibration works. Someone who knows Klipper and wants to change what happens
around their file has a place to go that is neither a walkthrough nor the
build system.

What was cut is most of what changed. Pages that were cryptic to the reader
they were aimed at -- Printing, Upgrading -- are out of the nav and kept on
disk to be rewritten rather than deleted. Within the pages that stayed:
Expected output, Probe sampling, What is being measured, the symptom table,
the dark-screen diagnosis, TOOL_Z_ADJUST, PLATE_CHECK, the ff-*.cfg
inventory, [ff_legacy] and SAVE_CONFIG in a paragraph about factory
calibration. Filenames and internals earn their place on an owner page only
when the reader has to type them or look at them; the rest moved to the
experienced pages or to Internals, where the audience wants them.

Calibration became a section rather than a page, because tool offsets are not
the only calibration: bed mesh has its own page now, and its own gotcha
written down -- BED_MESH_CALIBRATE writes `default`, a print loads
`MESH_DATA`, so a mesh probed by hand is a mesh no print will use. Input
shaping is described but has no procedure page yet.

Several claims came out because they were not true. "Is this for you" listed
calibration and input shaping as things the mod gives you; both are the
touchscreen's own sequences, recovered and reimplemented, and the notes say
so plainly. What the mod actually gives you is that anything speaking
Moonraker can drive the machine -- on stock, FlashForge's Klipper does not
toolchange at all, it raises a flag and waits for an application that is not
watching a Mainsail print, and the print hangs at the first T2. The page now
opens by telling most owners not to flash it.

Contributors are still deferred. Their pages are regrouped, not rewritten.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S3XZh4SqPdXAowVndz6tMr
2026-08-28 23:33:29 +03:00

2.3 KiB
Raw Permalink Blame History

Bed mesh

No build plate is perfectly flat. A bed mesh is a map of yours — the printer probes a grid of points across it and remembers how far each one sits above or below the ideal plane, so the first layer can follow the plate instead of digging into one corner and floating over another.

Your printer already has one. FlashForge probed a mesh at the factory and saved it, the mod imports it with the rest of your machine's numbers, and every print loads a mesh before it starts — that is not optional here, and it was not optional on the stock firmware either.

So for most people this page is nothing to do.


When to probe a new one

The factory mesh describes the plate the printer left the factory with. Probe a fresh one when that is no longer the plate you have:

  • you have swapped or replaced the build plate
  • the printer has been moved any distance, or the bed has been worked on
  • first layers are consistently good in one region of the bed and bad in another — the signature of a mesh that no longer matches

A first layer that is uniformly too high or too low across the whole plate is not this. That is nozzle offset, and it belongs to XYZ tool calibration.


Probing one

With the plate on and the bed at the temperature you print at — a hot plate is a different shape from a cold one:

G28
BED_MESH_CALIBRATE

It probes a 10×10 grid with the sensor on the carriage and takes a few minutes. The result is live immediately, and HelixScreen's bed-mesh screen will draw it.

That result is not saved yet, and it is not yet the mesh a print will load. To keep it, and to have prints use it:

BED_MESH_PROFILE SAVE=MESH_DATA
SAVE_CONFIG

MESH_DATA is the name of the mesh a print loads. Saving over it replaces the factory mesh with yours, permanently — that is the point, but it is also the reason to be sure the probe ran cleanly before you do it. SAVE_CONFIG restarts Klipper, so do it between prints.


Checking it

BED_MESH_OUTPUT

prints the probed points, and HelixScreen draws the same data as a surface. What you are looking for is a shape that looks like a plate — a gentle bow or tilt — rather than one point far away from its neighbours, which usually means the probe was disturbed rather than the bed being that shape.