diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..48b65ea --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,95 @@ +# Changelog + +All notable Reforge changes are recorded here. The project is in beta: a +feature can be implemented and replica-tested without yet being validated on +both printer models or through every real-world workflow. + +## Unreleased + +Release preparation and documentation sweep. No firmware behavior is changed +by this entry. + +## v20260827c-melitopol — 2026-08-27 + +### Added + +- HelixScreen’s Filament page now follows the selected tool for material, + spool, temperatures, loading, and retracting. +- Installed packages record the Reforge APK feed location for future updates. + +### Fixed + +- A selected tool with no resolvable heater is logged and ignored instead of + heating the wrong hotend. + +## v20260827d-melitopol — 2026-08-27 + +### Added + +- HelixScreen pressure-advance calibration integration and per-tool Z + correction selection in the tune overlay. + +### Fixed + +- Pressure-advance calibration restores the previous heater target, including + when a sweep fails partway through. +- Calibration documentation now explains that results belong in the slicer’s + filament profile rather than being saved to `printer.cfg`. + +## v20260827-melitopol — 2026-08-27 + +### Added + +- s6-rc supervision for the web stack, camera, Moonraker, Wi-Fi, and related + services, with readiness checks based on actual service readiness. +- A printer-local CPython 3.13 runtime for Moonraker with working SQLite. +- CPU priority controls that let Moonraker and the camera yield to Klipper. +- HelixScreen settings persistence across firmware updates. + +### Changed + +- Reforge owns and starts the camera and web stack rather than stock + `firmwareExe`. +- Startup retries until MCU boards answer and shows boot progress. + +## v20260825b-nova-kakhovka — 2026-08-25 + +### Fixed + +- `TOOL_OFFSET_CALIBRATE` no longer shuts Klipper down on completion. + +## v20260825-nova-kakhovka — 2026-08-25 + +### Added + +- First-boot import of factory per-unit calibration into Klipper config. +- Toolchanger-aware calibration, status commands, and safe plate checks. +- An update path that preserves the root password and user configuration. + +### Fixed + +- Release builds can no longer silently fall back to the stock Klipper tree. + +## v20260824-nova-kakhovka — 2026-08-24 + +### Added + +- USB packages for Creator 5 and Creator 5 Pro with model guards. +- Current Klipper with Creator 5 toolchanger support, Mainsail, Moonraker, + HelixScreen, camera streaming, Wi-Fi, and root SSH. +- Stock slicer compatibility through `[ff_print]`, `START_PRINT`, and + `END_PRINT`, including preparation, mesh loading, nozzle cleaning, tool + checks, and safe cancellation. +- Tool-aware filament load, unload, purge, runout, and clog handling. +- Automatic pressure-advance calibration and VFA calibration support. +- Timelapse support, signed APK packages, pinned inputs, and Docker plus + printer-replica QA. + +### Known release issue + +The original packages were withdrawn because they could install a mixed +Klipper tree. Use the rebuilt release or a later release; see its release note. + +## Project start — 2026-08-20 + +- Initial reverse-engineering notes and USB-installable firmware builder. diff --git a/README.md b/README.md index c108233..6033927 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,8 @@ young. Help and support: [the Discord](https://discord.gg/ggJyfgVA4v). ## Status -**It runs on a real printer** — a Creator 5 Pro, flashed and printing: +**It runs on real printers** — both a Creator 5 Pro and a Creator 5 have been +flashed and exercised; the pictured hardware is the Pro: HelixScreen mid-print on the Creator 5 Pro: T2 mounted, layer 2 of 173 HelixScreen's bed-mesh screen showing a probed 10x10 mesh @@ -41,13 +42,13 @@ A checked box happened on that machine; an empty one has not, yet. starts it - [x] **Wifi** - [x] **HelixScreen** on the printer's own screen -- [ ] **Chamber heater** -- [ ] **Creator 5 (non-Pro)** — its package builds and passes the same - replica test suite, but has not touched hardware -- [ ] **Going back to stock** — proven on the printer replica, not yet - needed on the machine. The stock package restores everything it carries; - Moonraker is not in it, so the mod's build stays and keeps working — see - [Support](docs/support.md) +- [x] **Chamber heater** — tested on the Creator 5 Pro; the regular Creator 5 + correctly uses its heater-free chamber configuration +- [x] **Creator 5 (non-Pro)** — package installed and exercised on hardware; + see the feature-specific validation notes in the [feature list](docs/features.md) +- [x] **Going back to stock** — tested with the matching stock packages; the + stock package restores everything it carries. Moonraker is not in it, so + the mod's build stays and keeps working — see [Support](docs/support.md) **For the tinkerer:** @@ -104,6 +105,9 @@ insides — one file, `firmwareExe`, with the stock boot scripts, updater and recovery path left untouched — [How it works](docs/how-it-works.md) is under *For contributors*. +For the complete beta inventory and validation boundaries, see the +[feature list](docs/features.md). + --- ## Credits diff --git a/docs/features.md b/docs/features.md new file mode 100644 index 0000000..716ed23 --- /dev/null +++ b/docs/features.md @@ -0,0 +1,28 @@ +# Feature list + +Reforge replaces the FlashForge application layer on the Creator 5 family +with Klipper and a toolchanger-aware web and touchscreen experience. + +## Printer owner features + +| Area | What is included | Status | +|---|---|---| +| Installation | FlashForge-style USB installer, one package per model, model guard | ✅ Yes | +| Recovery | Matching stock package restores stock files | ✅ Yes | +| Calibration import | Factory dock, station, nozzle, and bed data imported on first boot | ✅ Yes | +| Printing | Stock slicer G-code, preparation, mesh, clean, tool checks, cancel/pause/resume | ✅ Yes | +| Toolchanger | T0–T3 selection, docking/grabbing, mounted-tool detection, safe homing | ✅ Yes | +| Tool calibration | Per-tool offsets, station calibration, bounded probes, sanity checks | ✅ Yes | +| Bed mesh | Factory mesh import, 10×10 probing, save/load through `MESH_DATA` | ✅ Yes | +| Filament | Tool-specific load, unload, purge, cold wipe, material temperatures | ✅ Yes | +| Runout and clog | Mounted-tool sensors pause prints and support load/resume recovery | ✅ Yes | +| Pressure advance | Automatic FlashForge-compatible sweep, HelixScreen integration, and slicer-oriented results | ✅ Yes* | +| VFA calibration | Klipper VFA support with required MCU library and dependency | ✅ Yes | +| Chamber | Pro heater/light configuration and heater-following fan; heater-free Creator 5 config | ✅ Yes | +| Mainsail | Mainsail over Moonraker, webcam stream, Klipper API compatibility | ✅ Yes | +| Screen | HelixScreen with tool/material-aware filament controls and persistent settings | ✅ Yes | +| SSH | Root access with per-printer first-install password on the USB stick | ✅ Yes | +| Updates | APK feed, signed packages, preserved user settings and password | ✅ Yes | + +\* Pressure advance is a manual check. See the [pressure advance calibration +guide](pressure-advance.md). diff --git a/docs/installing.md b/docs/installing.md index 38236cd..cd80be4 100644 --- a/docs/installing.md +++ b/docs/installing.md @@ -50,9 +50,10 @@ Not sure which you have? On the printer: **Settings → About**. 4. **Plug the stick in and power the printer on.** It finds the package by itself and starts installing. The screen tells you to wait while it works; this takes a few minutes. Do not cut the power. -5. **Wait for the beep.** The printer sounds when the install has finished and - the screen then offers to reboot. Accept it. -6. **Pull the stick** once it has rebooted — your root password is on it, in +5. **Wait for the beep.** The printer sounds when the install has finished. +6. **Reboot manually.** Turn the power switch on the right side of the + printer, near the power cable, off and on again. +7. **Pull the stick** once it has rebooted — your root password is on it, in `anvil-password.txt`. The boot after that one is the long one, and it is the mod's rather than diff --git a/docs/known-issues.md b/docs/known-issues.md new file mode 100644 index 0000000..29b55e1 --- /dev/null +++ b/docs/known-issues.md @@ -0,0 +1,15 @@ +# Known issues + +## OrcaSlicer sends a 3MF file instead of G-code + +Some OrcaSlicer profiles can upload a `.3mf` project rather than the sliced +`.gcode` file. Reforge expects the G-code file for printing, so the job may +not appear or start correctly in Mainsail. + +In OrcaSlicer, open **Printer Settings** and uncheck: + +> Use 3MF instead of G-code + +Slice the model again and upload the resulting `.gcode` file through Mainsail +or your Moonraker upload target. + diff --git a/docs/vfa-calibration-example.jpg b/docs/vfa-calibration-example.jpg new file mode 100644 index 0000000..3433069 Binary files /dev/null and b/docs/vfa-calibration-example.jpg differ diff --git a/docs/vfa-calibration.md b/docs/vfa-calibration.md new file mode 100644 index 0000000..18e2ff4 --- /dev/null +++ b/docs/vfa-calibration.md @@ -0,0 +1,53 @@ +# VFA calibration + +VFA means **vertical fine artifacts**: fine vertical banding caused by a +stepper motor’s torque ripple. It is different from input shaping. Your +printer already has factory VFA values, so recalibrate only after replacing a +motor or when visible banding remains after normal tuning. + +## Before you start + +- Make sure no print is running. +- Remove the build plate. +- Make sure the printer is homed and the carriage can move freely. +- Leave the toolchanger empty; Reforge mounts a tool automatically for the + measurement. + +## Run the calibration + +Send these commands from the Mainsail Console, one at a time: + +```gcode +STEPPER_RESONANCE_FACTORY_CALIBRATE +SAVE_CONFIG +``` + +The first command measures the X and Y motors. The printer will move quickly +and make a noticeable vibration noise while it searches. Wait for it to +finish before sending `SAVE_CONFIG`. + +`SAVE_CONFIG` is required: the first command applies the correction for the +current session and stages the values, while `SAVE_CONFIG` writes them to the +configuration for future restarts. It also restarts Klipper. + +## Afterward + +Wait for Klipper to reconnect, then run: + +```gcode +STATUS +``` + +The VFA correction is applied by the printer’s motor drivers on subsequent +moves. It is independent of `SHAPER_CALIBRATE` and does not replace input +shaping. + +## Example + +This comparison shows the same speed sweep with VFA compensation disabled on the left and +enabled on the right. Speeds run from **80 to 200 mm/s, right to left**. The +enabled side has visibly cleaner vertical walls and fewer fine bands. + +![VFA calibration comparison: disabled on the left, enabled on the right, with speeds from 80 to 200 mm/s right to left](vfa-calibration-example.jpg) + +*VFA disabled (left) versus enabled (right). \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 653c217..d0944a6 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -73,13 +73,16 @@ nav: - Using Reforge: - Is this for you: is-this-for-you.md - Installing: installing.md + - Feature list: features.md - Your first print: first-print.md - Calibration: - Read first: calibration-overview.md - XYZ tool calibration: calibration.md - Bed mesh: bed-mesh.md - Pressure advance: pressure-advance.md + - VFA calibration: vfa-calibration.md - Support: support.md + - Known issues: known-issues.md - Versions: versions.md # Past the manual, short of the build system: how the machine behaves and