BUG: Printer.toolhead.axis_maximum not reflecting currently active extruder

Basic Information:

Printer Model: Custom
MCU / Printerboard: RADDS
klippy.log not needed

Describe your issue:

Hey everyone. I have a question regarding the printer.objects, specifically printer.toolhead.axis_maximum
I have an IDEX printer with the following config:
[stepper_x]
position_endstop: -97
position_min: -105
position_max: 235

[dual_carriage]
axis: x
position_endstop: 327
position_min: -3
position_max: 335

Now, when I run a macro (for parking of the tool), I expect the value of printer.toolhead.axis_maximum to reflect the value of the current tool (T0 or T1), but I get the same values no matter if T0 or T1 is active. Since printer.toolhead.extruder returns the currently active extruder, I would surely expect printer.toolhead.axis_maximum to be dependent on the ACTIVE extruder, but no matter what, printer.toolhead.axis_maximum returns 235. Is this a bug or by design?

The values I’m looking for are not listed in printer.configfile.settings.extruder either. That surely must be a bug!?
Unfortunately, that results in a Move out of range at some point during my prints.
Running latest klipper v0.11.0-14-g69f76b3b

Who said that?

Also:

[stepper_x]
position_endstop: -97
position_min: -105
position_max: 235

[dual_carriage]
axis: x
position_endstop: 327
position_min: -3
position_max: 335

position_min and position max can’t be beyond the endstop positions.

That is why we need the klippy.log. The printer.cfg is inside and we can see if there is maybe a fault in the macros.

Thanks for your reply, Eddy. I posted the same question on discord group, but (again) got zero response :thinking:

Who said that?

That must have been me :slightly_smiling_face: I cleared the log, restarted firmware and did a G28 / MOVE_TO_CALIBRATION_CAM / T1 / MOVE_TO_CALIBRATION_CAM, here’s the output:
klippy.log (245.0 KB)

Also:

[stepper_x]
position_endstop: -97
position_min: -105
position_max: 235

[dual_carriage]
axis: x
position_endstop: 327
position_min: -3
position_max: 335

position_min and position max can’t be beyond the endstop positions.

In my understanding position_endstop needs to be in between the physical limits of my axis which is defined by position_min and position_max. Found this info in this post, quote It means the head can move even past the endstop for the given distance.
If I don’t add a padding to my endstop I get out-of-range warnings. It works. Not a problem so far.

What does printer.toolhead.axis_maximum refer to if not the physical limit? I am confused.

Sidenote: For now, I’m using
x_park = printer.configfile.settings.stepper_x.position_min for my left extruder T0 and
x_park = printer.configfile.config.dual_carriage.position_max for my right extruder T1.
But to me that seems wrong and workaroundish.

What a pitty I never get answers to my questions regarding klipper. Tried discord, now discourse - to no avail. I’m a big fan of Klipper Firmware, but community and support is lacking compared to other projects. Shame.

The printer.toolhead.axis_maximum is intended to be the maximum build range (irrespective of toolhead) in cartesian coordinate space. It was intended to be a useful reference for delta, polar, and similar complex kinematics where printer.configfile.xxx doesn’t provide that information.

Arguably, it is a bug that these static values don’t include the dual_carriage ranges. Someone would need to submit a PR with a fix if there is interest in resolving that.

-Kevin