Problem hybrid-corexy kinematic

Basic Information:

Printer Model: fully customized
MCU / Printerboard: BTT Octopus
klippy (1).log (440.7 KB)

Describe your issue:

Hello everyone,
I am building a fully customized Idex printer with the hybrid-corexy kinematics. Now I discovered a problem with the movements. I can’t get all the axes to move in the right direction.
The X motors need to move when Y is changed to keep the print head in the same position. I set the direction pins so that Y moves to the back and X moves to the right (origin in the front left). The problem is that when I set it this way, the X motor spins in the wrong direction and therefore moves the printhead during the Y movement. If I invert X or Y, the printhead stays in position, but the origin is in the wrong corner.
Does anyone have any idea how to fix this?

I think a solution should be to tell Klipper to change the X direction it needs to compensate for the Y movements (not generally the X direction!). But I don’t know if this is possible.


See Hybrid Corexy seems to need inversion

I am sitting with the exact issue you are having. Sineos has linked you to my post. I am currently looking into getting a kinematic sorted out for a single head hybrid corexy. I am looking at getting logic inversion implemented but no luck so far. that is literally the only thing I can find that is missing from klipper. Using the !dir setting changes motor direction and logic, these are supposed to be separate individually definable settings. I feel like the kinematic that is in the repo is for one machine only. I will come back and let you know if I get it to do what I want.

Thanks for the quick answer. Do I understand correctly that I can change the underlying Python script that defines the hybrid Corexy kinematics?

If this is the case, do you happen to know what needs to be changed? I don’t understand the Python script.

Thanks for the information. If I’m finding a solution I’m letting you know.

that will be one of a few things that needs to happen

Unfortunately I cannot offer any more guidance. This kinematics has been contributed here: kinematics: Add hybrid-corexy and hybrid-corexz by Tircown · Pull Request #4229 · Klipper3d/klipper · GitHub
Likely it has received very little use and testing so far.

I think I have found a solution. If you change the underlying kinematik python program you can quite easily change the direction. I’ve got it working now, but I can only do limited testing as I haven’t installed the limit switches yet.


  • SSH to yout Klipper Device
  • “cd /klipper/klippy/kinematics”
  • “sudo nano”
    there you need to change line 24 and 39. Simply change “-” → “+” or “+” → “-”
    → self.rails[0].setup_itersolve(‘corexy_stepper_alloc’, b’+')
    In addition you need to change line 66, “+” → “-”
    → return [x_factor * (pos[0] - pos[1]), y_factor * pos[1], pos[2]]
  • reboot

This fixed my problem. I hope someone can try this fix and see if it is a reliable solution. If this solution works reliably it would be great if this could just be an option in the config to choose from.

Thanks everyone for your input and special thanks to JConradie for the correct hint.

EDIT: you need to change one more thing, aded it up there. If not the position of the toolhead is wrong resulting in lots of trouble when homing and doing Z.Tilt…

1 Like

Yo, thanks for that man. solved my problem too. I am going to check if I can make an option so this can be done directly in the printer.cfg. Little less of a run around then.

1 Like

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