Repository navigation
Conversation
|
Thank you for your contribution. I see a few problems with this PR:
|
|
Hey, it looks like there are still some of the bugs I mentioned earlier open in this pull request and the new design with every file that has a And same as the other changes you had in before, the axis twist compensation needs to be in a separate PR |
a7a5377 to
933109c
Compare
|
A few things still worth addressing:
Overall heading in a good direction 👍 |
|
Looking almost ready. The vent countdown loop, configurable tach thresholds, and include order docs are all solid improvements. A few things left:
|
|
Hey, thanks for the continued work on this! Before the next push, could we step back and align on the scope of this PR? It's grown quite a bit, we're at 80+ files and ~4,500 lines now, and it's getting hard to review as a single unit. Right now the PR bundles several independent changes alongside the aux fan feature:
Each of these would be easier-to-review PR on its own. Please split them out so this PR stays focused on the aux fan support? That'll make it much easier to get through review and toward a merge. |
|
Looking at the changes to the installer and README (the "What makes this fork different" section, the version bump to 1.5, the post-update orchestrator), it seems like this may have evolved into its own fork of Klippain? If so, should we close this PR out, or is the aux fan feature still intended for upstream? |
splittiing the work currently aux fan cooling intended to be used on the upstream |
d810daf to
24ddba9
Compare
Add an independent secondary part cooling fan (AUX_FAN) with:
- Hardware configs: aux_fan.cfg (basic) and aux_fan_tachometer.cfg
(with tachometer monitoring)
- fan_bridge.cfg: OrcaSlicer M106 P2 / M107 P2 bridge via
rename_existing, included from part_fan.cfg and toolhead boards
- Macros: START_AUX_FAN, STOP_AUX_FAN, tachometer safety loop
(proportional min_rpm scaling with configurable poll interval)
- Print flow integration:
- START_PRINT: chamber venting with status messages, aux fan stop
from previous run-down, tach monitoring start
- END_PRINT/CANCEL_PRINT: post-print run-down with configurable
speed/time, tach re-enabled before fan start
- _MODULE_HEATSOAK_BED: aux fan for heat spreading, stopped at end
- M84: aux fan stop removed (now in end_print/cancel_print)
- Startup validation (_INIT_CHECKFANCONF): detects missing
fan_bridge.cfg when [fan] + gcode M106 exist but M106.1 absent
- Config check CI: standard + tachometer variants, lint_jinja.py,
test_fan_conf_check.py for M106 fallback logic
- Variables: aux_fan_enabled, aux_fan_name, aux_fan_tach_enabled,
aux_fan_tach_poll_interval, aux_fan_tach_min_rpm_max/floor,
aux_fan_tach_max_consecutive_stops, aux_fan_vent_temp/speed/time,
aux_fan_vent_status_interval, aux_fan_soak_speed,
aux_fan_speed_on_end_print, aux_fan_time_on_end_print
24ddba9 to
e1193a9
Compare
|
The split looks good, a few small things left open that I can see:
|
Summary
Adds an independently controlled secondary part cooling fan (e.g. the OrcaSlicer "Auxiliary Part Cooling Fan", addressed as
M106 P2/M107 P2), complementing the existingPART_FAN.Changes
config/hardware/fans/):aux_fan.cfgandaux_fan_tachometer.cfg(the latter addsAUX_FAN_TACHOmonitoring with the same safety checks as the base fans). Wired pins use the newAUX_FAN/AUX_FAN_TACHOboard_pins aliases.macros/hardware_functions/aux_fan.cfg):START_AUX_FAN/STOP_AUX_FAN, a delayed stop macro, the tachometer background check loop, and anM106/M107override that forwardsP2to the aux fan and keepsP0/ bare calls fully compatible with existing slicers.start_print: vent the chamber if it is above the configured temperature before heating, and optionally spread heat during the soak.end_print/cancel_print: optional post-print run-down to cool the bed faster and help recirculating filters/exhaust.control: clean shutdown onPRINT_STOP.variable_aux_fan_*settings invariables.cfg, include lines inprinter.cfg, andAUX_FAN/AUX_FAN_TACHOpinout documentation.Validation
Added a CI pipeline:
tests/lint_jinja.pysyntax-checks every templated block with Klipper's own Jinja2 environment, andtests/config_check.pyassembles a full reference config and loads it with a real klippy (standard and aux-fan-tachometer variants), run by.github/workflows/validate.yml.Verified locally: 279/279 templates pass, both klippy config loads pass (only the expected "no MCU connected" step fails), and an injected broken template fails the checks.
Enabling
Uncomment
[include config/hardware/fans/aux_fan.cfg](oraux_fan_tachometer.cfg) inuser_templates/printer.cfg, defineAUX_FAN(and optionallyAUX_FAN_TACHO) pins inmcu.cfg, and tune thevariable_aux_fan_*settings inuser_templates/variables.cfg.