mirror of
https://github.com/Klipper4FlashForge/firmware.git
synced 2026-10-22 05:12:16 -05:00
3.3 KiB
3.3 KiB
Background: filament system, calibration, persistent state
Context recovered from the binary. Written when none of it was ported and the stock
touchscreen still handled it; both halves of that have since changed. The runout
handling, filament load/unload and the offset calibration below ARE ported now
(ff-runout.cfg, ff-filament.cfg, ff_tool_offset.py), and there is no stock
touchscreen on a modded printer — firmwareExe is replaced and HelixScreen is the only
UI. What is genuinely still unported is marked as such per item. Kept as reference.
Filament system
- 4 channels; per-channel presence (
fd_ex0..3) and motion/clog (fm_ex0..3) sensors;manual_stepper gear_stepperis the tool lock motor, not a feed hub. Errors: E0162 runout, E0163 clog. - Runout auto-swap (the flagship app feature): on runout mid-print the app pauses, finds another channel with the same material/color, switches channel (possibly a head change), refeeds, purges, restores position and resumes. All app-side.
- Load ≈ heat,
G92 E0,G1 E150/G1 E145long feed; unload ≈ feed assist then retract rampG1 E-50 F150… tip forming. - Pre-print screen parses 3MF per-tool type/color and lets the user remap slicer
tools to physical channels (
SDCARD_SET_GCODE_EX_USED_BASE/CHANGED). - Drying box: separate MCU on
/dev/ttyS3, own textual protocol (DryingService), 2 chambers with temp/humidity control. Not Klipper at all.
Calibration flows (all driven by the app)
- Bed leveling: eddy probe, 10×10 bicubic; factory mesh saved as profile
MESH_DATA, per-print mesh asdefault;SAVE_CONFIGafter. - Nozzle offset calibration (
testEddyExtruderOffsetForward*): heats and cleans each nozzle, probes the fixed under-bed sensor with the eddy, then touches it with each nozzle; circular probing + least-squares circle fit for XY; results →tN_offset_x/y/z,z_station_posin extruder.json. Reimplemented in Klipper asTOOL_LOCATE_SENSOR/TOOL_CALIBRATE_TOOL_OFFSET(45-tool-offset-calibration.md,46-offset-calibration-recovered.md); the JSON is imported byFF_IMPORT_FIRMWARE_CONFIG— once when the printer first migrates from stock, run for you bybin/ff-startup.py— and is never a runtime source. - Input shaper:
STEPPER_RESONANCE_FACTORY_CALIBRATE(fork) /SHAPER_CALIBRATE. - Auto PA: seven PA candidates, one slow-fast-slow line each, scored by the closed
eBoard MCU via
PA_ACTION/PA_GET; the mean of three passing sweeps is stored as a per-tool table viaSET_PA_ADVANCE. Host side fully recovered — see51-pa-calibration-recovered.md.
Persistent state map (/usr/data/firmwareRes/config/)
extruder.json,test.json,zoffset.json— motion-critical, see40-offsets.md. Back these up.filament.json— per-channelexN_filament_type/color/diameter.general.json/print.json— UI toggles:levelOpen(per-print leveling),openDoorPause,filamentDetected,aiCheck, camera, LED…total.json— maintenance counters/service reminders.levelData— 10×10 mesh copy the UI renders.
Also worth backing up before any experiment: /usr/data/config/printer.cfg (+
printer.base/macro/motor/override.cfg) and the whole /usr/prog/klipper/ fork tree.