I found a bug in the end_print macro. It is present in ALL of Zero’s firmwares. EDIT: Bugs also in SV06 ACE, SV08, and SV08 Max
Sovol intends to retract 4mm (with a little z hop in the middle) in this code block, which would reduce ooze at the end of the print and crud to deal with at the start of the next:
{% if printer['filament_switch_sensor filament_sensor'].enable == True and
printer['filament_switch_sensor filament_sensor'].filament_detected == True %}
{% if (printer.extruder.target != 0 and ... ) %}
G1 E-2 F2700
G1 E-2 Z0.2 F2400
{% endif %}
{% endif %}
the trouble is the if statement never returns true, even with the filament_sensor present, because it needs to be checking enableD, like the rest of the macros, not enablE which doesn’t exist anywhere.
simple fix:
{% if printer['filament_switch_sensor filament_sensor'].enabled == True and
printer['filament_switch_sensor filament_sensor'].filament_detected == True %}
{% if (printer.extruder.target != 0 and ... ) %}
G1 E-2 F2700
G1 E-2 Z0.2 F2400
{% endif %}
{% endif %}
Thanks to @scotte on Discord for also independently confirming this bug.
I had to read the manual because like most things in the 3D printing world I didn’t understand the fix… Not to mention that I periodically hit the end of print ooze, was driving me nuts as the clean cycle always left a string on the cleaning brush or worse dropped in on the build plate when I started a new print…
I’m looking into the other instances you mentioned. It is NOT a blind s/enabled/enabled across all instances.
on your line 278, with this bug, the “Please Insert filament in sensor!” guard never fires. It goes immediately into the else branch and runs the E30/E10 purge and goes into RESUME_BASE. This can safely be simply renamed.
Your line 302 is tricker. Right now resume is refused whenever the switch reads empty, even with the sensor disabled. It needs both a rename and an inverted logic to get the desired behavior. it should read:
{% if printer['filament_switch_sensor filament_sensor'].enabled == True and
printer['filament_switch_sensor filament_sensor'].filament_detected != True
%}
{action_respond_info("Please Insert filament in Sensor!")}
There are three sections, I’ll list them in order along with their stock 1.3.7 firmware line number. your placement may vary with later firmwares and/or your own customizations