Additional nozzle sizes for MK4 + MMU3 needed
Description of the bug
Current slicer profiles for MK4 + MMU3 (1.13.2) offer support for 0.4mm nozzle only. We need more nozzle sizes supported
Project file & How to reproduce
Selection "Configuration Wizard... -> Prusa FFF -> Original Prusa i3 MK3 MMU3" only shows 0.4mm nozzle option.
Missing alternate nozzle sizes.
Checklist of files included above
- [ ] Project file
- [ ] Screenshot
Version of PrusaSlicer
2.7.4+linux-x64-GTK3
Operating system
Ubuntu Linux 22.04.4
Printer model
Original Prusa i3 MK4 + MMU3
Yes, 0.4mm is only supported nozzle diameter for multi-material prints, but you can use other diameters for single material prints (single nozzle prints are supposed to be sliced with standard MK4 non-MMU profile).
Not a very encouraging answer... Seems like we lost a bit of desired functionality on the upgrade. Any hints as to whether this will change in the near future. If not, then this is indeed a step backwards. I guess we have some work to do ;)
This is a terrible answer. The whole point of nextruder is being able to quickly change nozzle types. So using mmu3 means that goes overboard? Come on prusa.
As a "workaround", I did the following: Go to the PrusaResarch.ini (in Windows it is located in C:\Users<user>\AppData\Roaming\PrusaSlicer\vendor)
Copy&Paste the whole block starting with [printer:Original Prusa MK4 MMU3 0.4 nozzle] ending with default_filament_profile = ...
Example for 0.25 nozzle:
- Change title to
[printer:Original Prusa MK4 MMU3 0.25 nozzle] - Change
inheritsvalue toOriginal Prusa MK4 Input Shaper 0.25 nozzle - Set
printer_variantto0.25 - Replace all
nozzle_diametervalues with0.25 - Copy
max_layer_heightvalues from the related simple IS profile i.e.0.15for a 0.25 nozzle - Replace
P0.4in thestart_gcodetoP0.25 - Copy
default_print_profilefrom the simple IS profile i.e.0.12mm STRUCTURAL @MK4IS 0.25
Then search for [printer_model:MK4ISMMU3] and add all the nozzle variants you added e.g. variants = 0.4; 0.25
Keep in mind that if the configuration wizards asks you to update the profiles, the values will be overriden again (just click "Don't install")
OR if you trust my pre-configured blocks (for 0.25, 0.3, 0.5, 0.8):
- In [printer_model:MK4ISMMU3] change variants to 0.4; 0.25; 0.3; 0.5; 0.6; 0.8
- Add the content of MMU3_profiles.txt after the whole block [printer:Original Prusa MK4 MMU3 0.4 nozzle]:
- Open the "Configuration Wizard" and you should see all profiles.
No guarantess that they actually work (but I tested the 0.25 profile successfully) .
@ZzetT - Yes, I did essentially the same thing for testing and have done several successful prints with no MMU hang-ups. Glad to see another confirmation of the workaround.
Thx for your Post, for me, it's working now . . . I took the lazy way, using the MMU3_profiles.txt
I wonder, there are so much more Information for MMU3 @ MK4, than for MK3.5, but finally, it works ;-)
MMU3_profiles.txt is working fine for me too. Thank you for posting the workaround.
@ZzetT Thanks for your notes and example file, just started up a .6mm nozzle print on my MK4/MMU3.
Just coming back to comment on this for anyone else looking for a solution. This seems to be working on my MK4 w/ MMU3 and the .6mm nozzle, but only for single color PETG prints I think. The filament tips look awful after a print completes and it retracts the filament, a long thin strand. I setup a SpoolJoin on a print last night and the quality of the part where it resumed is bad - I sell my prints and these weren't sellable. The layer where the spool was switched has a very large line - it looks like a combination of overextruded and under under extruded, theres'a visible line that's prominent all around the object and there's a gap between the layers. YMMV but I don't think I'll be using this for any multicolor prints based on the quality of a single filament swap via SpoolJoin.
Thx for your experience report, hacustom. I also planed to use the .6 settings only for spool join. So I will roll back my setup and only use this with .4 nozzles . . . maybe, in Future Prusa will support that ;-)
So, where are our profiles officially? They are for older printers with MMU3, just not for MK4. I am strongly disappointed.
I was also able to do several successful 0.25mm prints using @ZzetT's suggestion, the wipe tower was a little messy for some reason but the print itself was great. Hopefully we get some kind of official word soon.
I decided to roll the dice tonight on another Spool Join attempt on a print using a .6mm nozzle. I was more careful prepping the end of the filament on the first roll, ensuring the last couple inches were straight and that I had nice clean angled cut on it. This time, it went off without a hitch - the FINDA sensor lit up, the Nextruder pushed the filament back until it fed into the MMU3 gear and then the MMU3 pulled it all the way back. The second roll fed in and off it went.
I suspect what happened last time was the purge - I've noticed the MK4 has a really odd purge routine when changing filament - it purges, and then does a second short purge right before heading over to the print. When doing a manual roll swap I've gotten into the routine of grabbing the hanging filament from that second purge, preventing it from going into the print. During an automated spool join there's nothing stopping that hanging thread of filament from getting carried over into the print and stuck in it.
I grabbed the hanging filament this time as the Nextruder was moving back to the print but seems like that Spool Join purge operation could use a little adjustment.
Oof. Nevermind, did another spool join tonight in the last 5 minutes of a 5 hour print - it trashed the surface. I don't know what's going on with Prusa's spool join logic but I don't trust it.
Any updates on this? I definitely assumed that at least .25 and .6 would also be supported natively when I purchased my MMU3
As a "workaround", I did the following: Go to the PrusaResarch.ini (in Windows it is located in C:\Users
\AppData\Roaming\PrusaSlicer\vendor) Copy&Paste the whole block starting with
[printer:Original Prusa MK4 MMU3 0.4 nozzle]ending withdefault_filament_profile = ...Example for 0.25 nozzle:
- Change title to
[printer:Original Prusa MK4 MMU3 0.25 nozzle]- Change
inheritsvalue toOriginal Prusa MK4 Input Shaper 0.25 nozzle- Set
printer_variantto0.25- Replace all
nozzle_diametervalues with0.25- Copy
max_layer_heightvalues from the related simple IS profile i.e.0.15for a 0.25 nozzle- Replace
P0.4in thestart_gcodetoP0.25- Copy
default_print_profilefrom the simple IS profile i.e.0.12mm STRUCTURAL @MK4IS 0.25Then search for
[printer_model:MK4ISMMU3]and add all the nozzle variants you added e.g.variants = 0.4; 0.25Keep in mind that if the configuration wizards asks you to update the profiles, the values will be overriden again (just click "Don't install")
OR if you trust my pre-configured blocks (for 0.25, 0.3, 0.5, 0.8):
- In [printer_model:MK4ISMMU3] change variants to 0.4; 0.25; 0.3; 0.5; 0.6; 0.8
- Add the content of MMU3_profiles.txt after the whole block [printer:Original Prusa MK4 MMU3 0.4 nozzle]:
- Open the "Configuration Wizard" and you should see all profiles.
No guarantess that they actually work (but I tested the 0.25 profile successfully) .
it does not show up in the assistant. I did the manual adjustment of prusaresearch.ini ( under MacOS ).
but no option to select 0.25 :)
Oof. Nevermind, did another spool join tonight in the last 5 minutes of a 5 hour print - it trashed the surface. I don't know what's going on with Prusa's spool join logic but I don't trust it.
Alright, I'm a glutton for punishment apparently. I did a smaller multicolor test print on my MMU3/MK4 with the .6mm nozzle profile and it actually worked great. Apparently it's just the spool join process that sucks, for now I'm just disabling my MMU3 when I know I'll have to swap in a fresh roll mid print.
Oof. Nevermind, did another spool join tonight in the last 5 minutes of a 5 hour print - it trashed the surface. I don't know what's going on with Prusa's spool join logic but I don't trust it.
Alright, I'm a glutton for punishment apparently. I did a smaller multicolor test print on my MMU3/MK4 with the .6mm nozzle profile and it actually worked great. Apparently it's just the spool join process that sucks, for now I'm just disabling my MMU3 when I know I'll have to swap in a fresh roll mid print.
@hacustom if you disable MMU3 I assume you feed the fillament directly to the printer or can you still have the fillament go through the MMU3 (just using a single slot that doesn't change during print)?
I want to test that yet :) For now I just pulled the PTFE tube out of the fitting on the Nextruder and it worked great! I pulled one of the arms off the filament stand that came with the MK4 and they both fit on the printer so it's not bad.
The working (thank you) workaround by ZzetT is broken by 2.80 update.
The working (thank you) workaround by ZzetT is broken by 2.80 update.
you need to do it again, working for me....
For any with MK3.9
follow @ZzetT steps for the MK4 as the MK3.9 profiles inherit from them. Add the below changes after @ZzetT changes.
[printer:Original Prusa MK3.9 MMU3 0.25 nozzle]
inherits = Original Prusa MK4 MMU3 0.25 nozzle
printer_model = MK3.9MMU3
multimaterial_purging = 80
printer_variant = 0.25
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile. \n\nPRINTER_MODEL_MK3.9\nPRINTER_MODEL_MK4IS\nPRINTER_MODEL_MK3.9MMU3\nPG
start_gcode = M17 ; enable steppers\nM862.1 P0.25 ; nozzle diameter check\nM862.3 P "MK3.9" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P "Input shaper" ; FW feature check\nM862.6 P "MMU3" ; FW feature check\nM115 U6.0.0+14794\n\n; setup MMU\nM708 A0x0b X5 ; extra load distance\nM708 A0x0d X140 ; unload feeedrate\nM708 A0x11 X140 ; load feedrate\nM708 A0x14 X20 ; slow feedrate\nM708 A0x1e X12 ; Pulley current to ~200mA\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 R{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X{10 + 32} Y-4 Z5 F4800\n\nM302 S160 ; lower cold extrusion limit to 160C\n\n{if filament_type[initial_tool]=="FLEX"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W130 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[initial_tool]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[initial_tool]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\nT[initial_tool]\nG1 E{parking_pos_retraction + extra_loading_move - 15} F1000 ; load to the nozzle\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[initial_tool] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X105 E36 F500 ; purge\nG0 X115 E4 F650 ; purge\nG0 X125 E4 F800 ; purge\nG0 X{125 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{125 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100%
[printer:Original Prusa MK3.9 MMU3 0.3 nozzle]
inherits = Original Prusa MK4 MMU3 0.3 nozzle
printer_model = MK3.9MMU3
multimaterial_purging = 80
printer_variant = 0.3
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile. \n\nPRINTER_MODEL_MK3.9\nPRINTER_MODEL_MK4IS\nPRINTER_MODEL_MK3.9MMU3\nPG
start_gcode = M17 ; enable steppers\nM862.1 P0.3 ; nozzle diameter check\nM862.3 P "MK3.9" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P "Input shaper" ; FW feature check\nM862.6 P "MMU3" ; FW feature check\nM115 U6.0.0+14794\n\n; setup MMU\nM708 A0x0b X5 ; extra load distance\nM708 A0x0d X140 ; unload feeedrate\nM708 A0x11 X140 ; load feedrate\nM708 A0x14 X20 ; slow feedrate\nM708 A0x1e X12 ; Pulley current to ~200mA\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 R{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X{10 + 32} Y-4 Z5 F4800\n\nM302 S160 ; lower cold extrusion limit to 160C\n\n{if filament_type[initial_tool]=="FLEX"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W130 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[initial_tool]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[initial_tool]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\nT[initial_tool]\nG1 E{parking_pos_retraction + extra_loading_move - 15} F1000 ; load to the nozzle\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[initial_tool] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X105 E36 F500 ; purge\nG0 X115 E4 F650 ; purge\nG0 X125 E4 F800 ; purge\nG0 X{125 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{125 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100%
[printer:Original Prusa MK3.9 MMU3 0.5 nozzle]
inherits = Original Prusa MK4 MMU3 0.5 nozzle
printer_model = MK3.9MMU3
multimaterial_purging = 80
printer_variant = 0.5
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile. \n\nPRINTER_MODEL_MK3.9\nPRINTER_MODEL_MK4IS\nPRINTER_MODEL_MK3.9MMU3\nPG
start_gcode = M17 ; enable steppers\nM862.1 P0.5 ; nozzle diameter check\nM862.3 P "MK4" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P "Input shaper" ; FW feature check\nM862.6 P "MMU3" ; FW feature check\nM115 U6.0.0+14794\n\n; setup MMU\nM708 A0x0b X5 ; extra load distance\nM708 A0x0d X140 ; unload feeedrate\nM708 A0x11 X140 ; load feedrate\nM708 A0x14 X20 ; slow feedrate\nM708 A0x1e X12 ; Pulley current to ~200mA\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 R{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X{10 + 32} Y-4 Z5 F4800\n\nM302 S160 ; lower cold extrusion limit to 160C\n\n{if filament_type[initial_tool]=="FLEX"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W130 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[initial_tool]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[initial_tool]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\nT[initial_tool]\nG1 E{parking_pos_retraction + extra_loading_move - 15} F1000 ; load to the nozzle\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[initial_tool] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X105 E36 F500 ; purge\nG0 X115 E4 F650 ; purge\nG0 X125 E4 F800 ; purge\nG0 X{125 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{125 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100%
[printer:Original Prusa MK3.9 MMU3 0.6 nozzle]
inherits = Original Prusa MK4 MMU3 0.6 nozzle
printer_model = MK3.9MMU3
multimaterial_purging = 80
printer_variant = 0.6
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile. \n\nPRINTER_MODEL_MK3.9\nPRINTER_MODEL_MK4IS\nPRINTER_MODEL_MK3.9MMU3\nPG
start_gcode = M17 ; enable steppers\nM862.1 P0.6 ; nozzle diameter check\nM862.3 P "MK4" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P "Input shaper" ; FW feature check\nM862.6 P "MMU3" ; FW feature check\nM115 U6.0.0+14794\n\n; setup MMU\nM708 A0x0b X5 ; extra load distance\nM708 A0x0d X140 ; unload feeedrate\nM708 A0x11 X140 ; load feedrate\nM708 A0x14 X20 ; slow feedrate\nM708 A0x1e X12 ; Pulley current to ~200mA\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 R{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X{10 + 32} Y-4 Z5 F4800\n\nM302 S160 ; lower cold extrusion limit to 160C\n\n{if filament_type[initial_tool]=="FLEX"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W130 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[initial_tool]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[initial_tool]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\nT[initial_tool]\nG1 E{parking_pos_retraction + extra_loading_move - 15} F1000 ; load to the nozzle\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[initial_tool] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X105 E36 F500 ; purge\nG0 X115 E4 F650 ; purge\nG0 X125 E4 F800 ; purge\nG0 X{125 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{125 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100%
[printer:Original Prusa MK3.9 MMU3 0.8 nozzle]
inherits = Original Prusa MK4 MMU3 0.8 nozzle
printer_model = MK3.9MMU3
multimaterial_purging = 80
printer_variant = 0.8
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile. \n\nPRINTER_MODEL_MK3.9\nPRINTER_MODEL_MK4IS\nPRINTER_MODEL_MK3.9MMU3\nPG
start_gcode = M17 ; enable steppers\nM862.1 P0.8 ; nozzle diameter check\nM862.3 P "MK4" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P "Input shaper" ; FW feature check\nM862.6 P "MMU3" ; FW feature check\nM115 U6.0.0+14794\n\n; setup MMU\nM708 A0x0b X5 ; extra load distance\nM708 A0x0d X140 ; unload feeedrate\nM708 A0x11 X140 ; load feedrate\nM708 A0x14 X20 ; slow feedrate\nM708 A0x1e X12 ; Pulley current to ~200mA\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 S{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 R{((filament_notes[initial_tool]=~/.*HT_MBL10.*/) ? (first_layer_temperature[initial_tool] - 10) : (filament_type[initial_tool] == "PC" or filament_type[initial_tool] == "PA") ? (first_layer_temperature[initial_tool] - 25) : (filament_type[initial_tool] == "FLEX") ? 210 : (filament_type[initial_tool]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X{10 + 32} Y-4 Z5 F4800\n\nM302 S160 ; lower cold extrusion limit to 160C\n\n{if filament_type[initial_tool]=="FLEX"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W130 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[initial_tool]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[initial_tool]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\nT[initial_tool]\nG1 E{parking_pos_retraction + extra_loading_move - 15} F1000 ; load to the nozzle\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[initial_tool] == "FLEX" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X105 E36 F500 ; purge\nG0 X115 E4 F650 ; purge\nG0 X125 E4 F800 ; purge\nG0 X{125 + 3} Z{0.05} F{8000} ; wipe, move close to the bed\nG0 X{125 + 3 * 2} Z0.2 F{8000} ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100%
It is ridiculous that Prusa still does not support different nozzle sizes officially. The MK4 is advertised for how easy it is to switch nozzles. Really disappointing.
Are the different nozzle sizes officially unsupported or just missing the configuration?
Yeah, it's getting kind of stupid... MK4S... no official support for 0.6 nozzles on MMU3...
Thanks for your support @ZzetT !
The workaround will allow you to technically perform a print, but the updated stamping procedure that produces the rounded tips prior to retraction has not been tuned for different nozzle sizes.
This is mostly fine if you want to print in single mode (I tested with a 0.8mm nozzle), but in multi-material mode, not only will you get significant stringing, but with the larger nozzle size you can also get filament jams as it retracts from the extruder (been there, done that).
Just a quick addendum to the workaround by @ZzetT for those who want to print directly to the printer from PrusaSlicer. I followed the workaround instructions for a 0.6 nozzle (and added the profile for MK3.9 printer; thanks to @jcphlux) however I was still getting a code thrown by the printer regarding mismatched nozzles. So I looked and in the Custom G-code section of my "Physical Printer" profile there was an additional nozzle diameter check setting in the second line of the custom G-code. Changing that from P0.4 to P0.6 remedied the check error thrown by the printer.
Tried it with a 0.25 nozzle. Runs fine, but as happykatz writes there are way too many problems w. stuck filament. It is possible to pull the filament from the hotend and restart. I had a pretty compleks print and had to do this maybe 40time during the process. I really hope Prusa will do the homework soon..
Hello, on macOS PS 2.8.1, I modify '/Users/****/Library/Application Support/PrusaSlicer/vendor/PrusaResearch.ini' without success. Do you have any clue ? Thanks