How to Print Multi-Material Models Without an MMU - Tutorial
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:
- Setting "Printers >> General >> Extruders" to the maximum number of colors you want to use (I set mine to 6).
- Checking "Printers >> General >> Single Extruder Multi Material".
- Adding "M600" (manual filament change) as a "Tool Change G-code" (along with some other settings for easier printing, which I'll explain later).
- 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
- The print starts with whatever filament is currently inserted in the extruder.
- 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").
- The head moves forward, unloads the filament, and waits for you to insert the new one.
- 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
- 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". - Set "General >> Extruders" to 6 (or the maximum number of colors you plan to use).
- Tick the checkbox "General >> Single Extruder Multi Material".
- 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
- 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. - Drag all STL files into PrusaSlicer using your MMM profile.
- When prompted, select "Import as a single object with multiple parts."
- 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!
RE: How to Print Multi-Material Models Without an MMU - Tutorial
Interesting, I do my ManualMMU with "Printers >> General >> Single Extruder Multi Material" not checked, and don't use a purge tower. See this model that I've uploaded to Printables for my 3mf settings (printing on a MK3S+, I haven't updated the settings for MK4S yet) and a technique to colorize a model that doesn't have color (i.e. using added parts to fill in voids (text and logos) with a differently colored filament):
https://www.printables.com/model/593937-mk4-wifi-cover-color-manual-mmu
I used that to reprint the parts of my MK4 on my MK3 that have debossed text to get contrasting colors on my MK4. With the single extruder setting enabled do you get a color change between the purge line and the actual print, or is that what your {if previous_extruder != -1} filters out for you? I don't have the message alerting the user of the next color in my technique, I may incorporate that at some point.
See my (limited) designs on:
Printables - https://www.printables.com/@Sembazuru
Thingiverse - https://www.thingiverse.com/Sembazuru/designs
RE: How to Print Multi-Material Models Without an MMU - Tutorial
Interesting, I do my ManualMMU with "Printers >> General >> Single Extruder Multi Material" not checked, and don't use a purge tower. See this model that I've uploaded to Printables for my 3mf settings (printing on a MK3S+, I haven't updated the settings for MK4S yet) and a technique to colorize a model that doesn't have color (i.e. using added parts to fill in voids (text and logos) with a differently colored filament):
https://www.printables.com/model/593937-mk4-wifi-cover-color-manual-mmu
I used that to reprint the parts of my MK4 on my MK3 that have debossed text to get contrasting colors on my MK4. With the single extruder setting enabled do you get a color change between the purge line and the actual print, or is that what your {if previous_extruder != -1} filters out for you? I don't have the message alerting the user of the next color in my technique, I may incorporate that at some point.
The method you described is ok if you have only two colors, but for anything more complicated I much prefer my method. The wipe tower is necessary if you want to prevent colors mixing and oozing. Yes, the condition you asked for filters out the first filament swap. So it just starts printing with whatever filament currently inserted.
wipe tower is necessary if you want to prevent colors mixing and oozing
or use 'Wipe into infill'
I experimented up to eight (I think) colours and wrote a script to manage them 'though in practice I never found an actual use for more than three colours.
If you do find yourself considering more than half a dozen colours then you are probably better off printing monochrome and painting.
Cheerio,
RE: How to Print Multi-Material Models Without an MMU - Tutorial
Additional notes
- If the printer displays the warning "Wrong filament type or no filament loaded", it might be because the object you are printing has no parts using the "default" extruder. For example, it might be using only Extruder 2 and Extruder 3, and not Extruder 1. In that case check in your slicer if your currently loaded filament matches the fist color that is to be printed, and then just select "OK".
- Probably the safest values for "Filament parking position" and "Extra loading distance" are 12 and -14 respecively, (instead of 15 as mentioned in the original post, and -17). The tips of the unloaded filament might be a bit uglier, but that way you eliminate the chance of filament slipping out from the nozzle tube, causing a jam.
RE: How to Print Multi-Material Models Without an MMU - Tutorial
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.
3. Preparing and Printing Models
- 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.- Drag all STL files into PrusaSlicer using your MMM profile.
- When prompted, select "Import as a single object with multiple parts."
- 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!
hello, sorry, i'm certainly dumb,
i've followed all instructions........evreything is ok, but i don't understand how to print.
i've correctly setup things, i have my 3 stls (3 colors) but when all imported on the plater........i'm lost!
thanks for your help!
RE: How to Print Multi-Material Models Without an MMU - Tutorial
please provide a copy of your prusa slicer project file, including the STL's ans someone will have a look at it for you.
regards Joan
I try to make safe suggestions,You should understand the context and ensure you are happy that they are safe before attempting to apply my suggestions, what you do, is YOUR responsibility. Location Halifax UK
RE: How to Print Multi-Material Models Without an MMU - Tutorial
Thx for that, i was searching and got trouble with the blob.
the setting i wasn't able to tweak was the "extra loading distance" ...
Works perfect for me.
Got a question about the M601, is it mandatory to get the color notification ?
Because my printer stand and wait without beep ... despite the sound setting is set on loud.
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:
- Setting "Printers >> General >> Extruders" to the maximum number of colors you want to use (I set mine to 6).
- Checking "Printers >> General >> Single Extruder Multi Material".
- Adding "M600" (manual filament change) as a "Tool Change G-code" (along with some other settings for easier printing, which I'll explain later).
- 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
- The print starts with whatever filament is currently inserted in the extruder.
- 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").
- The head moves forward, unloads the filament, and waits for you to insert the new one.
- 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
- 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".- Set "General >> Extruders" to 6 (or the maximum number of colors you plan to use).
- Tick the checkbox "General >> Single Extruder Multi Material".
- 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
- 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.- Drag all STL files into PrusaSlicer using your MMM profile.
- When prompted, select "Import as a single object with multiple parts."
- 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!
RE: How to Print Multi-Material Models Without an MMU - Tutorial
I followed this ingenious instruction and was easily able to print my first self-designed MMM-part. One question: When it comes to a color change, the print pauses. I had to choose "continue" to let the color change happen. Is this "by Design" of the solution?
Thx for that amazing article anyway, that took me in the world of MM print w/o the need of an MMU unit 🙂
RE: How to Print Multi-Material Models Without an MMU - Tutorial
the need to continue is due to using the M600 command instead of the MMU equipment
regards Joan
I try to make safe suggestions,You should understand the context and ensure you are happy that they are safe before attempting to apply my suggestions, what you do, is YOUR responsibility. Location Halifax UK
RE: How to Print Multi-Material Models Without an MMU - Tutorial
I had to choose "continue" to let the color change happen. Is this "by Design" of the solution?
As Joan said, that is a workaround for the message having a specified timeout. The pause produces a "beep" on the printer, and ensures that you are watching at the screen while the message showing the next color is displayed.
RE: How to Print Multi-Material Models Without an MMU - Tutorial
Hi there thx a lot for providing this much appreciated feedback. May I ask another question?
Every time I start a MM-Print I get the below message, that I did simply ignore by hitting "OK". Guess that is also due this kind "virtual MMU"?
RE: How to Print Multi-Material Models Without an MMU - Tutorial
super-newbie here. have done a handful of single color prints and wanted to try a 2 color w/o an MMU. The instructions provided worked out great! Thanks @jonnieZG for the straightforward instructions. now, back to printing...