# Emulating 6 Carriage IDEX by Syncing Steppers

**URL:** <https://klipper.discourse.group/t/emulating-6-carriage-idex-by-syncing-steppers/18391>\
**Category:** Features\
**Created:** [August 21, 2024, 3:41am UTC](https://klipper.discourse.group/t/emulating-6-carriage-idex-by-syncing-steppers/18391 "2024-08-21T03:41:04Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![bquirky](https://avatars.discourse-cdn.com/v4/letter/b/13edae/32.png) [@bquirky](https://klipper.discourse.group/u/bquirky)\
**Post date:** [August 21, 2024, 3:41am UTC](https://klipper.discourse.group/t/emulating-6-carriage-idex-by-syncing-steppers/18391/1 "2024-08-21T03:41:04Z")

</div>

Gday,

I’m a new Kipper user and I’m trying to setup a cartesian moving bed printer with 6 individual X axis carriages sharing a common Z axis.

Because IDEX currently only supports only two carriages I was hoping to emulate that functionality by using the Tool-Change Macro to issue a kind of Sync-Stepper command to selectively sync the carriage steppers to the motion planner’s X axis.

I have studied the documentation and the closest I can find is SYNC\_EXTRUDER\_MOTION however this only appears to function with extruder steppers.

Is there a undocumented way to Sync/Unsync steppers using gcode or macros during a print job?

Regards.

---

<div class="post-metadata">

**Author:** ![EddyMI3D](https://yyz2.discourse-cdn.com/free1/user_avatar/klipper.discourse.group/eddymi3d/32/1981_2.png) [@EddyMI3D](https://klipper.discourse.group/u/EddyMI3D)\
**Post date:** [August 21, 2024, 12:42pm UTC](https://klipper.discourse.group/t/emulating-6-carriage-idex-by-syncing-steppers/18391/2 "2024-08-21T12:42:44Z")

</div>

Hello @bquirky !

IDEX usually is two separate installations for X-movement and extruders. Do you talk about that?

---

<div class="post-metadata">

**Author:** ![bquirky](https://avatars.discourse-cdn.com/v4/letter/b/13edae/32.png) [@bquirky](https://klipper.discourse.group/u/bquirky)\
**Post date:** [August 22, 2024, 1:39am UTC](https://klipper.discourse.group/t/emulating-6-carriage-idex-by-syncing-steppers/18391/3 "2024-08-22T01:39:04Z")

</div>

yes the current IDEX implementation seems to be limited to two X axis Carriages,

My system has 6 independent X axis carriage’s (each with its own extruder) with 6 separate steppers on six separate motor drivers.

My goal is to have each carriage/extruder assigned as T0-T6

I want to achieve this by having a Macro selectively Sync the relevant X axis stepper with the motion planner’s “Real” x axis in the same way that SYNC\_EXTRUDER\_MOTION functions after preforming the necessary parking and unparking moves via other means.

---

<div class="post-metadata">

**Author:** ![EddyMI3D](https://yyz2.discourse-cdn.com/free1/user_avatar/klipper.discourse.group/eddymi3d/32/1981_2.png) [@EddyMI3D](https://klipper.discourse.group/u/EddyMI3D)\
**Post date:** [August 22, 2024, 5:24am UTC](https://klipper.discourse.group/t/emulating-6-carriage-idex-by-syncing-steppers/18391/4 "2024-08-22T05:24:36Z")

</div>

> [@bquirky](#):
>
> My system has 6 independent X axis carriage’s (each with its own extruder) with 6 separate steppers on six separate motor drivers.

You need a lot of parking space on each side of the X-axes.

> [@bquirky](#):
>
> My goal is to have each carriage/extruder assigned as T0-T6

That makes 7.

---

<div class="post-metadata">

**Author:** ![bquirky](https://avatars.discourse-cdn.com/v4/letter/b/13edae/32.png) [@bquirky](https://klipper.discourse.group/u/bquirky)\
**Post date:** [August 22, 2024, 5:53am UTC](https://klipper.discourse.group/t/emulating-6-carriage-idex-by-syncing-steppers/18391/5 "2024-08-22T05:53:03Z")

</div>

yes you are correct T5 rather.

Its less parking space than you would think. because 3 of carriages are mounted on a 2nd rail and can pass in-front of each other the maximum number of carriages that ever need to be parked on a side is 2.

the missing piece is the ability to select which of the X-Steppers is receives the step signals from the motion planner. the rest is just forced moves and offsets handled by macros

---

<div class="post-metadata">

**Author:** ![koconnor](https://avatars.discourse-cdn.com/v4/letter/k/aca169/32.png) [@koconnor](https://klipper.discourse.group/u/koconnor)\
**Post date:** [September 1, 2024, 5:59pm UTC](https://klipper.discourse.group/t/emulating-6-carriage-idex-by-syncing-steppers/18391/6 "2024-09-01T17:59:43Z")

</div>

It is not currently possible to activate/deactivate X carriages via g-code commands.

There has been some discussion about extending support for things like this at [New generic\_cartesian kinematics (incl. CoreXYU/CoreXYUV, generic IDEX and AWD)](https://klipper.discourse.group/t/new-generic-cartesian-kinematics-incl-corexyu-corexyuv-generic-idex-and-awd/17510)

-Kevin

---

<div class="post-metadata">

**Author:** ![dmbutyugin](https://avatars.discourse-cdn.com/v4/letter/d/e0b2c6/32.png) [@dmbutyugin](https://klipper.discourse.group/u/dmbutyugin)\
**Post date:** [September 1, 2024, 6:39pm UTC](https://klipper.discourse.group/t/emulating-6-carriage-idex-by-syncing-steppers/18391/7 "2024-09-01T18:39:28Z")

</div>

@bquirky You may be able to use `SET_STEPPER_KINEMATICS` command that is part of the proposed `generic_kinematics` that Kevin linked above. Note that this is not part of the official Klipper yet, but it is under testing now, so you could try it as well (see the first message in the thread linked by Kevin). Basically, you’d define `[carriage x]`, `[carriage y]` and `[carriage z]` each, and then 6 steppers for X and corresponding Y and Z stepper(s) like

```auto
[printer]
kinematics: generic_cartesian
...

[stepper y]
kinematics: y
...

[stepper z]
kinematics: z
...

[stepper x]
kinematics: x
...

[stepper x1]
kinematics: x
...

[stepper x2]
kinematics: x
...

[stepper x3]
kinematics: x
...

[stepper x4]
kinematics: x
...

[stepper x5]
kinematics: x
...

[extruder]
...
[extruder1]
...
[extruder2]
...
...

```

and then in the macros you could do

```auto
[gcode_macro ACTIVATE_X]
gcode:
  ACTIVATE_EXTRUDER EXTRUDER=extruder
  SET_STEPPER_KINEMATICS stepper='stepper x' KINEMATICS=x
  SET_STEPPER_KINEMATICS stepper='stepper x1' KINEMATICS=
  SET_STEPPER_KINEMATICS stepper='stepper x2' KINEMATICS=
  ...

[gcode_macro ACTIVATE_X1]
gcode:
  ACTIVATE_EXTRUDER EXTRUDER=extruder1
  SET_STEPPER_KINEMATICS stepper='stepper x1' KINEMATICS=x
  SET_STEPPER_KINEMATICS stepper='stepper x' KINEMATICS=
  SET_STEPPER_KINEMATICS stepper='stepper x2' KINEMATICS=
  ...
...

```

---

<div class="post-metadata">

**Author:** ![bquirky](https://avatars.discourse-cdn.com/v4/letter/b/13edae/32.png) [@bquirky](https://klipper.discourse.group/u/bquirky)\
**Post date:** [September 2, 2024, 10:50am UTC](https://klipper.discourse.group/t/emulating-6-carriage-idex-by-syncing-steppers/18391/8 "2024-09-02T10:50:06Z")

</div>

Thanks guys!

ill go through and study the alternative kinematics linked above and report back once I have a handle on it

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/klipper/original/1X/64419bf2aac6639e6ef5cef200dcd456b0a01ac3.png) [@system](https://klipper.discourse.group/u/system)\
**Post date:** [November 1, 2024, 10:50am UTC](https://klipper.discourse.group/t/emulating-6-carriage-idex-by-syncing-steppers/18391/9 "2024-11-01T10:50:20Z")

</div>

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.
