If you happen to have a dual-gantry IQUEX (Independent Quad EXtruder) or ITEX (Independent Triple EXtruder) printer and want to test it under Klipper, I’d like to invite you to test a new experimental Klipper branch that adds a support of such printers under generic_cartesian kinematics. A general principle for configuring such printers is to define printer gantries as normal carriage and dual_carriage, e.g.
[carriage carriage_y0]
axis: y
...
[dual_carriage carriage_y1]
primary_carriage: carriage_y0
safe_distance: 50 # safe distance between y0 and y1
...
and then define carriages on these gantries as, e.g.
[carriage carriage_t0]
axis: x
gantry: carriage_y0
...
[carriage carriage_t1]
axis: x
gantry: carriage_y1
...
And then you can define dual carriages for them as needed, e.g.
[dual_carriage carriage_t2]
primary_carriage: carriage_t0
safe_distance: 70 # safe distance between t0 and t2
...
#If present:
#[dual_carriage carriage_t3]
#primary_carriage: carriage_t1
#safe_distance: 80 # safe distance between t1 and t3
...
Then these defined carriages can be enabled as primary or for copy and mirror modes via SET_DUAL_CARRIAGE as necessary, e.g.
SET_DUAL_CARRIAGE CARRIAGE=carriage_t0 MODE=PRIMARY
SET_DUAL_CARRIAGE CARRIAGE=carriage_t1 MODE=COPY
SET_DUAL_CARRIAGE CARRIAGE=carriage_t2 MODE=MIRROR
SET_DUAL_CARRIAGE CARRIAGE=carriage_t3 MODE=MIRROR
Also keep in mind that currently the first declared [carriage …] on each axis gets activated as primary by default when Klipper starts or after homing (e.g. in the example above, carriage t0 will be activated as primary because it was declared before t1). You may want to explicitly activate a specific carriage though, e.g. as a part of a homing procedure.
More complete configs with some useful macros can be found here for IQEX and here for ITEX printers.
Please note that I do not have such printers, so while I tested this branch to some degree by artificially adjusting my IDEX printer config, bugs are still quite possible, so exercise caution and be ready to hit emergency stop button if something goes wrong, especially in the beginning.