Skip to content

3.14.0 Firmware for MK3, MK3S, MK3S+, MK2.5 and MK2.5S

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 02 Jul 06:47
· 168 commits to MK3 since this release
b97131b

Summary

  • PrusaLink and Prusa Connect updates
  • PowerPanic improvements
  • Mesh Bed Leveling (MBL) improvements
  • New / Improved G-codes
  • User Interface updates
  • Community features
  • Firmware development changes

This is the stable release of firmware version 3.14.0, with a primary focus on PrusaLink and Prusa Connect. This firmware version only works with MMU2S/MMU3 firmware version 3.0.2! It is necessary to update the firmware in the MMU2S/MMU3!

PrusaLink and Prusa Connect improvements

The main focus of the firmware release was to improve the usability of the MK2.5/S and MK3/S/+ printers with PrusaLink and Prusa Connect. Please update Prusa Link to version 0.8.1 or newer to benefit from the firmware updates. See here PrusaLink 0.8.1 or PrusaLink latest release

The community member @sarusani already implemented an OctoPrint plugin Active Prusa HostTimer 🎉

Add Set Ready and Set not Ready to the LCD main menu

This feature makes it possible to set the printer in the Ready state from the LCD directly, not only from Prusa Connect. As a result, the print queue can be advanced without having to open Prusa Connect in a web browser.

Add Reprint to LCD main menu

This feature allows the user to repeat the last finished print. The Reprint menu is only shown:

  • When the SD card print finished successfully
  • When a PrusaLink/Prusa Connect print finished, and the host is connected

PowerPanic improvements

This update brings improvements to both SD-based power panic and initial support for "USB" (or RPi port) power panic when using PrusaLink/Prusa Connect on the MK3/S/+.

All of the necessary information for recovering a print is stored in the EEPROM during a power panic event so that the printer can recover on its own in the case of SD prints or the host can attempt to resume the print in the case of PrusaLink prints. In the case of PrusaLink prints, the printer will restore temperatures and pause the print, waiting for the host to start up again and reconnect. The host then sends the M79 G-code and the printer will inform the host with //action:commands about the state of the saved print:

  • In case of a short power outage with the bed less than 5 °C colder than the target temperature, it will send //action:uvlo_auto_recovery_ready to the host.
  • If the bed temperature dropped by more than 5 °C, the printer will send //action:uvlo_recovery_ready, which is similar to the SD print “Blackout occurred. Recover print?” where the user has to decide if the print still sticks to the bed and the printer should try to recover.
  • The host software needs special support for this new feature, as such for now only PrusaLink officially supports this feature.

Mesh Bed Leveling (MBL) improvements

This release also greatly improved the mesh bed leveling feature for all printers supported by this firmware. It both fixes bugs and adds new features. More details are described below.

Print area MBL

A few years ago, the community added support in the firmware for 7x7 mesh bed leveling. The advantage of the 7x7 mesh measurement was that it provided the printer with a detailed surface map, eliminating the need to interpolate (calculate) the space between points, as was necessary with the 3x3 mesh measurement. However, using the 7x7 mesh resulted in a longer measuring process, taking up to one minute (probe all 49 points).

This feature was originally a part of the Buddy firmware for the MK4/XL, but with this release, it is also available for older printers, implemented by @leptun.

It works similarly to the Buddy firmware, where PrusaSlicer informs the printer via G-codes which area of the bed contains the printed objects, but the implementation is a bit different. Whereas in the Buddy firmware, the M555 G-code is used, with the 8-bit firmware we directly tell G80 (the MBL command) the positions of the objects to save resources.

This feature requires support from PrusaSlicer, so updated startup G-codes are needed. The official Prusa profiles support this feature since PrusaSlicer 2.7.4.

Since only a reduced portion of the bed is measured, the overall mesh bed leveling process will be quicker than before, while maintaining all the advantages of 7x7 mesh bed leveling.

The feature is now linked to 7x7 MBL. So when the user enables 7x7 MBL, this feature also gets enabled automatically (if the G-code is resliced with compatible profiles). If the G-code doesn't support this feature, it will probe the entire bed just like before.

To get the best results with this feature, it is recommended to run a Z calibration to update the default mesh information in the EEPROM. The default mesh is used outside of the probed print area and also for determining bad points that need to be rechecked.

MBL bug fixes and improvements

This release also addresses some issues that were discovered during the development of the Print area MBL. As a result, the amount of points that need to be rechecked is reduced. This was especially problematic for beds where the Z origin was lower than measured bed points.

Another improvement to the G80 G-code is the new M parameter which allows the user to enable or disable MBL magnet compensation from the G-code startup script. Thanks @sarusani!

New / Improved G-codes

  • Improve Sheet G-code M850 to report and set the active steel sheet. Thanks @vintagepc!
  • M913 active by default to report TMC driver current settings
  • M914 and M915 with the parameter Q will report Mode [Normal | Silent]
  • M709 MMU enable, disable, soft reset, hard reset and erase MMU eeprom
  • M125 to set pause custom positions
  • M420 same as G81 to print out Mesh data for external analysis.
  • M79 is a new G-code to “ping” the printer from the host. This G-code enables few features and menus as the printer “knows” that the host is ready to receive instructions.
  • The range of M75 to M78 was added for host software to be able to start, pause, resume and stop the print statistics timers.
  • Add custom printer name to EEPROM. At this moment the printer name can only be set by direct EEPROM manipulation using D3 commands and is limited to 17 characters. In the future, it could be improved by implementing M531 or M550 G-codes.

User Interface updates

This release adds new features to the UI and fixes bugs found in previous releases.

LCD diacritics support

With this release, it is now possible to display diacritics on the old hd44780-based display. This feature was implemented by @leptun.
This was quite challenging from a technical standpoint due to many limitations imposed by the LCD. This is due to the fact that characters can only be 5x8 pixels (making it harder to draw diacritics that can be discernible), there can only be 8 distinct custom characters at once on the screen (each diacritic is a custom character) and is also not possible to modify the default font to better align it with the diacritics.

In any case, For most messages, these limitations do not cause any issues. Should there ever be more than 8 different custom characters on the screen at once, only the first 8 will be displayed properly, the others using "alternate" forms that look similar enough.
Please note that this does not mean that diacritics in filenames on the SD card are supported at the moment and will most likely never be supported due to limitations across the entire firmware. Only messages in the UI support diacritics, including the sheet names.

Thanks to the community members below for offering their time to review, update and approve the community and stock translations:
🇵🇱 @arekm
🇫🇷 @Ilovemyhous @ErwanAliasr1
🇭🇷 @Prime1910
🇭🇺 @AttilaSVK
🇳🇴 @trondkla
🇷🇴 @leptun and @Hauzman
🇸🇰 @ingbrzy and @shatter136
🇸🇪 @Painkiller56

image
image
For more examples, see the end of the release notes.

UX improvements

There have been some updates done to the UI such that menus are only shown when it makes sense:

  • During the PowerPanic recovery we need to ensure that the printer recovers correctly, so most LCD menus are blocked, except:
    • Stop print in case the recovery isn’t possible and the user decides to cancel the PP recovery
    • Statistics
    • Fail Stats
    • Support
  • Reprint is only shown when: (Kudos to @jfestrada for the idea and initial Pull Request)
    • SD card print finished correctly
    • PrusaLink/Connect print finished correctly and the host is connected
      • The host needs to send M79 to ensure that it can receive instructions from the printer.
  • Resume
    • Is hidden while resuming
    • With host prints only shown when the host is available, see comment above.
  • Autoload filament / Load filament / Unload filament are shown
    • Depending on the state of FSensor de- /active
    • Depending on whether filament is detected or not
  • Add Unload filament option during color change from LCD or M600 G-code
  • Add Auto home to the Tune menu while the printer is paused.
    • If a user needs to intervene with the extruder or bed during a pause, the X and Y axes may lose the pause/restore position. The Auto home will home X and Y, this should only be used when the extruder or bed has been moved. As each homing may result in slightly different positions it's not ensured that the new layers will “perfectly” resume / align with the pre-paused layers.
  • Statistics
    • Host prints are now added to the statistics.
    • During the print, the Statistics show the ongoing values.

Community features

  • E3D REVO:
    • Nozzle diameter is shown on the Info screen and the Nozzle diam. menu is directly under Settings
    • Nozzle change for REVO without heating up the nozzle
  • Shutdown host (needs custom build) option can be used to shut down a host correctly.

Firmware development changes

All translated messages are now in messages.cpp/.h this should make it easier to find and reuse existing messages. Pull Requests with new messages will only be accepted when the messages are in these two files!

Appendix