Test print start: guard peaks 1-8 in every phase except the brush scrub
(peak 47, 4 reads above 30 in a row), 0 I2C errors; a light finger push
gives 41. Stop mode for all phases, the brush stays log-only.
The contact homing in HOME restarted 6 times (sample spread too large)
while the nozzle was still heating to 150C; PRINT_WARMUP now waits for a
steady contact temperature first, as PRINT_START does.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
All macros now come from this repo. bd_pressure.cfg ([bdpressure bd_pa]
and the vendor PA_CALIBRATE macros) and Macros/TEST_SPEED.cfg were loose
files in ~/printer_data/config.
PA_CALIBRATE no longer sets Z back to z_current at the end: it was read
before the test ran, so a Z hop in the G28 XY (Beacon home_z_hop) would
leave Klipper believing the nozzle is lower than it is. Z is never switched
off or moved by the test, so it keeps its position without that line.
The ACC_WALL bug (read from ACCEL_TO_DECEL, always 4000) is documented,
not fixed: the cached PA values were measured at 4000.
printer.cfg must drop [include bd_pressure.cfg] and Macros/macros.cfg its
TEST_SPEED include, else the old copies (included later) still win.
Reference values from the load-check-afc branch and from the guard and
Z check tests added to CLAUDE.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- HOME always homes Z with Beacon contact and recalibrates, also when the
printer is already homed (home_method_when_homed = proximity used the
model of an earlier print without touching the bed). PRINT_START homes
Z again after QGL, before the brush takes the nozzle below Z0.
- _Z_CHECK: after the soak, compare Klipper's Z with a BEACON_QUERY
reading at Z3 over the bed centre and stop the print above 1 mm.
Warns and continues when BEACON_QUERY leaves no new
printer.beacon.last_sample.
- Nozzle guard (extras/bdp_guard.py, print/nozzle_guard.cfg): reads the
bd_pressure force over I2C every 20 ms while armed and, in stop mode,
shuts Klipper down on a touch. Armed for HOME X/Y, QGL, Z homing, brush,
mesh and the Z check; starts in log mode to collect peaks per phase.
- Chamber prints: load and purge the first tool before the chamber heats
(_LOAD_FOR_CHAMBER replaces _UNLOAD_FOR_CHAMBER). A cut unload leaves a
piece of PLA in the extruder that softened in the hot chamber and jammed
the ASA load.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
action_raise_error aborts while the macro renders, so an M117 in the same
macro never ran and errors such as the RESUME lane check only reached the
console. messages.cfg adds _ERROR (M117, then raise in a separate macro)
and _WARN (RESPOND TYPE=error + M117); all errors and warnings use them.
PAUSE shows AFC's error as the pause reason; RESUME, CANCEL_PRINT and
PRINT_WARMUP clear the display.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
bdwidth's motion reading stays at 0, its per-reading width compensation
made the flow jump between 77 and 119%, and a USB dropout shut down
Klipper. PRINT_START no longer enables it. _PRINT_CLEANUP,
BLOBIFIER_CHECKED and PURGE_UNTIL_EMPTY only send bdwidth commands when
[bdwidth fila_width_0] exists, and bdwidth_status reports present: False
with neutral values when it is not configured, so the section can be
removed from printer.cfg.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
_RESUME_PRINT purges 40 mm with BLOBIFIER_CHECKED (instead of the 2 mm
unretract), so the nozzle is primed, wiped and checked before going back
to the print. A failed purge check raises an error that aborts the whole
resume, AFC_RESUME's restore included, so the printer stays paused; the
next RESUME checks again. RESUME PURGE=0 skips the purge.
The purge check records a failure in _PURGE_CHECK_CFG.last_failed, since
its PAUSE has no effect while the printer is already paused.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The CCD motion reading stays at 0 (actual_total_move:0), so motion mode
only produced false "Rounout" messages. ENABLE_WIDTH keeps the flow
compensation and the runout on a missing width; clogs and breaks are
left to AFC's buffer fault detection (filament_error_sensitivity).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Klipper's G10 retracts only once until a G11, and nothing sends G11 on
this printer: the G10 in PRINT_WARMUP used up the retract, so PRINT_END
never retracted and the nozzle leaked while cooling down.
- _NOZZLE_RETRACT retracts and remembers the amount in the saved
variable nozzle_retract (survives restarts, capped at 15 mm).
PRINT_END retracts 5 mm, PRINT_WARMUP 2 mm, CANCEL_PRINT 5 mm plus the
park/PAUSE retract.
- _NOZZLE_UNRETRACT in PRINT_START pushes it back over the bucket before
the wipe.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- bd_pa_spoolman.cfg renames AFC's SET_SPOOL_ID, so klipper-macros.cfg
must be included after [include AFC/*.cfg]; the README said otherwise.
- install.sh links scripts/ as ~/printer_data/config/klipper-macros-scripts
so the scripts can be edited in Mainsail/Fluidd.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- RESUME is defined only in print/pause_resume.cfg; heat_soak.cfg's
duplicate replaced it (no unretract, no fan restore). It now runs
HEAT_SOAK_RESUME -> _RESUME_PRINT -> RESUME_BASE.
- PAUSE runs PAUSE_BASE first, then retracts and parks once (X20 Y345);
a parked flag makes resume undo only what PAUSE did.
- New _PRINT_CLEANUP shared by PRINT_END and CANCEL_PRINT: heaters incl.
iHEATER_OFF, fan, M221 S100, bdwidth off, mesh and skew cleared.
In PRINT_END it runs after RESTORE_GCODE_STATE so the flow reset sticks.
- Add CLAUDE.md and tools/effective_config.py.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>