Printer Model: any
MCU / Printerboard: any
Host / SBC any
klippy.log not needed
This is a basic klipper issue.
When you home an axes the axis is appended to the “homed_axes”
So you can run
G28 X
then use
{action_respond_info(printer.toolhead.homed_axes)}
and you will get a report that X is homed
do the same for each motor you will get XYZ
If you disable ALL steppers using M84 or M18 then run the same command it will be a blank return as NONE of the steppers are in a ‘Known state’
However if you use
SET_STEPPER_ENABLE stepper=stepper_x enable=0
for example, then ask which axes are homed you will STILL GET XYZ
So at the end of my print if I turn off X Y E and leave my Z enabled just in case it decides to drop, then run another print directly after this, the printer will then assume XYZ is all still homed and cause the motor to go haywire as the kinematics are in an unknown state but the flags make it think its in a known state!!
I have combed through some files to try and find where it even appends each axes but it just isn’t in my mind tonight to find it!!!
it wouldn’t be too hard to remove each axes with loading the “homed_axes” list and finding if that motor is listed and removing it.
Log files are not about “bugs in your code”, they provide useful information about the problem you’ve encountered (including “backend issues in klipper”) and the context in which you encountered it. In all cases, including yours, despite your belief that you’re special and the rules don’t apply.
I fully second @flowerysong’s input. In general, no developer will take a look at such a report without a klippy.log showing it and providing insights to the circumstances that might have led to the unwanted behavior.
In this case neither is needed though: The behavior is intended and documented like this. See SET_STEPPER_ENABLE
Ok if intended, why not have a single stepper disable option for real that removes the flag from homed_axes?
Many folks with sensors will home the printer and disable X and Y and leave Z on to be able to move the print head around the machine to level the bed.
Many MANY end gcode scripts will disable all steppers but Z in case the Z drops when disabled to prevent the nozzle from crashing into a print.
So if someone uses klipper they can’t have this functionality that has been around forever?
I am pretty versed in coding, just new to klipper so have not dug that deep yet into the code. I guess one day when I get time I’ll look into adding a prober M84 to disable and remove flags !