Yes , I agree the micro switch style works great, but not the motion style does not, But I guess I am the only one running more then one motion runout style. The shared pins are for the hot end , not the runout. With the motion style, you can see it trigger on the active extruder in Mainsail and that part works, but the system will only react to the T0 not T1 or T2 rigger, but it will show up as triggered on the display, but again, it does not trigger the pause with any extruder other then T0.
If anybody still having an Unable to infer active extruder stepper error when switching it back to the 1st extruder with PrusaSlicer, I’ve managed to get it working with latest SuperSlicer (v2.5.59) and latest klipper (v0.12.0-179-g434770ea).
The problem with PrusaSlicer is that slicer adds SET_PRESSURE_ADVANCE ADVANCE=0 SMOOTH_TIME=0 in wipe tower without EXTRUDER= section. In SuperSlicer this is added.
Here are my settings/gcodes/macros:
SuperSlicer
Extruders
Extruders are named (in slicer) extruder and extruder1 - same as in klipper config
Filament custom gcode
; Filament specific Start G-code
SET_PRESSURE_ADVANCE ADVANCE=0.392 SMOOTH_TIME=0.040 EXTRUDER={tool_name}
adjust pressure advance settings to your measurements
[gcode_macro T0]
gcode:
# Deactivate stepper in my_extruder_stepper
SYNC_EXTRUDER_MOTION EXTRUDER=extruder1 MOTION_QUEUE=
# Activate stepper in extruder
SYNC_EXTRUDER_MOTION EXTRUDER=extruder MOTION_QUEUE=extruder
[gcode_macro T1]
gcode:
SYNC_EXTRUDER_MOTION EXTRUDER=extruder MOTION_QUEUE=
# Activate stepper in my_extruder_stepper
SYNC_EXTRUDER_MOTION EXTRUDER=extruder1 MOTION_QUEUE=extruder
[gcode_macro ACTIVATE_EXTRUDER]
description: Replaces built-in macro for a X-in, 1-out extruder configuration SuperSlicer fix
rename_existing: ACTIVATE_EXTRUDER_BASE
gcode:
{% if 'EXTRUDER' in params %}
{% set ext = params.EXTRUDER|default(EXTRUDER) %}
{% if ext == "extruder"%}
{action_respond_info("Switching to extruder0.")}
T0
{% elif ext == "extruder1" %}
{action_respond_info("Switching to extruder1.")}
T1
{% else %}
{action_respond_info("EXTRUDER value being passed.")}
ACTIVATE_EXTRUDER_BASE EXTRUDER={ext}
{% endif %}
{% endif %}
[delayed_gcode activate_default_extruder]
initial_duration: 1
gcode:
ACTIVATE_EXTRUDER EXTRUDER=extruder
[gcode_macro PARK]
description: Park the head to change tool
gcode:
M117 Parking Head...
##### set defaults #####
{% set x = params.X|default(-15) %} #edit to your park position
{% set y = params.Y|default(0) %} #edit to your park position
{% set z = params.Z|default(20)|float %} #edit to your park position
{% set e = params.E|default(3) %} #edit to your retract length
##### save current x and y position ####
SAVE_GCODE_STATE NAME=park_state
##### calculate save lift position #####
{% set max_z = printer.toolhead.axis_maximum.z|float %}
{% set act_z = printer.toolhead.position.z|float %}
{% set lift_z = z|abs %}
{% if act_z < (max_z - lift_z) %}
{% set z_safe = lift_z %}
{% else %}
{% set z_safe = max_z - act_z %}
{% endif %}
##### end of definitions #####
G91
{% if printer.extruder.can_extrude|lower == 'true' %}
G1 E-{e} F2100
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
{% if "xyz" in printer.toolhead.homed_axes %}
G1 Z{z_safe}
G90
G1 X{x} Y{y} F6000
{% else %}
{action_respond_info("Printer not homed")}
{% endif %}
M117 Head Parked...
[gcode_macro FILAMENT_LOAD2]
description: Loads filament from splitter to hot end
gcode =
M117 LOADING...
G91
G1 E140.0 F900
G4 P900
G1 E20.0 F150
G90
G4 P3000
M117
[gcode_macro CONTINUE]
description: Continue's printing after tool change
gcode:
M117 Print Continuing...
##### set defaults #####
{% set speed = params.SPEED|default(120) %}
##### end of definitions #####
RESTORE_GCODE_STATE NAME=park_state MOVE=1 MOVE_SPEED={speed}
M117