Update December 18th, 2023: We are updating the article with the info about two new minor releases of firmware v5.1.2 (complete release notes) and PrusaSlicer 2.7.1 (complete release notes). Please always make sure you are downloading the latest version of our software.

Original article:

Apart from the ongoing Black Friday and Cyber Monday sale, we have plenty of other news for you. We’ve got a major firmware update for the MK4, MK3.9, XL and MINI, there’s a new stable PrusaSlicer release, we have news regarding MK3.5 (the easiest way to get Input Shaper into your MK3) and more. Let’s take a look at a quick summary to make sure you’re not missing anything important!

And before we do that, just a quick mention of one thing: in case you like the stuff we do (MK4, XL, PrusaSlicer, Prusament and more), we’d be more than happy if you decided to support us with your vote in the 3D Printing Industry Awards. It takes just a minute to fill in the answers and we’ll really appreciate it! 🙂

Firmware 5.1.0 is here – Input Shaper for XL and MINI, Cancel Object and much more!

Last month, we gave you a detailed overview of alpha firmware 5.1.0 with several major improvements.

The 5.1.0 firmware is now available as a stable release for the MK4, MK3.9, XL and MINI 3D printers and you can download it from here. Please note that in the case of the MINI/MINI+, you need to update to firmware 4.4.1 first if you don’t have it yet. Then, you can flash the 5.1.0 and turn your workhorse into a racehorse. 🙂

The biggest highlight of the new release is Input Shaper and Pressure Advance for both XL and MINI/MINI+ 3D printers. You can now enjoy super-fast 3D printing on both the large-format printer and also on our compact workhorse that is still going strong even years after its release – it’s simply so popular and capable we could not leave it out! And by the way – you can get the MINI+ in a special bundle with 5 filaments during the Black Friday and Cyber Monday sale.

Please keep in mind that the G-code for your printer needs to be sliced with the latest IS-enabled print profiles in PrusaSlicer. Older G-codes are compatible, but Input Shaper will be disabled when printing those. We strongly recommend updating to the latest PrusaSlicer 2.7.0 stable which has been released yesterday – we’ll get to the details in a second.

Major network code improvements and Instant printing

We spent a hefty amount of time improving various parts of the network code to bring you easier, more convenient, and faster over-the-network printing options. Once you transfer a G-code into Prusa Connect, our remote print management system, you will be able to start the printing process within seconds without the need to wait for the entire file to be transferred onto the USB drive. You can start printing pretty much immediately.

To achieve this, we had to implement four things.

First of all, we came up with a G-code streaming system. You don’t have to download the entire file at once. Instead, when you upload a G-code file into Prusa Connect, and initiate a remote print, the system will start sending (streaming) the G-code into the printer bit by bit. Once the header and a few more lines of data are received by the printer, it starts to print. Even with large files, this doesn’t take more than a few seconds. Gradually, the entire file is sent to the printer’s USB drive and is stored there for future print jobs.

Next, we focused on the G-code format itself. A G-code file format is a pretty straightforward thing. You can open it in Notepad and see the entire list of individual instructions. They are easy to read and modify. However, this also means that the format is very space-inefficient. We started looking into this situation and we came up with a proposal for a new, space-efficient (size reduced by up to 70 %), open-source .bgcode format designed for embedded platforms. We’ll get to that in a dedicated chapter because this is a major change.

The third thing we did: we replaced the PNG thumbnails in the G-code file with a much more efficient QOI image format, again saving a substantial amount of space. The only downside is that there was no way to ensure backward compatibility – this is why the thumbnails will work correctly only with firmware 5.1.0 and PrusaSlicer 2.7.0 (and newer releases). We believe it’s a small price to pay considering the benefits it brings. Also, the .bgcode file format can be read only by 3D printers running firmware 5.1.0 and newer.

Finally, we have implemented a number of fail-safe mechanisms to ensure that the network transfers are safe and reliable. In case of a fatal network failure, the print is paused once it detects that the G-code is no longer being streamed. When the connection is not about to be restored anytime soon, you can manually resume the print. Take the USB drive from the printer, plug it into your PC and replace the partially downloaded .gcode file (shown as a folder) with the regular complete .gcode file. When you plug the USB drive back into the printer, the system will recognize the file and find exactly the part of the code where the print stopped and the print job will be resumed.

A small cherry on top is the fact that you can now flash the firmware on your printers remotely via Prusa Connect (in other words – OTA firmware updates are now possible).

Proposing a new Binary G-code format

Coming up with a new file format is always a challenge. People are usually used to working with a specific file type and introducing something new may be considered unwanted or redundant.

This is why we spent a lot of time considering various options and carefully planning our steps. Eventually, we came up with a fully open .bcode file format (the entire specification can be found here). It is open-source, optimized for embedded platforms, and it can be easily converted from .bgcode back to .gcode (and the other way around), so you won’t miss the opportunity to edit the code manually. Using it is, of course, optional. Exporting binary G-code in PrusaSlicer can be enabled or disabled in Print Settings -> Output options -> Export as binary G-code. An option to convert ASCII G-code to binary (or the opposite) has been added to the File menu.

If you decide to use it, you’ll get incredibly small print files. The size difference between ASCII G-codes (the “standard” ones) and binary G-codes will depend on the contents of the file, however, our testing shows that using binary G-codes reduces the file size by 70 % on average. Plus, we’re also introducing new optimization techniques in PrusaSlicer 2.7.0 such as Arc Fitting.

While developing the format, we looked at the solutions proposed by the members of our community, such as MeatPack encoding (utilizing the fact that the character set of a typical G-code is very limited) or heatshrink compression algorithm (designed to have very small memory requirements).

Since we want the format to be fully open and easy to implement, we also provide a libbgcode library which contains the routines to convert ASCII G-code to binary and vice versa. We believe that going open-source with this new format is the way to go. You can learn more about the binary G-Code format, various compression algorithms and more technical details in the release notes here.

We would like to thank Scott Vokes (@atomicobject) for his work on heatshrink and Scott Mudge (@scottmudge) for developing and maintaining MeatPack.

Cancel Object feature in the printer’s menu

Sometimes, there are not just those happy little accidents, but more serious things may happen – like when you print a number of various models at the same time and one of them is not sliced the way you wanted, or perhaps one object came loose during printing. Canceling the entire print job is a waste.

This is why we’re introducing the Cancel Object feature which is available directly in the printer’s menu. During a running print, simply select the Cancel Object menu item, then select from the list of objects the one that should be skipped. You can, of course, use this function multiple times if necessary.

Since in many cases, the objects are instances and their names might be confusing (e.g., Instance 1, Instance 2, Instance 3), it could become difficult to recognize which name belongs to which object. This is why we also added the “Cancel Current Object” action. Wait for the nozzle to get to the object you want to skip and select Cancel Current Object. The system will automatically recognize the correct part of the G-code and disable it. Using Cancel Current Object is the recommended method. And in case you selected an incorrect object, you can use the menu actions to continue printing it.

UI tweaks and updates

We’re also constantly improving the design and functionality of the on-screen menu. For example, we have updated the print-related screens to show more information. The print progress screen features a new layout, the print end screen now displays more statistics – total print time, material consumption, and the prime tower material consumption. The printing screen now displays more information – next to the percentual progress info.

We have also included a huge update for all XL Multi-Tool owners that greatly improves the printing experience: a brand-new pre-print screen. To explain it a bit more: when you slice a multi-material object, the resulting G-code carries information about how individual materials/extruders are assigned to various parts of the object. Usually, you need to take note of this setup and make sure that PrusaSlicer settings and the actual materials loaded in the XL are in sync. The new screen allows you to remap the extruders/materials to different slots. For example, you can switch extruders one and three if you find out that the loaded colors do not match the layout in the G-code.

This also makes, e.g., sharing G-codes much easier, because you’re not limited by the “hardwired” material configuration inside the G-code, but you can modify the assigned materials in this screen. Also, it makes it super easy to set up the very useful Spool Join function – this feature enables you to easily consume any remaining filament from half-empty spools.

Improved Octoprint support

This firmware release also includes improvements for users utilizing OctoPrint for remote printing. It’s important to note that this implementation is still a work in progress, some features will be added (fixed) in future releases.

To make sure everything works correctly, you need to update the Octoprint profile with the following G-codes (in the GCODE Scripts section):

  • After print job is cancelled: M604
  • After print job is paused: M601
  • Before print job is resumed: M602

Please keep in mind that support for Octoprint has several limitations at present:

  • Crash detection and Power Panic are not supported
  • The heat absorption screen on the XL is not displayed and it’s not possible to skip it
  • Multi-Tool XL is not supported at the moment
  • Binary G-Codes are not supported

You can read about all the new features, improvements, fixes and more in the full release notes here. You can download the firmware here: https://help.prusa3d.com/downloads

PrusaSlicer 2.7.0: Full of new features!

An exciting creative addition is the new SVG embossing tool. SVG stands for Scalable Vector Graphics – it’s a vector image format and PrusaSlicer now allows you to easily import these files, emboss them and even wrap them around 3D objects. Usually, you would need CAD software to make this happen, but now you can just drag and drop an SVG logo, title, or even a QR code and merge it with an existing 3D model. This vastly expands PrusaSlicer’s capabilities and we can’t wait to see what you’ll be able to do with this tool!

To continue the explanation of reduced G-code size: we are further slimming down the filesize with G2 and G3 G-codes (arc and circle moves), which is a feature based on ArcWelderLib by FormerLurker who is also the author of the famous ArcWelder OctoPrint plugin – we would like to express our huge thanks to FormerLurker for all the effort invested into the project and for making it open-source!

The function is enabled by default, but if you want to play with it, the Arc Fitting function can be found in Print Settings -> Advanced -> Slicing -> Arc fitting. The G-code size reduction will heavily depend on the contents of the G-code, but this can, in general, save dozens of percent of space.

So, when we combine the binary G-code encoding with Arc Fitting (described above), the filesize is massively reduced. You can check the following chart for a better overview.

There’s so much more in the latest stable release, though! For instance:

  • Custom G-code editor
  • Cancel Object feature implemented (see the chapter above)
  • Improved user interface
  • Generate Wi-Fi credentials for your MK4 / MK3.9 / XL / MINI 3D printer for easier network connection
  • PrusaConnect print host is now available for Original Prusa MINI printer.
  • …and more

Download PrusaSlicer 2.7.0 from our website. See the changelog of 2.7.0-alpha1, 2.7.0-beta1, 2.7.0-rc1 and 2.7.0-rc2 to learn more!

Original Prusa MK3.5 is coming soon!

Along with finishing the work on the Input Shaper firmware for XL and MINI, we have resumed the development of the MK3.5 upgrade. Currently, the project is in the final phase of internal testing and everything looks very promising. We expect to re-enable the orders for the upgrade in our eshop in January 2024, with the first units set to be shipped simultaneously.

The MK3.5 kit enables you to upgrade your MK3S/+ with plenty of new and useful features for a very reasonable price – you will get 32-bit electronics along with a new LCD, as well as Wi-Fi and LAN connectivity with support for remote print management via Prusa Connect. Last, but not least, the printing speed will be significantly faster thanks to Input Shaper and Pressure Advance support.

Solution for stringing on the XL

PrusaSlicer 2.7.0 brings a new feature called Z-hop ramping designed to tackle stringing on all our 3D printers – this mostly applies to the Original Prusa XL, which is a large-format printer with long travel distances and a 0.6mm nozzle. The XL uses pretty much the same extruder as the MK4, but the distances it travels may pose a problem. We made the following change: once the extruder is about to move to a distant part of the print (or, e.g., to the priming tower), it doesn’t perform the usual vertical move followed by a horizontal move. This feature is on by default once the ramping travel move is used and we consider it to be the first public iteration – we will continue to investigate this topic. More information about this feature is in the release notes here.

The feature can be turned on in Printer Settings->Extruder for each extruder you are using in the new Travel lift section. You can override the setting for each filament in the Filament overrides section. The ramping travel is parametrized by an angle and a maximal ramping lift:

However, we need to stress one extremely important thing: any kind of stringing can be easily fixed by a very simple action – by drying the filament you use. We ran intensive internal testing for several weeks and found that with a properly dried filament, there is virtually no oozing/leaking from the nozzle even after extended periods of time and thus no stringing. We kept the nozzle heated to 220 °C and we let it sit there with filament loaded. Nothing oozed from the nozzle even after several minutes. In fact, even the large 0.6mm nozzle with a properly dried filament can be so oozing-resistant that you can, theoretically, print a multi-material print on the XL completely without any sort of priming or wiping tower!

So, in case you’re experiencing visible stringing on your prints, please consider drying your filaments (even fresh ones) before further troubleshooting!

New awesome materials are here!

In case you missed it, we have just released four new awesome rPLA filaments – they are all made from recycled materials and they feature unique natural-based pigments harvested from byproducts of food and pharmaceutical industries. Red algae, wine, corn and even food leftovers are some of the products we use to give our filaments beautiful muted colors that go perfectly hand-in-hand with wood furniture and modern home accessories. Learn more about the process and the rPLA filaments in our recent article here.

And we also continue to expand our lineup of high-quality resins! The latest addition is Model Neutral Beige which is perfect for all sorts of areas: model and hobby applications, rapid prototyping, casting molds… you name it. We’re also aiming to avoid chemicals with a strong odor, health risks, high toxicity, and mixtures containing Bisphenol-A to make our resins as easy and safe to use as possible.

So, this wraps up the latest developments at Prusa Research. We hope you’ll find something interesting in our recent releases! 🙂

Happy printing!