printer switches off stepper motors @pause


My problem:

Marlin firmware - Beltprinter - No Hardware Y-Endstop.

I am not sure where it comes from. However, I think it's in the printer's control, because I didn't find anything in the log file that causes the stepper motors to turn off on the Repetier side.
When I send a M17 it is not enough, because 5 seconds later the stepper motors are switched off.

My solution:

I thought I would write a loop that sends an M17 with 2 seconds pause until I change the condition to a value so that the loop is terminated.

However, loops that are longer than 30 seconds are automatically terminated (as the doku says). Now I was thinking of splitting it into two loops that trigger each other.

But I don't think this is a nice alternative or is there no other choice?

I would be grateful for any answer

with kind regards


  • First, can't you disable timeout in firmware? That is what triggers motor off normally. Would be great if it has a option to prevent this for y like it is normally possible for z.

    Anyhow, server solution is easy. Do not use a while, but 
    @timedCall name timeoutMS function_name
    In the function send M17 and if you are still pause run inside function the next @timedCall. This is important to not get exploding number of this, also giving all same name would replace existing timed calls.

    So since you exit the function, but timed call is still active this is not within the 30sec rule and can last as long as you want/need.

  • thank you for your quick reply.

    If I see it correctly, it is an M85 at Marlin. However, if I go below the time here, the printer goes into an error message and I have to reset it.

    Now I have followed your advice and tried it um zusetzen. According to console it looks good. What does the expert think?

    ------before Print Job Script-----

    @set global.endloop {{0}}

    ------At pause Script------

    @timedCall StoptimeOut 2000 StopStepperOff
      @func StopStepperOff start
      @set global.endloop {{0}}
      @if {{global.endloop<1}}
          @timedCall StoptimeOut 2000 StopStepperOff
          @deleteTimedCall StoptimeOut

    ------before restart script------

    @set global.endloop {{1}}

    Unfortunately, the printer reports "no move" after a while and switches off the steppers again. Do you have another idea what I could do?

    Or do you think a M85 S{5Days} is more useful?

    PS: Console excerpt

    Send:17:07:22.756: @call StopStepperOff
    Send:17:07:22.756: N854 M17
    Send:17:07:24.765: @call StopStepperOff
    Send:17:07:24.766: N855 M17
    Send:17:07:26.778: @call StopStepperOff
    Send:17:07:26.779: N856 M17
    Send:17:07:28.787: @call StopStepperOff
    Send:17:07:28.788: N857 M17
    Send:17:07:29.037: M117 ETA 16:04:47 day 1
    Send:17:07:30.798: @call StopStepperOff

  • Sounds like M17 does not reset stepper timer as you see your function gets called every 2 seconds.
    So extending using M85 S432000 is better solution as it just works. You could increase it on pauses and reduce on pause end if you like it lower in other places.
  • edited August 2022
    it can be so simple. I was about to add the command that when a print is canceled, it turns off the steppers and saw that there is the M18 command.

    M18 S[Stepper inactivity timeout in secounds]

    It can be so simple. Have now set this value to 432000 seconds....should then even in case of illness still remain in place :-D

    Now it works......but I have dealt with the functions ;-)
Sign In or Register to comment.