At the end of March 2024, we started shipping the MMU3 for the Original Prusa MK4 (and MK3.9). This also marked the end of a long in-house testing period in which the MMU3 proved to withstand thousands upon thousands of filament changes on the MK4. The MK3S+ version has been shipping since July 2023 and keeps going strong.
Right now, the MMU3 for all supported printers is available, most versions are in stock and we’re pushing down the leadtimes on the MK4 variant every day (see the shipping table for details). We’re happy to see that many ambitious prints are popping up on Reddit all the time – 150+ hour prints without a single intervention are nothing rare these days. 🙂
Before we jump in – all model links are at the end of the article!
MMU3 – fast and efficient
There are a number of reasons why we stick to the same concept of the multi-material unit.
First of all, it’s an incredibly simple mechanism – you can easily build the entire unit at home (or upgrade the previous version), maintenance is a breeze because you can get inside the unit quickly and clean any plastic debris, etc. For this purpose, we have improved several parts of the unit, so you can now, e.g., adjust its tilt in two steps for more convenient access. However, in general, most parts were redesigned and reinforced with metal parts. We would like to thank the 3D printing community for pointing us in the right direction with valuable feedback and user mods – check out our earlier article to learn more about the hardware changes!
The MMU3’s design also allows for very fast filament changes – they average between 35 to 45 seconds depending on the purging values set in PrusaSlicer. With easily thousands of filament changes during a single multi-material print, this shaves off a considerable amount of time from the print job and the only faster solution is the XL.
Another thing the MMU3 unit enables is multi-material printing with manageable waste. Instead of cutting and flushing excessive amounts of filament, the MMU3 uses a compact, semi-hollow waste tower. The size of the wipe tower can be further reduced by using wipe-to-object or wipe-to-infill options which purge the leftover material in the nozzle – either way, you don’t have to worry about pieces of plastic piling next to your printer.
So while the unit may look similar to its predecessor, the experience is very different, also thanks to a completely reworked firmware – we decided to share the entire process of developing the new version below in case you don’t believe me. 😉 With full two-way communication between the two boards, it’s much easier to configure and run multi-material prints. The color touchscreen on the MK3.5/MK4 gives you additional options, such as the ability to quickly remap filaments or set up SpoolJoin functionality for depleting leftover filament from nearly empty filament spools.
Last but not least, we decided to keep the design similar to the MMU2S so if you want to upgrade your older unit, it’s easy and cheap to do. And you can, of course, flash the MMU3 firmware to your MMU2S unit to improve its performance without replacing any parts.
MMU3 for the MK4
Now, the obvious question is: why did it take longer to release the MMU3 for the MK4 when the other versions have been out since mid-2023?
We’ve covered this extensively in our blog posts, so just briefly: we had a fully working MMU3 for the MK4 ready for shipping around April 2023 and we were waiting for our production capacity to free up a little bit – so the MMU3 was scheduled for June 2023. However, when Summer got closer and temperatures started rising, we noticed a sudden drop in its reliability (MMU3+MK4). Why did the MK3S+ work without an issue and the MK4 struggled? The cause lies in the different extrusion and hotend systems. We had a perfectly working combo up until that point and suddenly, we were back in square one.
So, we set up a testing farm and started developing a solution immediately. As we described previously, with the MMU, you’re looking at prints that easily take over 30 print hours which makes any sort of testing more time-consuming.
The cause of the issue was hidden in the tips of the filament – once you unload a filament from the extruder, the tip must be absolutely perfect. However, in our case, unloaded filaments often had a long thin wisp of plastic at the end which caused issues in the tightly-designed Nextruder. We have described it extensively in our previous updates (October 2023 and January 2024).
An extreme case of the filament string forming on the tip
We ended the last one with a statement that most of the issues on the MK4 are caused by filament not going smoothly through the extruder and into the filament guide. This brings me to…
The Nextruder Main Plate
To get the frequent filament (un)loading to the required level of reliability, we had to adjust the “Main Plate” part in the Nextruder and this is why it is also included in the MMU3 package. We have also redesigned the filament unloading process, making it more efficient and much faster!
When you use the MK4 in the usual way and even change filaments several times a day, the Main Plate part will barely show any signs of wear even after a prolonged time. However, multi-colored prints can easily perform thousands of filament changes during a single print – without the MMU, it would probably take you many, many years of frequent printing to get to this number of filament changes. With so many filament changes during multi-material prints, the Main Plate may show signs of wear depending on how heavily you use the MMU.
The part we include with the MMU has been printed with Multi Jet Fusion to make it longer-lasting. However, it still needs to be treated as a consumable as it will wear out over time. The printer keeps track of filament changes and will notify you when the expected lifespan of this part is near the end, or if the filament loading procedure became less reliable due to excessive wear. According to our in-house testing, the MJF part lasts about 80.000 filament changes and then needs replacing (it takes about 10 minutes to replace it). We’ve tested this part extensively in-house and if you experience issues sooner than expected, it’s probably caused by something else. Please feel free to contact our support team for assistance.
As a short-term solution, you can print the part from PETG – the STL file is available at Printables.com. However, the lifespan will be noticeably shorter.
Road to MMU3
Back in late 2021 / early 2022, our firmware lead David started assembling a list of features for a new MMU2S firmware. Originally, the only goal was to show proper status messages on the printer’s screen, should the MMU encounter an issue. From there, it evolved into a whole new project aiming to add full two-way communication, proper status messages, and many other features to make the unit much less prone to assembly-related issues. We realized that assembling the MMU required way too much patience to ensure everything was PERFECTLY aligned. This was never an issue with our 3D printers (as many people online say “the assembly kit just works”), so the situation with the MMU was somewhat unexpected – and the users voiced their frustration very strongly.
There’s usually no need to go online and say “Everything’s fine.” You go online to look for troubleshooting help. As questions about the MMU2 and requests for help started to appear, it created a sense that MMU2S doesn’t work – at all. However, most users had no major trouble with multi-material printing. Also, when various community mods/fixes started to appear, they had varying degrees of success – exactly because it was too difficult to assemble the MMU with high precision, so the cause of the issue was often in various places. We took these comments very seriously. Also, we reached out to all MMU2S owners with information on how they can improve their units with new firmware and offered ways to compensate for the issues during assembly.
Firmware to the rescue
We analyzed the situation thoroughly, going over user posts on social media, videos, reviews, modifications, and, of course, tech support reports. Originally, we wanted to rework the firmware to make it more user-friendly because the unit used a simple, yet somewhat cryptic, system of five LEDs to communicate with the user. This was one of the things that helped create the confusion on social media. “Oh no, my first and third LEDs are flashing! What does it mean?” It made dealing with common print issues way too difficult. It would make more sense if the printer could tell you “Something blocks the rotation of the idler, please check the following:” instead of blinking the LEDs.
Needless to say, the firmware for the MMU2 was developed in a tiny team many years ago and things changed a lot in the company over the past several years. So, David set out to improve the existing codebase, but what seemed like a simple firmware update at first, turned out to be a whole new project that ended up with the introduction of the MMU3. Instead of augmenting the old code, the existing codebase went out of the window and the new firmware started completely from scratch. The complete overwork of the codebase led to a massive improvement in overall performance – which is not always the case in software development. 😉
During the span of two months, the proposal for a brand-new firmware architecture was completed. Initially, we considered Arduino IDE, but this was later dropped because it didn’t allow us everything we planned.
The firmware is built on three layers:
- HAL – Hardware Abstraction Layer – allows access to timers, watchdogs, EEPROM, USART and more
- Modules – unit component abstraction – buttons, FINDA sensor, Fsensor, Idler, LEDs, Fully-featured stepper engine, permanent storage, protocols, pulley, selector, serial, timing, USB CDC, user input
- Application Logic – function logic, such as Cut, Eject, Home, HW sanity check, filament loading, unload and more
One of the things that hindered the previous firmware (which had its roots in 2017) was that it was written as a synchronous code which basically ruled out any updating of the printer while the MMU was performing an action. Before the MMU could react to any new input or situation, it had to complete a certain cycle. Moreover, it didn’t really know what was happening with the printer. It only kept receiving commands which were then carried out. With the new architecture, this is no longer the case. Everything operates as a state machine in parallel all the time and both the printer and the MMU always communicate with each other, sharing real-time information. This way, the system can resolve many situations that would otherwise cause the “MMU needs user attention” messages. Filament loading failed? Let’s try loading it again automatically. Good, it works now, carry on.
This was all done on a simple ATMega 32U4 chip. Because it’s not viable to run an embedded OS with multitasking on it due to limited resources, we had to make one ourselves. Well, it’s not “real” multitasking, it’s rather a smart architecture that ensures no component can ever block others so that everything keeps running all the time.
Unit testing and integration
David and his team spent months developing the firmware just by using unit testing (software-only testing of small parts of the code) and they always checked whether avr-gcc can compile the code. The only parts of physical testing were done with partial HAL components implementation. Once the development was in later stages, the dev team finally uploaded the firmware into the MMU2S board – and it worked beautifully, proving the test-driven development approach valid in its pure form.
An essential part of the new firmware was the implementation of proper error messages – this also meant preparing the other side (the printer) for communication. With two different firmware branches (MK3S+ with the Einsy board and the 32-bit MK4 with the xBuddy board), there was some extra work to do.
In the end, we use state machines here, too. The printer is the control device and the MMU only responds to commands (but this time, it can also “report back”). It only makes sense that the more powerful CPU in the printer controls the communication, requests and more. Above this communication protocol is one additional layer that connects the protocol with Marlin firmware. This is where we wanted to keep the top-level API, but everything else was thrown out and completely rewritten.
This was an incredible amount of work, but in the end, it was worth it. The communication between the two devices runs smoothly and the entire experience is virtually seamless.
And then the hardware team had a couple of ideas.
Adjust it here, adjust it there…
We have already mentioned that community-made modifications were an important indicator that helped us focus on crucial areas.
With the work on the new firmware underway, our hardware development team looked at the MMU unit and decided to improve a few parts here, a few parts there – and eventually, they redesigned the majority of components save for the electronics. Again, more details can be found in the previous blog entry.
Meanwhile, the firmware team decided to add one more component to the codebase. A pretty big one: registry support. Or to be more specific: runtime MMU parametrization, similar to a MODBUS registry system. There was even an attempt to use full MODBUS, however, due to limited resources on the MK3S+, this was dropped in favor of a modified version of the MMU protocol. It now adds 35 registry entries (1-byte and 2-byte), some are read-only, others are read/write, and some are persistent in the EEPROM. This gives us a whole host of new options, including new G-codes M707 and M708 to read/write registry entries. For example, this allows to configure the speed of filament loading before every filament change. Also, each printer parametrizes its MMU at the start – which allows us to have just one MMU firmware for all supported printer models.
More power is not always better
When the MMU3 loads filament into the extruder, it’s a rather simple operation. The idler rotates, applies pressure onto the string of filament and presses it against the feed gear. The gear starts rotating, pushing the filament through the selector and the PTFE tube into the extruder.
Our initial idea was that we need as much pressure as possible. I mean – why not? You need to push the filament through the PTFE tube, you don’t want the filament to slip or lose steps. But that’s actually not the case. The movement of the filament is checked by the two filament sensors (in the MMU and in the printer), so it doesn’t really matter if the motor loses some steps. And it doesn’t have to run on full power either.
This helps avoid creating dents in the filament string where a too-powerful drive would shave off material from the filament string, preventing it from being pushed forward by the gear. If you watched Top Gear, you can probably remember Jeremy Clarkson screaming “POWAAHH!” during a massive burnout which usually narrowly avoided a disaster – this is similar. Excessive horsepower is useless when the wheels cannot transfer torque onto the road. Less current going into the motor means that if the filament becomes stuck somewhere, the motor won’t grind the material away and cause more issues half an hour later when this part of the filament gets into the extruder. When the MMU runs out of the pre-set stepping range/length, it shows an error anyway. But the piece of filament can be reused (not thrown away).
Also, unlike the printer, the old MMU firmware lacked a proper dedicated stepper and planner engine. This made the unit more noisy than it had to be, plus it was almost impossible to control accelerations other than by changing the code. With the new firmware, this is no longer the case. There’s a full stepper and planner engine that manages 3 axes at the same time, including acceleration ramps. This allows us to control the speeds and accelerations of all motors dynamically at runtime. Plus, we changed the way the TMC2130 drivers perform homing (we now measure the axes’ length) which also helps to make the unit more quiet and reliable.
There are more things behind the MMU3 firmware, but they are even more nerdy than what was just explained. Maybe some other time. 🙂
Colored prints with less waste and more comfort
So, this sums up the current state of the MMU3. The unit is available for all supported printer models, it works exceptionally well and you can achieve some really impressive results with minimal hassle.
We’re chewing through the backlog of MMU3 orders faster than we expected, so if you don’t have your unit yet, it’s gonna be on the way real soon. And if you’re already printing with multiple filaments, do share your prints! We can’t wait to see them!
Happy printing!
Model links:
https://3dsets.com/product/model-7-buggy/
https://www.printables.com/model/384371-the-frog-prince-multi-and-single-colour-fairytale-
https://www.printables.com/model/748459-articulated-sea-turtle-singlecolor-and-multicolor
https://www.printables.com/model/576954-chibi-wolverine
https://www.printables.com/model/144657-mini-viking
https://www.printables.com/model/379304-astronaut-sitting-on-moon
https://www.printables.com/model/138600-cat-sculpt-with-mmu-painting
https://www.printables.com/model/563626-lola-bunny-space-jam
https://cults3d.com/en/3d-model/art/kingfisher-mmu-three-versions
Is there any story coming for MMU3 + XL? Then we could have infinite colors for the XL, or a head per material type, and colors set by MMU3.
I remember a veery old podcast they did before the XL launches where they were that the XL will support the mmu. I don't remember any more information on that till now.
Any update on when Printed Solid might be able to ship these? I'm in the US, and required by my employer to order via Printed Solid.
Finally, an update. Thank you!
All I can say is – phenomenal job! I have the MMU3 on my MK4 and it just works. Not a single repeated/failed load. Nothing. That thing just works perfectly. I am very impressed!
I have to say I was skeptical given how many issues I had with the MMU2, but so far, the MMU3 on the Mk4 has been phenomenal. Currently working on a Dobby print that would have taken over 3 days on my Mk3s+ and MMU2s. Now it will be completed in just a shade over 1 day. Only had 1 issue which was a result of me not having the tension screws on the MMU3 even, after clearing that up, the unit is over 300 changes so far with no interventions and I couldn't be happier.
Hats off to you and your team on the terrific work. Thank you guys.
The waste is 1/3 on the MK4+MMU3 compared to the Bambu AMS. I think Prusa should advertise this more.
Print time for Articulated Orca by Jopek Design:
Single color Dual color
Brand Model filament time filament time Waste
Prusa XL 46,65 2h20m 58,08 2h58m 24,50 %
Prusa MK4 46,65 2h15m 68,92 4h54m 47,74 %
Bambu X1 / P1 45,02 1h45m 107,70 5h37m 139,23 %
Bambu A1 44,76 2h17m 106,74 6h04m 138,47 %
Kudos to the team for continually pushing to build the best product out there. But just as importantly taking the time to share the journey!
Great read.
Would it be possible or reasonable for a user to have the main plate printed in metal with a company like PCBWay? Would there be any downside aside from cost? Like different heat conduction or would the added weight throw the Input Shaping off?
I'm also curious about the feasibility of a metal main plate – if it doesn't cause any unforeseen reliability issues, it would make an enticing aftermarket part to have one machined out of aluminum for those who just want to dispense with the wear issue completely.
I plan to mill one with aluminium at work. But it's not easy, regarding how is the part. Maybe a good solution would be to mill only parts of the part 🙂
Thanks for the read!
No mention of one of the worst MMU2 defects, the power brownouts due to the badly designed PCBA? (that's not updated either, just patched)
If the MJF main plate is only good for 80,000 filament changes and it can take thousands of changes for a multi color print, it sure doesn't seem like the MJF main plate isn't good enough. That's at best only 40 prints. Ugh.
how can i get the spool holders that are in picture 5 of 17?
https://storage.googleapis.com/prusa3d-content-prod-14e8-wordpress-blog-prod/2024/04/991c42be-mmu3_aarticle_mk4-2.jpg
are they printable? are they buyable? are they adjustable? i am on the hunt for a adjustable spoolholder
In my point of view construction could have taken longer, because they seem to be a compromise instead of a solution.
The main plate is a planned consumable, because it wears of. 80.000 changes does not seem much. I can't print in MJF, so I've to buy this "spare" part. Why isn't it made from metal? Would this help?
The buffer and it's loading is a mess in my point of view. Why do I have to "walk" on the back of my printer setup to feed in filament? Why isn't there a mechanism to support the feed in mechanism. Especially in an limited enviroment like an enclosure, the usability is bad.
The MMU3 is "certified" to print PLA and PETG. Why isn't there a planned mechanism to compass the MMU3 to print for instance TPU or do a one color print (as I do most of the time)? Coming from MMU2s I fell in love again with the fast start of prints on my MK4. Fiddling around for single color prints is annoying and time consuming.
The whole setup is a pain out of the box when using the enclosure. Luckily some smart one out there made pretty useful mods for it for mounting the buffer on top of the enclosure and fitting 5 spools inside it. There's also a loading fork that you stick in the back of the buffer to avoid removing the buffer inserts. All freely available on printables.
You only need some extra PTFE tube, as the ones from Prusa aren't long enough.
Works and certified are two different things. I guess there wasn't just enough time to thoroughly thest all sorts of filament to confidently certify their use.
In my case, the MMU also loaded and unloaded ASA just fine. TPU didn't want to find the hole into the hotend and jammed.
Could you link to the updated Main Plate on Printables? The latest part right now (R2) was updated July 4, 2023 and appears to have a slightly different shape than the MJF part featured in the image in the article above.
In 2024, the Original Prusa MMU3 continues its evolution with firmware updates aimed at enhancing reliability and usability. These updates focus on improving filament loading and unloading procedures, streamlining workflow for users. Additionally, efforts are underway to enhance filament detection, ensuring smoother printing experiences. The Dev Diary chronicles ongoing endeavors to optimize performance and expand compatibility, reflecting Prusa's commitment to advancing multi-material 3D printing technology.