Wiring and Configuration
Buffer Internal Wiring Diagram

Installation Video
Buffer Connection to Mainboard and Configuration Method
- The
MMU Tool Boardshown in the wiring examples below is for reference purposes only. When using in practice, you need to:
- Connect the cables directly to the limit switch signal ports of your KLIPPER mainboard.
- In the configuration file (such as
printer.cfg), modify and match the port number configuration to ensure proper functionality.
- Basic Functionality
- Using Trigger Buffer for Feeding or Retracting
- Using MDM Sensor Wiring and Configuration
-
This buffer integrates filament runout detection and manual control functions:
-
Filament Runout Detection (FILAMENT_SENSOR)
- Signal Output: After a filament runout is detected, the buffer's
PB15pin outputs a low-level signal.
- Signal Output: After a filament runout is detected, the buffer's
-
Feed Button (FEED)
- Single Press: The buffer's
PA2pin outputs a high-level pulse signal for 3 seconds. - Long Press: The buffer will perform a continuous feeding action until the button is released.
- Single Press: The buffer's
-
Retract Button (RETRACT)
- Single Press: The buffer's
PA3pin outputs a low-level pulse signal for 3 seconds. - Long Press: The buffer will perform a continuous retraction action until the button is released.
- Single Press: The buffer's
Wiring Guide
-
When using the above functions, please refer to the following wiring diagram:

- The
MMU Tool Boardshown in the diagram is for reference purposes only. When using in practice, you need to:
- Connect the cables directly to the limit switch signal ports of your KLIPPER mainboard.
- In the configuration file (such as
printer.cfg), modify and confirm the port number configuration forPD3,PD4, andPD5to ensure proper functionality.
Configuration Reference
- MMU Tool Board Reference Configuration
- Mainboard Reference Configuration
[mcu LLL_PLUS]
serial:/dev/serial/by-id/usb-Klipper_stm32h723xx_12345-if00
[filament_switch_sensor Material_breakage_detection]
pause_on_runout: true
switch_pin: ^LLL_PLUS:PD3 # Replace with your actual pin
runout_gcode:
PAUSE
RESPOND MSG="material shortage"
insert_gcode:
RESPOND MSG="Detected"
event_delay: 1.0
pause_delay: 0.5
[gcode_button Load_consumables]
pin:^LLL_PLUS:PD4 # Replace with your actual pin connected to the feed button
press_gcode:
_Load_consumables
[gcode_button RETRACT]
pin:^!LLL_PLUS:PD5 # Replace with your actual pin connected to the retract button
press_gcode:
_RETRACT
[gcode_macro CONFIG]
description: Extruder configuration
variable_extruder_temp: 200 ## Temperature
variable_extruder_length: 50 ## Length
variable_extruder_speed: 5 ## Speed (mm/s)
variable_extruder_time: 10 ## Time (s)
gcode:
[gcode_macro _Load_consumables] ## Feeding
gcode:
{% set temp = printer["gcode_macro CONFIG"].extruder_temp %}
{% set length = printer["gcode_macro CONFIG"].extruder_length %}
{% set speed = printer["gcode_macro CONFIG"].extruder_speed %}
{% set time = printer["gcode_macro CONFIG"].extruder_time %}
{% set feedrate = speed * 60 %}
RESPOND MSG="Heat the extruder to {temp} °C"
RESPOND MSG="Heat the extruder to {temp} °C"
M109 S{temp}
G4 P{time *1000}
RESPOND MSG="Start feeding {length}mm"
RESPOND MSG="Start feeding {length}mm"
G91 ; Relative coordinate mode
G1 E{length} F{feedrate}
G90 ; Absolute coordinate mode
RESPOND MSG="Extrusion completed"
RESPOND MSG="Extrusion completed"
M104 S0
[gcode_macro _RETRACT] ## Retraction
gcode:
{% set temp = printer["gcode_macro CONFIG"].extruder_temp %}
{% set length = printer["gcode_macro CONFIG"].extruder_length %}
{% set speed = printer["gcode_macro CONFIG"].extruder_speed %}
{% set time = printer["gcode_macro CONFIG"].extruder_time %}
{% set feedrate = speed * 60 %}
RESPOND MSG="Heat the extruder to {temp} °C"
RESPOND MSG="Heat the extruder to {temp} °C"
M109 S{temp}
G4 P{time *1000}
RESPOND MSG="Start material return {length}mm"
RESPOND MSG="Start material return {length}mm"
G91 ; Relative coordinate mode
G1 E-{length} F{feedrate}
G90 ; Absolute coordinate mode
RESPOND MSG="Return of materials completed"
RESPOND MSG="Return of materials completed"
M104 S0
[filament_switch_sensor Material_breakage_detection]
pause_on_runout: true
switch_pin: ^PD3 # Replace with your actual pin
runout_gcode:
PAUSE
RESPOND MSG="material shortage"
insert_gcode:
RESPOND MSG="Detected"
event_delay: 1.0
pause_delay: 0.5
[gcode_button Load_consumables]
pin:^PD4 # Replace with your actual pin connected to the feed button
press_gcode:
_Load_consumables
[gcode_button RETRACT]
pin:^!PD5 # Replace with your actual pin connected to the retract button
press_gcode:
_RETRACT
[gcode_macro CONFIG]
description: Extruder configuration
variable_extruder_temp: 200 ## Temperature
variable_extruder_length: 50 ## Length
variable_extruder_speed: 5 ## Speed (mm/s)
variable_extruder_time: 10 ## Time (s)
gcode:
[gcode_macro _Load_consumables] ## Feeding
gcode:
{% set temp = printer["gcode_macro CONFIG"].extruder_temp %}
{% set length = printer["gcode_macro CONFIG"].extruder_length %}
{% set speed = printer["gcode_macro CONFIG"].extruder_speed %}
{% set time = printer["gcode_macro CONFIG"].extruder_time %}
{% set feedrate = speed * 60 %}
RESPOND MSG="Heat the extruder to {temp} °C"
RESPOND MSG="Heat the extruder to {temp} °C"
M109 S{temp}
G4 P{time *1000}
RESPOND MSG="Start feeding {length}mm"
RESPOND MSG="Start feeding {length}mm"
G91 ; Relative coordinate mode
G1 E{length} F{feedrate}
G90 ; Absolute coordinate mode
RESPOND MSG="Extrusion completed"
RESPOND MSG="Extrusion completed"
M104 S0
[gcode_macro _RETRACT] ## Retraction
gcode:
{% set temp = printer["gcode_macro CONFIG"].extruder_temp %}
{% set length = printer["gcode_macro CONFIG"].extruder_length %}
{% set speed = printer["gcode_macro CONFIG"].extruder_speed %}
{% set time = printer["gcode_macro CONFIG"].extruder_time %}
{% set feedrate = speed * 60 %}
RESPOND MSG="Heat the extruder to {temp} °C"
RESPOND MSG="Heat the extruder to {temp} °C"
M109 S{temp}
G4 P{time *1000}
RESPOND MSG="Start material return {length}mm"
RESPOND MSG="Start material return {length}mm"
G91 ; Relative coordinate mode
G1 E-{length} F{feedrate}
G90 ; Absolute coordinate mode
RESPOND MSG="Return of materials completed"
RESPOND MSG="Return of materials completed"
M104 S0
-
Requires firmware updated to
V1.1.0 -
The buffer can automatically perform continuous feeding by detecting the following pin signal states:
-
Automatic Feeding: When a low-level signal is detected on pin
PB5, the buffer will perform continuous feeding. -
Automatic Retraction: When a low-level signal is detected on pin
PB6, the buffer will perform continuous retraction.
Wiring Guide
- When using the above functions, please refer to the following wiring diagram:

- The
MMU Tool Boardshown in the diagram is for reference purposes only. When using in practice, you need to:
- Connect the cables directly to the limit switch signal ports of your KLIPPER mainboard.
- In the configuration file (such as
printer.cfg), modify and confirm the port number configuration forPB5andPB6to ensure proper functionality.
Configuration Reference
- Add the configuration
- Please note this configuration must be added after the basic functionality configuration is in place.
- MMU Tool Board Reference Configuration
- Mainboard Reference Configuration
[output_pin _feeding]
pin:LLL_PLUS:PD6 # Replace with your actual pin
shutdown_value: 0
value:1
[output_pin _material_return]
pin:LLL_PLUS:PD7 # Replace with your actual pin
shutdown_value: 0
value:1
[gcode_macro Buffer_feeding] ## Buffer feeding
gcode:
{% set temp = printer["gcode_macro CONFIG"].extruder_temp %}
{% set length = printer["gcode_macro CONFIG"].extruder_length %}
{% set speed = printer["gcode_macro CONFIG"].extruder_speed %}
{% set time = printer["gcode_macro CONFIG"].extruder_time %}
{% set feedrate = speed * 60 %}
RESPOND MSG="Heat the extruder to {temp} °C"
RESPOND MSG="Heat the extruder to {temp} °C"
M109 S{temp}
RESPOND MSG="Start feeding {length}mm"
RESPOND MSG="Start feeding {length}mm"
SET_PIN PIN=_feeding VALUE=0
G91 ; Relative coordinate mode
G1 E{length} F{feedrate}
G90 ; Absolute coordinate mode
G4 P{time *1000}
RESPOND MSG="Extrusion completed"
RESPOND MSG="Extrusion completed"
SET_PIN PIN=_feeding VALUE=1
M104 S0
[gcode_macro RBuffer_material_return] ## Buffer retraction
gcode:
{% set temp = printer["gcode_macro CONFIG"].extruder_temp %}
{% set length = printer["gcode_macro CONFIG"].extruder_length %}
{% set speed = printer["gcode_macro CONFIG"].extruder_speed %}
{% set time = printer["gcode_macro CONFIG"].extruder_time %}
{% set feedrate = speed * 60 %}
RESPOND MSG="Heat the extruder to {temp} °C"
RESPOND MSG="Heat the extruder to {temp} °C"
M109 S{temp}
RESPOND MSG="Start material return {length}mm"
RESPOND MSG="Start material return {length}mm"
SET_PIN PIN=_material_return VALUE=0
G91 ; Relative coordinate mode
G1 E-{length} F{feedrate}
G90 ; Absolute coordinate mode
G4 P{time *1000}
RESPOND MSG="Return of materials completed"
RESPOND MSG="Return of materials completed"
SET_PIN PIN=_material_return VALUE=1
M104 S0
[output_pin _feeding]
pin:PD6 # Replace with your actual pin
shutdown_value: 0
value:1
[output_pin _material_return]
pin:PD7 # Replace with your actual pin
shutdown_value: 0
value:1
[gcode_macro Buffer_feeding] ## Buffer feeding
gcode:
{% set temp = printer["gcode_macro CONFIG"].extruder_temp %}
{% set length = printer["gcode_macro CONFIG"].extruder_length %}
{% set speed = printer["gcode_macro CONFIG"].extruder_speed %}
{% set time = printer["gcode_macro CONFIG"].extruder_time %}
{% set feedrate = speed * 60 %}
RESPOND MSG="Heat the extruder to {temp} °C"
RESPOND MSG="Heat the extruder to {temp} °C"
M109 S{temp}
RESPOND MSG="Start feeding {length}mm"
RESPOND MSG="Start feeding {length}mm"
SET_PIN PIN=_feeding VALUE=0
G91 ; Relative coordinate mode
G1 E{length} F{feedrate}
G90 ; Absolute coordinate mode
G4 P{time *1000}
RESPOND MSG="Extrusion completed"
RESPOND MSG="Extrusion completed"
SET_PIN PIN=_feeding VALUE=1
M104 S0
[gcode_macro RBuffer_material_return] ## Buffer retraction
gcode:
{% set temp = printer["gcode_macro CONFIG"].extruder_temp %}
{% set length = printer["gcode_macro CONFIG"].extruder_length %}
{% set speed = printer["gcode_macro CONFIG"].extruder_speed %}
{% set time = printer["gcode_macro CONFIG"].extruder_time %}
{% set feedrate = speed * 60 %}
RESPOND MSG="Heat the extruder to {temp} °C"
RESPOND MSG="Heat the extruder to {temp} °C"
M109 S{temp}
RESPOND MSG="Start material return {length}mm"
RESPOND MSG="Start material return {length}mm"
SET_PIN PIN=_material_return VALUE=0
G91 ; Relative coordinate mode
G1 E-{length} F{feedrate}
G90 ; Absolute coordinate mode
G4 P{time *1000}
RESPOND MSG="Return of materials completed"
RESPOND MSG="Return of materials completed"
SET_PIN PIN=_material_return VALUE=1
M104 S0
Function Overview
- When used with the
FLY-MDMfilament runout/blockage sensor, the buffer can detect extruder blockages. - Requires firmware updated to
V1.1.0.
Hardware Wiring
- The signal wire of the buffer should be connected to any unused general-purpose digital output pin on the mainboard, for example:
- Connect the
STEPpin of the buffer (PA5) to one of the mainboard'sPWM,RGB, or12864pins. Note that the servo port of the BL-Touch can also be used. - Connect the
DIRpin of the buffer (PB11) to a limit switch port on the mainboard.
-
This connection is used to monitor the extruder motor's operational status, which is key to detecting blockages.
-
When using the above functionality, please refer to the wiring diagram below:

- The
MMU Tool Boardshown in the diagram is for reference purposes only. When using in practice, you need to:
- Connect the cables directly to the limit switch signal ports of your KLIPPER mainboard.
- In the configuration file (such as
printer.cfg), modify and confirm the port number configuration forPD3andPC0to ensure proper functionality.
- MDM Reference Wiring

Configuration Reference
- Add configuration
- Please note this configuration must be added after the basic functionality configuration is in place.
- Please ensure that the
STEPandDIRpins in the configuration below match the pins you are using. - Also, other configurations must match your extruder configuration, or blockage detection may fail.
- MMU Tool Board Reference Configuration
- Mainboard Reference Configuration
[extruder_stepper my_extra_stepper]
extruder = extruder
step_pin: LLL_PLUS:PE10
dir_pin: LLL_PLUS:PD4
rotation_distance: 17.472
gear_ratio:50:10
microsteps:16
full_steps_per_rotation: 200
[extruder_stepper my_extra_stepper]
extruder = extruder
step_pin: PE10
dir_pin: PD4
rotation_distance: 17.472
gear_ratio:50:10
microsteps:16
full_steps_per_rotation: 200
Buffer Parameter Configuration
Get Serial Tool Assistant- Connect the module to your computer using a USB cable, open the serial tool assistant, select the corresponding COM port, set the baud rate to 115200, and click Connect.

- If your extruder configuration does not include
gear_ratio, set bothdriver gear teethanddriven gear teethto1.
Parameter Description
| Function Description | Configuration Command (Please enter in the serial tool) | Default Value | Unit | Notes |
|---|---|---|---|---|
| View all current parameters | Loading... | - | - | Send command to read all current configurations. |
| Set motor pulse count | Loading... | 916 | - | Set the number of pulses required for the motor to move per millimeter. |
| Set encoder detection distance | Loading... | 1.73 | mm | Set the filament movement distance represented by each encoder signal. |
| Set run timeout duration | Loading... | 60000 | ms | Set the auto-stop time in an untriggered state to prevent continuous extrusion. |
| Set error scaling factor | Loading... | 2.0 | - | Allowed error = encoder value X scale value.Example: 1.73 * 2.0 = 3.46 mm |
| Set speed control command | Loading... | 260 | mm | Set the buffer operating speed, maximum 600 (revolutions/minute), firmware needs to be updated to V1.1.1 |
Operation Notes:
- Command Format: In the "Configuration Command" column of the above table, a full line of command (e.g.,
steps 916) is the content that needs to be fully entered. - Sending Method: Enter the command in the sending area of the serial assistant, then click Send.
- Auto Save: Once the command is sent successfully, the parameter will take effect immediately and be automatically saved, no additional save operation is required.
- Confirm Configuration: After modifying any parameter, send the
infocommand to query all current parameters to verify whether the configuration is correct.