This plugin adds Prusa MMU2 support to OctoPrint. The active filament will be displayed in the navbar and you will be prompted to select which filament to use when slicing in "MMU2S Single" mode. Other settings are available to name each tool and set defaults. This plugin only works for a Prusa printer with an MMU2.
This plugin adds Prusa MMU2 support to OctoPrint. The active filament will be displayed in the navbar and you will be prompted to select which filament to use when slicing in “MMU2S Single” mode. Other settings are available to name each tool and set defaults. This plugin only works for a Prusa printer with an MMU2.
- Set a timeout to auto-select an extruder
- Enable/disable extruders, name them and give them a color
- Show/hide navbar item (and simplify the display)
- In rare instances, the “waiting for user input” event can come in directly after a tool change is sent, resulting in the navbar never updating. This will not impact printing but you will see “Awaiting user input” until the next tool change.
- If the Prusa printer prompts the user for a “new version”, the select filament modal may not display. You will still be able to select the filament directly on the printer.
- If settings are saved mid-print the navbar will forget the state of the MMU. This does not impact printing but is rather annoying. It’ll remember the next time the tool changes.
This plugin does some minimal gcode manipulation. This is how it detects tool events.
The command interactions are as follows:
- Before sent: (gcode_queuing_hook)
Tx: When the GCODE would send a
Tx(tool change) it first triggers the modal and then does not send the Tx command. Instead it sends a pause event to the printer. This results in Prusa not prompting for a tool change. If the timeout time is reached (
_timeout_prompt) then the plugin resends the
Txcommand to allow Prusa to prompt the user.
M109: When the GCODE would send an
M109(Wait for Hotend Temperature) and the user has selected a filament we send both the
T2), otherwise we just send the
- After sent: (gcode_sent_hook)
- When the plugin notices a
T#command we set the tool internally so it can be used to display. This is to support multi-color printing. This trigger is also used to show unloading.
- When the plugin notices a
We listen to printer responses and do some substring matching. This is done to identify filament events and printer notifications so we can update the navbar: (gcode_received_hook)
paused for user- Used to show that the printer needs attention (eithe error or waiting for tool selection at printer).
MMU not responding- Used to show that the printer needs attention because of an MMU failure.
MMU - ENABLED/
MMU starts responding- Used to show printer is “OK”.
MMU can_load- Used to show the filament loading message.
OO succeeded- Used to show what filament is loaded.
For all instances of where command manipulation happens see
Gcode Hooks. Also
look at function
_timeout_prompt where we handle unpausing the printer after the timer and either
defaultFilament settings are set.