How to Print Multi-Material Models Without an MMU - Tutorial
 
Notifications
Clear all

[Solved] How to Print Multi-Material Models Without an MMU - Tutorial  

Page 2 / 2
  RSS
EP91
 EP91
(@ep91)
Active Member
RE: How to Print Multi-Material Models Without an MMU - Tutorial

Works great. Super good job

Thanks so much jonnieZG for sharing

Posted : 11/05/2025 9:16 am
Marcoz
(@marcoz)
Member
RE: How to Print Multi-Material Models Without an MMU - Tutorial

 

Posted by: @jonniezg

This topic has been brought on several times before, and now I'd like to summarize everything I've learned until this point and share it in form of a tutorial. Here we go.

How to Print Multi-Material Models Without an MMU

Overview

The idea is to print multi-material models without an MMU by using the M600 command (manual filament change), which prompts you to change the filament manually whenever a filament or color needs to be switched. For larger models, this would be a tedious process, but for printing text on a horizontal plane or a multi-colored emblem, this method is ideal.

Unlike adding a filament change at specific layers—which allows only a single color per layer and requires ensuring that the nozzle is properly cleaned of the previous color—this method mimics the MMU by using a wipe tower to clean the filament and prevent plastic from oozing.

The Principle

This is achieved by:

  1. Setting "Printers >> General >> Extruders" to the maximum number of colors you want to use (I set mine to 6).
  2. Checking "Printers >> General >> Single Extruder Multi Material".
  3. Adding "M600" (manual filament change) as a "Tool Change G-code" (along with some other settings for easier printing, which I'll explain later).
  4. Tweaking "Printers >> Single Extruder MM Setup" parameters to match a configuration without an MMU. Otherwise, you may get blobs on the wipe tower.

This method is suitable only for models where filament changes do not occur over a large number of layers, as excessive filament changes would make the process impractical. Ideal use cases include printing multi-colored emblems or models with text/signs on a flat surface.

Why This Method?

Most posts I found on this topic were scarce, had issues with blobs on the wipe tower, and were prone to human error when using more than two filaments.

This method solves these problems by:

  • Ensuring the printer tells you which color is next.
  • Keeping wipe towers clean and free of blobs.

However, this method is not useful when there are too many filament changes. What counts as "too many" depends on your patience and commitment.

How It Works

  1. The print starts with whatever filament is currently inserted in the extruder.
  2. Whenever a filament change is needed, the print pauses (beeps and moves the head to the right) until you press "Resume" on the LED screen.After pressing "Resume," watch the printer screen carefully. It will display the next color for 4 seconds (e.g., "Next color is GREEN").
  3. The head moves forward, unloads the filament, and waits for you to insert the new one.
  4. The head moves to the wipe tower, cleans the nozzle with the new color, and resumes printing.

Tip: Set "Sound: Loud" in the printer settings so you can hear a beep whenever the printer needs your attention.

Instructions

1. Creating a New Printer Profile

  1. Copy your regular printer profile, e.g., "Original Prusa MK4S HF0.4 nozzle", and save it as "My Prusa MK4S HF0.4 nozzle MMM".
    I use "MMM" as an acronym for "Manual Multi-Material".
  2. Set "General >> Extruders" to 6 (or the maximum number of colors you plan to use).
  3. Tick the checkbox "General >> Single Extruder Multi Material".
  4. In "Custom G-code >> Tool Change G-code", enter the following code:
{if previous_extruder != -1}
M601 ; Pause
M400 ; wait until all moves are completed
; color notification
M117 Next color is {
  (extruder_colour[next_extruder] == "#00FF00" ? "GREEN" 
  :(extruder_colour[next_extruder] == "#FF0000" ? "RED"
  :(extruder_colour[next_extruder] == "#FFFF00" ? "YELLOW"
  :(extruder_colour[next_extruder] == "#FFFF40" ? "YELLOW"
  :(extruder_colour[next_extruder] == "#0000FF" ? "BLUE"
  :(extruder_colour[next_extruder] == "#000040" ? "NAVY"
  :(extruder_colour[next_extruder] == "#80FFFF" ? "CYAN"
  :(extruder_colour[next_extruder] == "#00FFFF" ? "CYAN"
  :(extruder_colour[next_extruder] == "#00D0FF" ? "CYAN"
  :(extruder_colour[next_extruder] == "#0080FF" ? "LIGHT BLUE"
  :(extruder_colour[next_extruder] == "#FFFFFF" ? "WHITE"
  :(extruder_colour[next_extruder] == "#000000" ? "BLACK"
  :(extruder_colour[next_extruder] == "#999999" ? "GRAY"
  :(extruder_colour[next_extruder] == "#808080" ? "GRAY"
  :(extruder_colour[next_extruder] == "#E0C872" ? "KHAKI"
  :(extruder_colour[next_extruder] == "#FF8000" ? "ORANGE"
  :(extruder_colour[next_extruder] == "#FF00FF" ? "MAGENTA"
  :(extruder_colour[next_extruder] == "#800080" ? "PURPLE"
  :(extruder_colour[next_extruder] == "#8000FF" ? "PURPLE"
  :(extruder_colour[next_extruder] == "#FF6600" ? "ORANGE"
  :(extruder_colour[next_extruder] == "#800000" ? "BROWN"
  :(extruder_colour[next_extruder] == "#804040" ? "BROWN"
  :(extruder_colour[next_extruder] == "#400000" ? "BROWN"
  :extruder_colour[next_extruder]
  )))))))))))))))))))))))
};
G4 S4 ; wait 4 seconds
M600
{endif}

Important: Make sure to add at least one empty line after {endif}!

This code reads the filament color set for each extruder ("Extruder N >> Extruder Color") and displays its name on the LED screen. The listed colors are the ones recognized, so use only these colors in PrusaSlicer settings to get meaningful hints like "Next color is RED" instead of "Next color is #FE150A".

2. Configuring "Single Extruder MM Setup"

Set the following values:

  • Cooling tube position: 65 mm
  • Cooling tube length: 15 mm
  • Filament parking position: 15 mm
  • Extra loading distance: -17 mm
  • Purging volume: 100 mm³

Notes:

  • A cooling tube position is distance from the nozzle where the filament is retracted to cool down. Values above 65 mm may cause jams, while lower values create blobs.
  • The cooling tube length is how long the filament can move in the cooling tube. I found 15 mm to be the sweet spot.
  • The filament parking position is how much the filament is retracted before the pause occurs. Values lower than 15 are likely to cause oozing, and higher values will cause the filament to exit the nozzle tube and jam.
  • The extra loading distance, combined with the value in filament parking position ensures that filament stops exactly 2 mm from the nozzle to prevent oozing.
  • The purging volume is set lower than the default 140 mm³, as the filament is purged manually during filament change.

Adjust "Plater >> Purging volumes..." for specific color transitions, e.g.,:

  • White to Black: 20 mm³
  • Black to White: 80 mm³

3. Preparing and Printing Models

  1. In your favorite CAD software, export all parts grouped by color into separate STL files.
    Example: All white parts in one STL, all black parts in another, etc.
  2. Drag all STL files into PrusaSlicer using your MMM profile.
  3. When prompted, select "Import as a single object with multiple parts."
  4. Assign each part to the corresponding extruder.
    * Set each extruder color to match the actual filament.
    * Use only the colors listed in the G-code section for accurate notifications.

Alternatively, you can use manual multi-material painting in PrusaSlicer or apply text modifiers to objects, assigning to each a corresponding extruder/color.

This method provides a way to print simpler multi-material models without an MMU, using manual filament swaps while maintaining clean prints and minimal filament waste.

Happy printing!

@jonnieZG

I have done this manual for the Core One.

When I start the print it tells me that not the right filament is loaded. Of course I looked three times, but in Prucaslicer I set all to PETG and I loaded also PETG.
After skip that message it starts working great, but the filament changes are not good. 
It stops printing and the Z-axis goes down, then it stops. I had to push on resume, the extruder goes to his home position and then I have to remove the filament, but that stucks for two times. I had to loose the extruder and take all the mess out manual.

Is this manual also meant for the Core One? Or is it just for the MK4(s)?

What do I have to change to let it work for the Core One? The way it works I like it, but not the result (on this moment).

I hope you can help us?

Posted : 22/07/2025 11:40 am
Page 2 / 2
Share: