We have recently released a new 3.10 firmware version for all members of our Original Prusa i3 MK3 flagship 3D printer family. There is a lot of things worth talking about, both bug fixes and interesting new features. However, before we get to the details, let us clarify something first. We would love to come up with loads of new things, but the EINSY board doesn’t have much memory left anymore. Before we even get to adding new features, we always have to optimize the existing ones first. This time we managed to save a whopping 5 KB of FLASH memory and almost 400 B of RAM! This is more than it seems – actually, comparable memory size was enough for programming the Apollo Moon landing! (btw, that program is available on Github, too). That means we had enough elbow room this time.
How to save up space? By rewriting the TWI support, for example
One of our favorite methods of saving space is rewriting an older code into a smarter, leaner shape. The best opportunity is when software no longer has to do something that is done on a hardware level instead—for example, the communication between TWI (Two-Wire Interface) and the MK3 optical filament sensor. For historical reasons, we had implemented software support for the optical sensor communication. However, now the hardware-based TWI can take care of it. Even though this only impacts the original MK3 (as the later models have a different filament sensor), the code is shorter for all versions and opens up space for new features.
Rewriting a feature is not the only method of saving space, though. We also thoroughly reviewed the ASM list of critical features and tried to “motivate” the compiler to better translate the code. Sometimes it was a bit rough: for example, with the Thumbnail Skipper feature, the compiler resisted all of our optimization efforts, so we had to use brute-force assembler instead.
So, what are the new features anyway? The first one of them has been a popular user demand for quite some time: showing time remaining till the next filament change – both in manual mode and with the MMU upgrade. Now you can plan ahead instead of relying on the desperate beeping sound of your printer. Now we are waiting for the PrusaSlicer (or other slicers) updates to support this feature. It is coming soon to the MINI printer as well.
As for minor updates, there is now a preheat option for the PVB filament and a 0.8mm nozzle support.
Community translations
Also in the news: the firmware now supports community-made translations. Our printers speak many languages, however, so far, we had to take care of every translation ourselves. Which of more than 2000 world languages should we prioritize, given the limited memory space? One language takes up about 12 KB, therefore, we can only support 16 languages at a time. Eventually, we decided the printer will come with a pre-defined language set and allow for community translations. It seems fair to us: as long as there are active enthusiasts speaking that language, there will be a translation available. Thanks to 3d-gussner (also the author of the translation mechanism), there is now a Dutch version.
You can find the “Community made” submenu in the language selection step, with Nederlands as the only option (so far). If you choose this translation, the printer will copy it into the CPU FLASH and restart in that language – the same as with any other “official” translation. Be careful though, if you don’t speak any Dutch, you might have a hard time switching the language back 🙂 We are currently developing some tools and how-tos for community translators – stay tuned.
The SD-card reading process was reworked big time, and is now ten times faster! Creating the file list and working with it is very fast, no matter if there are a dozen or a hundred items. Up till now, creating long lists was a problem. For certain reasons, we are using the Bubble Sort algorithm, where sorting could take even 30 seconds. The Shell Sort algorithm, chosen from several options, is noticeably faster, even though it is harder to implement. Its only substantial downside is that it sorts the folders as well. We solved this by running the algorithm twice, for folders and files separately. For now, the firmware is still running with the Bubble Sort, which is now so much faster thanks to the new SD card reading process. However, as soon as we test everything properly, we are probably switching over to the Shell Sort.
Print Hosts support
Another reply to popular demand: better support of various external software, communicating with the printer via a serial line (Octoprint, Pronterface, or Repetier-Host), so the users can tailor everything as they wish. In this case, we also had the idea for some time already but had to wait for the available memory space.
For example, the Thumbnail Skipper feature, the main source of the SD-card reading speed increase. PrusaSlicer generates thumbnails for the MINI, which are part of the GCODE. On the MK3 display, these wouldn’t show of course. They weren’t even generated to avoid troubles (even rejecting the firmware by the watchdog) and delaying the start of print. However, an external software could actually use those thumbnails, as a picture always gives a better idea than just a file name (often rather cryptic). In Octoprint, there are already plugins that make thumbnails possible, so we had a lot of requests from the community in this regard.
We used the new SD-card reading process (increasing the speed almost ten times). This process can also skip comment lines in the GCODE, including the thumbnails. Such a change has to be tested thoroughly. It seems to be trivial, but a substantial overhaul of the important firmware section was needed.
Another feature focused on communication with external platforms are the Host Actions. This means equal priority for both local and distant control – being able to start the print both with the printer controlling knob and with external software, getting the same response in both cases. Again, this sounds trivial, but it is something that wasn’t foreseen in the beginning. For example, there is a routine stopping the fan to let the user clean it up in case of a malfunction. Of course, that would make no sense if you are away from the printer… We had to rethink and rework a lot of things.
Thanks to Host Actions, the pieces of code responsible for communication are now tidied up. We hope that the external software will now be able to communicate with the printer more smoothly. This means less need for user interventions and more opportunities for tailoring and fine-tuning everything for a specific workflow. By the way, this is a showcase of open source importance, which makes such quick and easy tweaks possible.
That is all. Almost! You can find all the less fancy (but important nonetheless) details in the very thorough 3.10 firmware Release Notes. Developer community support is not only about giving out swag during the trade shows and maker fairs but having perfect documentation in the first place. We will keep working on it!
We hope the extended Printer Hosts support will help advance all the external printer control software. By the way, let us know what is your favorite software and for what purpose, so we can better focus on the crucial things.
Last but not least, a little teaser for future firmware versions: there will be a “mileage counter”, properly called the “Maintenance menu”. It will track the mileage of the individual steppers and remind the user to lubricate the bearings, check or replace parts, etc. This is important both for the print quality and the longevity of your printer. More on this next time! In the meantime, if you have any ideas on how to improve the MK3s+, please let us know in the dedicated discussion thread of our forum!
Happy Printing!
Why have I been deceived? Where is network printing promised on my mini printers?
Same question! It could be so comfortable to start a print job directly rather than to plug the stick in, stick out, stick in, stick out, stick in…
With the PC next to it and no chance to connect via USB or LAN feels odd.
Using the MINI now for a few month I fear I need a mileage counter for the stick and the USB connector for plugging in and out. 🙂
you could just buy a raspberry Pi and setup octoprint.. I print across the network every day..
I don’t want to offend you but I paid for the product that was supposed to have it. Buy rasbbery blah blah blah this is buy a 4 core processor and only use 2 cores
Honestly, just buy the pi. it’s $35, maybe $40, and it’s so much better. You can install multiple instances to control multiple printers, but the biggest thing is the webcam and plugins. I use octoprint for 1) monitoring prints remotely and 2) creating fancy timelapses and 3) running ‘queues’ of prints that print, then auto-remove the print, then print again. Without plugins and a webcam, the prusa networking is mostly useless.
As someone who always does printer maintenance “tomorrow”, I am looking forward to the upcoming mileage counter and reminder!
A mileage counter on the mini now would be a nice addon 🙂
The tray that fits behind the screen looks like a perfect space for a rasberry pi…Anyone able to make that a reality? 😛
oops can delete wrong thread
Guys please stop working on this dinosaur 8-bit firmware and put all your guys at the new 32-bit core and the mk4. All this optimization will be basically useless for the coming printers. Weeks spent trying to save a couple of kb will be useless when a 64 mb spi flash memory is like $1. A cortex m7 costs like $15.
8bit & mk3 polishes has reached the end of the road.
I have been wanting to buy a new prusa printer for years now, the mk3 is 6 years old. Soon I’ll just get one from another brand.
Completely agree; I’d be fine if my current MK3S has firmware update sunsetted, especially if a “MK4 Spec board” could be retroed to the MK3S.
That said, I presume the 8Bit family of Prusas form the current backbone of Prusas printer farm, and I’d not be surprised if a lot of this work is motivated as much by improving their own quality of life as it is their customers. Figure two birds, one stone as it were.
I agree, i would also like to see a new board for the MK3s, however as you said they have a bulk load of MK3 units in there own factory with no real reason to upgrade them so i bet its driving the firmware upgrades for 8bit.
Very impressive! I’m always delighted when a new firmware version is released. I got my printer about a year ago and I’m happy to see that you keep improving it while working on the MK4. I’m very excited for the mileage counter!
I can’t wait to see the same language option in mini 👍
Will there be a path for the 32bit electronics for the XL on the i3 machine?