Synchronous movement of MANUAL_STEPPER motors using SYNC=0

I’m trying to follow the documentation for using MANUAL_STEPPER motors. It says to use SYNC=0 for each command to allow the following commands to work in paralel. Although in practice, using SYNC=0 doesn’t seem to work at all.

Here is a macro I’m trying to implement:

[gcode_macro STAND_UP]
gcode:
  MANUAL_STEPPER STEPPER=leg_left MOVE=120 SYNC=0
  MANUAL_STEPPER STEPPER=leg_right MOVE=120 SYNC=0
  MANUAL_STEPPER STEPPER=leg_back MOVE=120 SYNC=0

When I try this, the “legs” in my case move one after the other in sequence, rather than simultaneously. Sometimes the last command doesn’t even run until you send something else.

Is there something I’m missing?

I’m trying to use Klipper to prototype a basic robotic mechanism using gcode macros.

The SYNC=0 feature is very limited. If you want to use it, you need to make sure any sequence of SYNC=0 commands is immediately followed by a move that contains SYNC=1. That is, as I understand it, you can’t leave the “parallel movements” unbounded.

-Kevin

Ok thanks for the suggestion. It still doesn’t work even with a SYNC=1 or even without any SYNC command following it. Everything still happens in sequence rather than in parallel with the macro below.

[gcode_macro STAND_UP]
gcode:
  MANUAL_STEPPER STEPPER=leg_left MOVE=120 SYNC=0
  MANUAL_STEPPER STEPPER=leg_right MOVE=120 SYNC=0
  MANUAL_STEPPER STEPPER=leg_back MOVE=120 SYNC=0
  MANUAL_STEPPER STEPPER=leg_back MOVE=121 #SYNC=1

This seems so close to being a really useful feature for prototyping stepper based projects that arent 3D printers. I think the documentation is misleading with regards to its actual usability.

Hey there, did you ever come up with a solution?

Unfortunately, I ran out of time and gave up on it. If I find a solution, I’ll try to post an update.

Any news for this topic ?
I am trying to manage two manual steppers to do something like homing synchronizingly but it didn’t work, however I noticed that two manual steppers can move synchronizingly only if both MOVE orders doesn’t include STOP_ON_ENDSTOP which is not very useful in my case

For the age of the thread (almost 3 years) I recommend to open a new thread.