mirror of
https://github.com/Klipper4FlashForge/firmware.git
synced 2026-10-22 21:32:16 -05:00
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
142 lines
5.5 KiB
Markdown
142 lines
5.5 KiB
Markdown
# Your first print
|
|
|
|
**If your printer was printing before you flashed, it will print now.** The
|
|
factory numbers came across on the first boot, a bed mesh is loaded at the
|
|
start of every print, and the mod is built to run the same files the stock
|
|
firmware ran. There is nothing you have to set up first.
|
|
|
|
What follows is what is worth doing anyway, the first time, before you leave
|
|
a long print unattended. None of it is mandatory. All of it is quicker than
|
|
scraping a failed first layer off the plate.
|
|
|
|
---
|
|
|
|
## Where everything is
|
|
|
|
Everything is on the printer's own address:
|
|
|
|
| | |
|
|
|---|---|
|
|
| `http://<printer-ip>/` | Mainsail |
|
|
| `http://<printer-ip>:7125` | Moonraker's API — what slicers upload to |
|
|
| `http://<printer-ip>/webcam/` | the camera stream (mjpg-streamer on `:8080`) |
|
|
| `ssh root@<printer-ip>` | the shell — password from `anvil-password.txt` |
|
|
|
|
```
|
|
/usr/data/anvil-install.log what the installer did
|
|
/usr/data/logs/anvil-boot.log services + UI choice at each boot
|
|
/usr/data/logs/printer.log klipper
|
|
/usr/data/logs/helixscreen.log helixscreen
|
|
```
|
|
|
|
They are the first thing to read when something is wrong, and the first thing
|
|
to quote when you ask on [the Discord](https://discord.gg/ggJyfgVA4v).
|
|
|
|
---
|
|
|
|
## Check the offsets are applied
|
|
|
|
**Recommended.** Not because it is likely to be wrong, but because this is
|
|
the one thing that damages the machine when it is, and it costs two minutes.
|
|
|
|
Before moving anything:
|
|
|
|
* `TOOLCHANGE_STATUS` — current tool as derived from the dock sensors, every
|
|
sensor's state, each tool's nozzle position and `z_adjust`, `station_z`,
|
|
dock coordinates and the derived offsets (`offset_z` is each tool's
|
|
absolute bed-frame gap, ~3.2). Check the `dock_x`/`dock_y` rows are
|
|
numbers, not `nan`.
|
|
* `TOOL_OFFSET_STATUS` — saved calibration per tool and for the station,
|
|
and a warning if anything is staged but not yet `SAVE_CONFIG`'d.
|
|
* Physical Z check (clean bed, nothing on it):
|
|
|
|
```gcode
|
|
G28
|
|
T0
|
|
TOOLCHANGE_SET_PRINT_OFFSET NOZZLE=220 BED=80 LAYER=0.25 TOOL=0
|
|
G1 X150 Y150 F6000
|
|
G1 Z0.1 F600
|
|
```
|
|
|
|
`T0` already applies the ~+3.2 mm gap (watch the gcode Z offset in the
|
|
UI); the offset command reports the full Z with a term-by-term breakdown,
|
|
and the nozzle should end up a paper-thickness above the bed at the
|
|
center. If it presses into the plate instead, STOP — the offset is not
|
|
being applied; do not print until `TOOLCHANGE_STATUS` and
|
|
`TOOL_OFFSET_STATUS` are clean. Afterwards restore the idle state:
|
|
|
|
```gcode
|
|
G1 Z10 F1200
|
|
TOOLCHANGE_PARK ; drops the per-tool frame
|
|
TOOLCHANGE_SET_PRINT_OFFSET CLEAR=1 ; and this the job term
|
|
```
|
|
|
|
`SET_GCODE_OFFSET Z=0` is *not* the way to clear the job term any more:
|
|
it cannot tell that term from your babystep, so it would take both.
|
|
|
|
A touchscreen recalibration no longer affects this module. Recalibrate from
|
|
Klipper instead — [XYZ tool calibration](calibration.md) — or repeat the
|
|
import step if you really want the touchscreen's numbers.
|
|
|
|
---
|
|
|
|
## If something looks off, calibrate
|
|
|
|
Only if you need it — a machine that measures correctly above does not need
|
|
this. Run it when the check disagrees with reality, when a tool has been
|
|
refitted or dropped, or when one tool prints at a different height from the
|
|
rest.
|
|
|
|
Re-measuring replaces the factory numbers with your own; it does not repair
|
|
anything else, and it is not a routine step. Background:
|
|
[Calibration](calibration-overview.md).
|
|
|
|
**Take the PEI sheet off first** — the calibration station sits below the bed
|
|
plane — then home and calibrate:
|
|
|
|
```gcode
|
|
G28
|
|
CALIBRATE_TOOL_OFFSETS
|
|
SAVE_CONFIG
|
|
```
|
|
|
|
Step by step, with every message it can refuse with, and what each refusal
|
|
means: [XYZ tool calibration](calibration.md).
|
|
|
|
Afterwards, `TOOLCHANGE_STATUS` and `TOOL_OFFSET_STATUS` should show a nozzle
|
|
triple and a dock position for every tool, and nothing should say
|
|
`NOT CALIBRATED`.
|
|
|
|
---
|
|
|
|
## The two verification files
|
|
|
|
Two G-code files live in [`gcode/`](../gcode/) in the repository. They are
|
|
not models: they exercise the things a real print depends on, in the order a
|
|
real print uses them, so a mistake shows up on a bare plate rather than
|
|
halfway through a job.
|
|
|
|
Send them the way you send any print — Mainsail's upload, or your slicer's
|
|
Moonraker target.
|
|
|
|
| File | What it does |
|
|
|---|---|
|
|
| [`creator5-safe-moves.gcode`](../gcode/creator5-safe-moves.gcode) | The whole sequence with the heat and the filament taken out. Nothing extrudes, no heater is given a target, and after homing nothing moves below Z50. It answers whether homing, tool changes and the end sequence behave — before a nozzle can reach the plate. |
|
|
| [`creator5-feature-test.gcode`](../gcode/creator5-feature-test.gcode) | The real thing, hot, with two tools: one ring per tool to read XY offsets off the plate, a solid first layer to judge squish, the fan map, a chamber-heater check, and a tower with a tool change on every layer. |
|
|
|
|
Run the safe one first. Each file's own header repeats what it does, so
|
|
whoever is standing at the machine has it in front of them.
|
|
|
|
Two refusals are the gates working rather than faults: a complaint that the
|
|
machine is not calibrated, and "Refusing to home Z: cannot tell whether a
|
|
tool is mounted", which means the dock switches disagree — run
|
|
`TOOLCHANGE_STATUS` and find the one that is lying.
|
|
|
|
---
|
|
|
|
## A real print
|
|
|
|
Now slice something small and print it the way you will print everything
|
|
else: the stock FlashForge profile, uploaded through Mainsail or your
|
|
slicer's Moonraker target. Stay at the machine for the first one.
|