Please Help with Repetier Server - Klipper - Filament Runout Sensor


I'm running a Artillery Sidewinder X1 with Klipper on my Repetier Server. Printings goes very well. But I have problems to setup the Filament Runout Sensor correct.

The probleme is:
If the Sensor is triggert, the printer stops and the nozzle goes to X300 Y300 and instantly goes back to the old position and continues printing.
I have no idea why. And I'm also not sure if its a problem with the RS or Klipper or my Gcode.
Maybe some can help please.

Thats my actual Klipper config. (I tried many versions)

[filament_switch_sensor my_sensor]
pause_on_runout: true
#insert_gcode: RESUME
pause_delay: 1
switch_pin: ar2
M83 ; relative extrusion mode
G1 E-3 F600 ; Retract a bit
G1 X300 Y300 F9000
M82 ; absolut extrusion mode


  • I'm not familiar with klipper meta language. But I think the key is what exactly does "PAUSE" do? Does it send a request for pause to server? If klipper does not signal a pause to server and just ignores PAUSE the print would just continue afterwards. A good message to server would be:
    // action:pause
  • Hi thanks for reply,

    I'm also not sure why I added PAUSE to gcode. I found this in any example. Its M76 to pause a print.
    I tried this to. But the printer goes instantly back and continues printing...
    Its strange, because in 1 of 4 "sensor triggers" it works correct. But most of the time its faulty....

    I tried this config to. But same behavior.

    I think I have to ask in a klipper forum, too.

    M83 ; relative extrusion mode
    G1 E-3 F600 ; Retract a bit to reduce oozing
    G1 X300 Y300 F9000

    And just this.
    G1 X300 Y300 F9000

    Thanks a lot
  • I don't think it works good if klipper handles pause. I think best is to send some message with M118 which klipper seems to support:

    You can add in server configuration->gcodes a listener rule for that message that then executes
    @pause Some message

    so server has full control. It might execute a few more commands until pause takes place if they are already in send buffer.

    You can also put the move to side in servers start pause script, so you get exactly what you want just controlled by server so you can still use manual control or change filament dialog.
  • That sounds perfect.
    But its crazy...The printer did exact the same thing....

    [filament_switch_sensor my_sensor]
    #Move filament runout sensor from TFT to X+ endstop pin. Umcomment all but this line if you want to use this
    pause_on_runout: false
    #insert_gcode: RESUME
    pause_delay: 2
    switch_pin: ar2
    M118 filament_runout

  • OK I think I get it to work by adding "@pause" to the g-code (as you wrote :D
    Thanks a lot.
    But there is a one little thing. By adding @pause to the gcode, the printer did first the "normal" pause routine and then the new "filament runout routine"
    How can I prevent this?
  • You have added @pause at the end I guess. @pause runs automatically it's own pause script. You should in fact not have any other code here especially not before @pause. @pause stores the last position so it resets speeds and position on continue. If you modify it before @pause the continue position is wrong. E and XY are changed. If it is in the pause script position was stored before so it will be undone. And since you should have a similar code in pause script there is no need to repeat it after calling @pause.
  • edited March 25
    No, I added @pause at the beginning, but with custom script after that.
    Anyway. I modified the regular RS Pause script to my needs and added only @pause to the listener and its working great!

    Thanks a lot!
  • Could you provide the final working version here? Would be great because I ran in the same issue.
Sign In or Register to comment.