Releases: prusa3d/Prusa-Firmware
3.12.0 Firmware for MK3, MK3S, MK3S+, MK2.5 and MK2.5S
Summary
- New thermal model protection
- Nozzle change menu
- NylonPA sheet profile added
- Arc interpolation features G2/G3
- UI improvements and fixes
- New build environment
- New language scripts
- XYZ calibration updates
- New language scripts
- Updated translations
- Farm mode
- Bug fixes
- Known issues
This is the final release of firmware 3.12.0. This changelog is a summary of the previous releases 3.12-beta1, 3.12-RC1 and 3.12-RC2. The main focus is on the new thermal model feature for improved safety.
ATTENTION: Please note the thermal model requires calibration, which takes about 12 minutes to complete. It is recommended to perform the calibration in order for the feature to work properly.
New thermal model protection (MK3/MK3S/MK3S+)
History of development
For the past several months, we’ve been hard at work to bring all thermal-related safety features to a whole new level. The 3.12-BETA firmware was the first public release of the new Thermal model protection.
The firmware is now capable of detecting unexpected heating issues of any sort and stopping heating quickly (in 10-12 seconds) to avoid potential damage to your 3D printer. This encompasses cabling issues, an incorrectly working heater block, thermistor faults and external factors too (draft, blobs forming on the extruder, etc.).
Check our detailed dev diary blog article explaining all the details behind this new feature.
Protection is always active
The thermal model protection increases the overall security of the heating system and starting firmware 3.12.0, will be turned on by default. Since every printer is slightly different it is necessary to calibrate the printer first.
Calibrate the temp model on your printer
In case the printer is updated from any firmware prior to 3.12.0, or a factory reset is performed, the thermal calibration is considered invalid and must be executed again! If this process is skipped by the user, the printer will beep and possibly pause more often.
Temp model calibration is available in the LCD menu Calibration -> Temp model cal.
as well in the initial setup Wizard.
- The calibration takes approximately 12 minutes and for the duration, you can’t give the printer any other commands.
- During the calibration the LCD status line shows which step it is going through at the moment.
- As soon as you see ”Original Prusa MK3S” on LCD, it is finished.
Please re-run the temp model calibration to ensure the best performance and minimize the temp model warnings,
- when you change:
- the nozzle
- heater block
- the heater cartridge
- the hotend thermistor
- the print fan
- fan shroud
- complete hotend assembly
- When you add a silicone sock
- When you move the printer to a different environment (enclosure, etc.).
Printer behaviour
While preheating:
In case the algorithm detects any issue, the printer starts beeping. If the problem persists for about 10 seconds, the heating is stopped and the message “Thermal anomaly” is displayed. The printer continues beeping (calls for user attention).
While printing:
Similar to preheating, a discrepancy between the model and thermistor readings causes the printer to first beep and display “Thermal anomaly” and after about 10 seconds, the print is paused. The nozzle is turned off and the printer continues beeping.
Please note, that once a “Thermal anomaly” is detected the printer “locks” itself to prevent any possible damage and it is necessary to perform certain actions. See more information below.
Added Clear TM error
To “unlock” the printer in case a “Thermal anomaly” is detected, there is a new option in the menu LCD menu -> Clear TM error
to temporarily clear/acknowledge the issue. As this is only a “temporary” solution proper calibration is recommended. In case the temp model calibration doesn't solve this, please contact Prusa support or open a GitHub issue.
Modded printers
In case your printer is equipped with third-party components (heating or cooling), the thermal model might not be working properly. The developers are trying to expand support, but a large amount of data is needed to calibrate the model properly. Internally we have tested and analyzed over 150 000 OEM heaters and thermistors.
We are aware that third-party nozzle E3D REVO is not working correctly and we have an active GitHub issue where users reported their values. At this moment we don’t have enough data to analyze these, so please if you are a REVO user share your log files there.
Turning the thermal model protection off is not recommended, however, at your own risk it can be disabled via the serial line by sending G-code M310 S0
followed by M500
to make it permanent.
Feedback report
Please report positive feedback on the thermal model (with an ✔️ at the end of the release notes). In case you run into issues, start a New issue
- The report should contain at least following informations
- Reproducible: Yes/No
- Printer model: MK3/S/+ stock or modified
- Modifications: Example E3D Revo or Copper block or different Fan shroud (with link)
- If a specific print causes issues. Please attach the printed model
- Try to add a serial log of the print failing.
Nozzle change menu
We added the necessary Nozzle change
menu option under Settings -> HW Setup
which disables the temp model temporarily. Please read Changing or replacing the nozzle (MK2.5S/MK3S/MK3S+) before you start. Please also keep in mind that changing the nozzle will need the first layer adjusted, as you will never be able to tighten the nozzle at exactly the same height as the previous one. We made this change thanks to the feedback from our community testers (see #3719).
NylonPA sheet profile added
The list of sheet profiles is now extended with the “NylonPA” option. Please note that this is just a name of the profile and there is no difference to other stock profiles (Smooth1, Texture1,...).
Since the list of profiles is limited, the “NylonPA” is replacing the current profile “Satin2”. In order to see this change, a Factory reset is required. Before you do so, please write down the “Live Adjust Z” values for all the calibrated sheets.
Once a Factory reset is performed, the default list is:
- Smooth1
- Smooth2
- Texture1
- Texture2
- Satin
- NylonPA
- Custom1
- Custom2
Arc interpolation features G2/G3
Until now, whenever the printer was supposed to “draw” the shape of an arc, the internal logic of the firmware interpreted and printed it as a segmented line. In most cases, this will be unnoticed and the line will look rounded, but in some scenarios, this algorithm wasn't working properly.
Community member @FormerLurker proposed a solution, which was tested internally by our testing department and they confirmed it works as expected. The printer is now capable of printing a smooth arc without any noticeable edges. This firmware release incorporates this pull request #2657 and we would like to thank FormerLurker for his amazing work.
In case you want to learn more about this feature, please visit #2657.
Additionally, this release also fixes long-standing issues regarding G2/G3 moves. The following things now work properly when executing G2/G3 commands:
- Pause/resume from the LCD or G-code
- Crash detection
- Filament runout
- Power Panic
- Fan errors
UI improvements and fixes
There are multiple fixes and improvements across the user interface aiming to improve the overall experience.
Firmware flashing
While flashing the firmware with PrusaSlicer there are two parts. The first part is, flashing the firmware into the CPU memory, and the second part is flashing languages in the external (xflash) memory. Starting with this firmware the second part is now displaying an extra LCD message Upgrading xflash Do not disconnect!
.
Status line (M117)
This firmware release improves behavior when the M117 message was in some scenarios permanently overwritten with system messages (for example when M117 was immediately followed by the M601
/ G4
).
Please note that your M117 message should be kept within 20 characters, any excess characters will be truncated. We would like to thank @RodKimmell @GWdd @daBernd for reporting the issue.
Firmware version on boot
The firmware version is now displayed on the startup screen
Fixes
- The “back arrow” sign was added to the Preheat menu.
- Don't prompt "New firmware version available:" if disabled in Settings. Until now a warning was always displayed when G-code
M115
with the latest firmware version (e.g. M115 U3.11.0) was sent and this value was higher than the current firmware versio...
3.12.0-RC2 Firmware for MK3, MK3S, MK3S+, MK2.5 and MK2.5S
Summary
- Thermal model protection updated
- Nozzle change menu
- XYZ calibration updates
- Bug fixes
This is the second release candidate of the upcoming firmware 3.12.0.
Thermal model protection updated
The thermal was first introduced in 3.12-beta1 and updated 3.12-RC1. This release brings further improvements and tweaks.
Protection is always active
The thermal model protection increases the overall security of the heating system and starting firmware 3.12.0, will be turned on by default. Since every printer is slightly different it is necessary to calibrate the printer first.
Modded printers
In case your printer is equipped with third-party components (heating or cooling), the thermal model might not be working properly. The developers are trying to expand support, but a large amount of data is needed to calibrate the model properly. Internally we have tested and analyzed over 150 000 OEM heaters and thermistors.
We are aware that third-party nozzle E3D REVO is not working correctly and we have an active GitHub issue where users reported their values. At this moment we don’t have enough data to analyze these, so please if you are a REVO user share your log files there.
Turning the thermal model protection off is not recommended, however, at your own risk it can be disabled via the serial line by sending G-code M310 S0
followed by M500
to make it permanent.
Calibrate the temp model on your printer
In case the printer is updated from any firmware prior to 3.12.0, or a factory reset is performed, the thermal calibration is considered invalid and must be executed again! If this process is skipped by the user, the printer will beep and possibly pause more often.
Temp model calibration is available in the LCD menu Calibration -> Temp model cal.
as well in the initial setup Wizard.
- The calibration takes approximately 12 minutes and for the duration, you can’t give the printer any other commands.
- During the calibration the LCD status line shows which step it is going through at the moment.
- As soon as you see ”Original Prusa MK3S” on LCD, it is finished.
Please re-run the temp model calibration to ensure the best performance and minimize the temp model warnings,
- when you change:
- the nozzle
- heater block
- the heater cartridge
- the hotend thermistor
- the print fan
- fan shroud
- complete hotend assembly
- When you add a silicone sock
- When you move the printer to a different environment (enclosure, etc.).
Printer behavior
While preheating:
In case the algorithm detects any issue, the printer starts beeping. If the problem persists for about 10 seconds, the heating is stopped and the message “Thermal anomaly” is displayed. The printer continues beeping (calls for user attention).
While printing:
Similar to preheating, a discrepancy between the model and thermistor readings causes the printer to first beep and display “Thermal anomaly” and after about 10 seconds, the print is paused. The nozzle is turned off and the printer continues beeping.
Please note, that once a “Thermal anomaly” is detected the printer “locks” itself to prevent any possible damage and it is necessary to perform certain actions. See more information below.
Added Clear TM error
To “unlock” the printer in case a “Thermal anomaly” is detected, there is a new option in the menu LCD menu -> Clear TM error
to temporarily clear/acknowledge the issue. As this is only a “temporary” solution proper calibration is recommended. In case the temp model calibration doesn't solve this, please contact Prusa support or open a GitHub issue.
Feedback reporting
To give positive feedback, please use a ✔️ here below the release notes. In case of issues TM: warning
or TM: error
start a GitHub issue, which should contain at least the following information:
- Reproducible: Yes/No
- Printer: MK3/S/+ stock or modified
- Modifications: Example E3D Revo or Copper block or different Fan shroud (with a link)
- Specific print causes issues. Please attach the printed model
- Try to add a serial log of the print failing.
Nozzle change menu
We added the necessary Nozzle change
menu option under Settings -> HW Setup
which disables the temp model temporarily. Please read Changing or replacing the nozzle (MK2.5S/MK3S/MK3S+) before you start. Please also keep in mind that changing the nozzle will need the first layer adjusted, as you will never be able to tighten the nozzle at exactly the same height as the previous one. We made this change thanks to the feedback from our community testers (see #3719).
XYZ calibration updates
A message displayed on the screen has been updated from It will take up to 12 mins.
to It will take up to 24 mins.
as some users reported that their printer needed more time. We added some status information during the XYZ calibration to give visual feedback that the printer is still busy.
Bug fixes
- Fixed
µm
being shown incorrectly in languages other than English.
3.12.0-RC1 Firmware for MK3, MK3S, MK3S+, MK2.5 and MK2.5S
Summary
- New thermal model protection
- NylonPA sheet profile added
- Updated translations
- Bug fixes
- Known issues
This is the first release candidate of firmware 3.12.0 with an extra safety feature.
New thermal model protection
This safety feature was introduced in the previous release 3.12.0-BETA1, see the release notes for more information and in case you are interested in technical details, we recommend reading the dev diary blog. This release further extends the capabilities of this thermal model.
How to calibrate your printer
The Temp model calibration is now part of the menu. Go to the “LCD menu -> Calibration -> Temp model cal.”.
- Please note that the average calibration time is about 10-12 minutes and your printer will not accept any other input during this time.
- During the calibration, the LCD status line shows information about the current stage of the process.
- As soon as you see the Original Prusa MK3S text on the LCD, the procedure is finished and the Temp model is activated.
New default Temp model values
The devs were able to improve the default temp model values after analyzing more data we collected. We would like to thank our community for helping us improve the model even further by reporting positive feedback along with several issues.
Feedback report
Please report positive feedback on the thermal model (with an ✔️ at the end of the release notes). In case you run into issues, start a New issue
- The report should contain at least following informations
- Reproducible: Yes/No
- Printer model: MK2.5/S , MK3/S/+ stock or modified
- Modifications: Example E3D Revo or Copper block or different Fan shroud (with link)
- If a specific print causes issues. Please attach the printed model
- Try to add a serial log of the print failing.
NylonPA sheet profile added
The list of sheet profiles is now extended with the “NylonPA” option. Please note that this is just a name of the profile and there is no difference to other stock profiles (Smooth1, Texture1,...).
Since the list of profiles is limited, the “NylonPA” is replacing the current profile “Satin2”. In order to see this change, a Factory reset is required. Before you do so, please write down the “Live Adjust Z” values for all the calibrated sheets.
Once a Factory reset is performed, the default list is:
- Smooth1
- Smooth2
- Texture1
- Texture2
- Satin
- NylonPA
- Custom1
- Custom2
Updated translations
We would like to thank the community members for updating translations with new texts. In case you want to join and help translate the firmware to your language, please visit the following article Community translations.
Based on the feedback from our translators:
- The translation “.po” files can and should now contain diacritics which will be automatically replaced.
- This should improve the spell checks in different languages and hopefully make it easier for the translators.
- At this moment we are still limited by the LCD screen only to show [aA-zZ] and [äöüß] characters.
Bug fixes
- Parts of the firmware used “Extruder fan”, while the correct name is “Hotend fan”. This is now unified across the entire code base.
- Some SD cards caused issues, the firmware should handle them correctly from now on.
- The long button press wasn’t supposed to be active in some locations, this has been fixed now.
- Minor SD card issue in FARM mode fixed. Sorting and long filenames have not been shown correctly.
Known issues
A feature detecting the filament sensor hardware version is currently not working. Printing process isn't affected, however if the filament sensor is not working properly, the printer is unable to verify it. The devs are aware of this issue and a fix will be provided soon.
3.12.0-BETA1 Firmware for MK3, MK3S, MK3S+, MK2.5 and MK2.5S
Summary
- New thermal model protection
- Arc interpolation features G2/G3
- UI improvements and fixes
- Farm mode
- New build environment
- New language scripts
- Complete changelog
New thermal model protection
History of development
For the past several months, we’ve been hard at work to bring all thermal-related safety features to a whole new level. The recent 3.12-BETA firmware is the first public release of the new Thermal model protection.
The firmware is now capable of detecting unexpected heating issues of any sort and stopping heating quickly (in 10-12 seconds) to avoid potential damage to your 3D printer. This encompasses cabling issues, an incorrectly working heater block, thermistor faults and external factors too (draft, blobs forming on the extruder, etc.).
Check our detailed dev diary blog article explaining all the details behind this new feature.
Limitations
Since the thermal model was developed on a model of a factory-assembled extruder, it may not work correctly on some modified or after-market extruders (ex. Revo, BMG, etc.). Please let us know if you experience any issues during the calibration process.
How to calibrate your printer
Since this feature is still experimental, it is disabled by default and must be started using a G-code over a serial line. A more user-friendly approach via the LCD menu will be implemented in the upcoming releases.
Calibration workflow:
M503
- reads the current settings (writes them down)M310 A F1
- starts the autotune calibration process, which takes around 15 minutesM310 S1
- enables the thermal model after it has been fine-tunedM500
- saves the settings to the printerM503
- ensure that theM310
values are stored correctly (compare them with initial M503 readings)
A detailed explanation of the G-codes for the thermal model is available at RepRap wiki.
Arc interpolation features G2/G3
Until now, whenever the printer was supposed to “draw” the shape of an arc, the internal logic of the firmware interpreted and printed it as a segmented line. In most cases, this will be unnoticed and the line will look rounded, but in some scenarios, this algorithm wasn't working properly.
Community member @FormerLurker proposed a solution, which was tested internally by our testing department and they confirmed it works as expected. The printer is now capable of printing a smooth arc without any noticeable edges. This firmware release incorporates this pull request #2657 and we would like to thank FormerLurker for his amazing work.
In case you want to learn more about this feature, please visit #2657.
Additionally, this release also fixes long-standing issues regarding G2/G3 moves. The following things now work properly when executing G2/G3 commands:
- Pause/resume from the LCD or G-code
- Crash detection
- Filament runout
- Power Panic
- Fan errors
UI improvements and fixes
There are multiple fixes and improvements across the user interface aiming to improve the overall experience.
Firmware flashing
While flashing the firmware with PrusaSlicer there are two parts. The first part is, flashing the firmware into the CPU memory, and the second part is flashing languages in the external (xflash) memory. Starting with this firmware the second part is now displaying an extra LCD message Upgrading xflash Do not disconnect!
.
Status line (M117)
This firmware release improves behavior when the M117 message was in some scenarios permanently overwritten with system messages (for example when M117 was immediately followed by the M601
/ G4
).
Please note that your M117 message should be kept within 20 characters, any excess characters will be truncated. We would like to thank @RodKimmell @GWdd @daBernd for reporting the issue.
Firmware version on boot
The firmware version is now displayed on the startup screen
Fixes
- The “back arrow” sign was added to the Preheat menu.
- Don't prompt "New firmware version available:" if disabled in Settings. Until now a warning was always displayed when G-code
M115
with the latest firmware version (e.g. M115 U3.11.0) was sent and this value was higher than the current firmware version installed. TheSettings-> HW Setup -> Check -> Firmware [None]
now suppresses the message below even if the M115 is included in the G-code.
- Starting this release the UI ignores the knob long-press action if not allowed. Thanks to @Panayiotis-git for providing the solution.
- In case the user stops the print, the remaining time is cleared. Thanks for reporting this issue @Stego72
Farm mode
The Farm mode is used internally on the Prusa farm and will be from now available in a separate build and only in English. We have decided to remove it from the multi-language versions to save resources for other features.
New build environment
The build environment for all 8-bit firmware versions was updated from Arduino IDE 1.8.5 to 1.8.19 with GCC 7.3, which saved 1+ KB of resources. This is an important change. Older Arduino IDEs and/or GCC versions may not compile the code anymore from now on.
New language scripts
The new language scripts revealed missing translations hidden in the source code but also an obsolete one. The translation and post-processing process has not only improved for the developers but also for the translators.
Complete changelog
List of all changes in this firmware can be found here.
3.11.1-RC1 Firmware for MK3, MK3S, MK3S+, MK2.5 and MK2.5S
Summary
- Automatic ADC pull-up reset
- Norwegian language (community translation)
- URL updated to help.prusa3d.com
- Feedback from the Prusa community
This is the first release candidate of firmware 3.11.1 with an extra safety feature, minor weblink change and additional language translated by the community.
Automatic ADC pull-up reset
This firmware release includes an extra safety feature intended to prevent pull-ups to be set unintentionally on any of the analog-to-digital converter (ADC) pins. The ADC pull-ups are now periodically reset to prevent false reads. Everything happens automatically in the background, there is no need for user intervention.
Norwegian language (community translation)
The list of languages translated by the active Prusa community members grows longer with the addition of Norwegian 🇳🇴. We would like to thank members @pkg2000 and @trondkla who contributed their translations to this firmware release.
You can also contribute and expand the translation team. Read the article about translations at our Help site to learn how to join.
URL updated to help.prusa3d.com
In this release, the developers have replaced the link to the site “howto.prusa3d.com,” which was displayed in the printer's Support menu, with a new link pointing to “help.prusa3d.com.” Here you can find articles explaining how to set up the printer, describing firmware features, troubleshooting, maintenance and many more.
Feedback from the Prusa community
We greatly appreciate the feedback and help from the Prusa community we get with each firmware release. You can join us on the forum.prusa3d.com, where we discuss new features and bugfixes, and share your thoughts.
3.11.0 Firmware for MK3, MK3S, MK3S+, MK2.5 and MK2.5S
Summary
- New community translations
- Added LCD support for
äöüß
andμ
- SN check fixed
- Changes to on-screen messages
- Known issue (LCD glitches)
This is the final release of firmware 3.11.0 introducing additional language translations prepared by our community. Compared to the previous release candidate, there is one new community-translated language (Swedish) and the developers have done few fixes and improvements.
We would like to thank Prusa community members @AttilaSVK, @Painkiller56, @Hauzman, @Prime1910, @PRPA041, @ingbrzy, @shatter136, @pkg2000 who contributed to this firmware release.
New community translations
Due to multiple firmware optimizations, the developers were able to free up space and the first community language (Dutch) was added in the release 3.10.0. For this release we are further extending the list of languages:
- Hungarian by @AttilaSVK and @Hauzman
- Romanian by @leptun and @Hauzman
- Croatian by @Prime1910 and @PRPA041
- Slovak by @ingbrzy and @shatter136
- Swedish by @Painkiller56 and @pkg2000
We welcome everyone to join us and localize the printer to their native language. The translation procedure is designed to be easy and only basic computer skills are required. In case you would like to translate and maintain the translations, please visit this article describing community translations.
If you have any suggestions for the community translations please open a community GitHub issue and don’t forget to mention the language, the message/translation and if you know the maintainer also tag her/him with GitHub username. You can find the status and maintainers of community languages here. The community members are responsible to follow up your issues and prepare changes if needed for the next release.
Original Prusa MK2.5 and MK2.5S users will find the firmware in the provided zip files.
- English + Romanian end with
..._en-ro.hex
- English + Hungarian end with
..._en-hu.hex
- English + Croatian end with
..._en-hr.hex
- English + Slovak end with
..._en_sk.hex
- English + Swedish end with
..._en_sv.hex
Disclaimer: Please note that community translations are made by the active community members and aren't further verified by Prusa Research, therefore some parts might be translated differently than originally intended.
Added LCD support for äöüß
and μ
The German translation got an update and now shows messages with an äöüß
instead of ä
-> ae
, ö
-> oe
, ü
-> ue
and ß
-> ss
. The only limitation is, that we don’t have uppercase ÄÖÜ
so words and at the beginning of a sentence it stays in lowercase äöü
. We believe that even with only lower case äöü
words and sentences read better than before.
In Swedish we also added the support for äÄöÖ
as in German above but characters with diacritics åÅ
are replaced without the diacritics as aA
.
SN check fixed
In firmware 3.10.1, we have added a motherboard serial number check, a function for future projects. If you have a genuine Original Prusa 3D printer, this does not affect the functionality of your machine in any way. However, in case you run into issues with the serial number check, please contact our tech support. In case you have purchased a non-genuine board this should be now fixed.
Changes to on-screen messages
We have improved and consolidated a few messages displayed on the screen which saved quite a bit of resources we can use for other features but also keeps the wording more consistent.
- Word
Choose
has been replaced bySelect
- We have unified fan naming to:
Extruder
andPrint
fan.Nozzle
fan has been removed. - Renamed
Temp. cal
toPINDA cal.
as this menu/feature might be misunderstood. The sole purpose of this feature is to calibrate the temperature drift of the PINDAv2 sensor. Note that SuperPINDA doesn’t need anyPINDA cal.
as it is temperature-independent.
Resources saved:
Printer | bytes flash | bytes mem |
---|---|---|
MK3S | -300 | -5 |
MK3 | -510 | -5 |
MK25S | -900 | -5 |
Known issue (LCD glitches)
Some printers might experience LCD glitches, or random characters displayed during XYZ calibration. This has been discovered and reproduced recently and the affected printers are mostly MK2.5 and MK2.5S. Based on our observations for the MK3 family of printers this issue is rare.
The developers have identified the issue and are working on a solution. We are sorry for the inconvenience.
3.11.0-RC1 Firmware for MK3, MK3S, MK3S+, MK2.5 and MK2.5S
Summary
- New community translations
- Added LCD support for
äöüß
andμ
- Known issues
This is the first release candidate of firmware 3.11.0 introducing additional languages translated by the community. We would like to thank Prusa community members @AttilaSVK, @Painkiller56, @Hauzman, @Prime1910, @PRPA041, @ingbrzy and @shatter136 who contributed to this firmware release.
New community translations
Due to multiple firmware optimizations, the developers were able to free up space and the first community language (Dutch) was added in the release 3.10.0. For this release we are further extending the list of languages:
- Hungarian by @AttilaSVK and @Hauzman
- Romanian by @leptun and @Hauzman
- Croatian by @Prime1910 and @PRPA041
- Slovak by @ingbrzy and @shatter136
We welcome everyone to join us and localise the printer to their native language. The translation procedure is designed to be easy and only basic computer skills are required. In case you would like to translate and maintain the translations, please visit this article describing community translations.
If you have any suggestion to the community translations please open a community GitHub issue and don’t forget to mention the language, the message/translation and if you know the maintainer also tag her/him with GitHub username. You can find the status and maintainers of community languages here. The community members are responsible to follow up your issues and prepare changes if needed for the next release.
Original Prusa MK2.5 and MK2.5S users will find the firmware in the provided zip files:
- English + Romanian end with
..._en-ro.hex
- English + Hungarian end with
..._en-hu.hex
- English + Croatian end with
..._en-hr.hex
- English + Slovak end with
..._en_sk.hex
Disclaimer: Please note that community translations are made by the active community members and aren't further verified by Prusa Research, therefore some parts might be translated differently than originally intended.
Added LCD support for äöüß
and μ
The German translation got an update and now shows messages with an äöüß
instead of ä
-> ae
, ö
-> oe
, ü
-> ue
and ß
-> ss
. The only limitation is, that we don’t have uppercase ÄÖÜ
so words and at the beginning of a sentence it stays in lowercase äöü
. We believe that even with only lower case äöü
words and sentences read better than before.
Known issues
In the firmware 3.10.1 we have added a motherboard serial number check, a function for future projects. If you have a genuine Original Prusa 3D printer, this does not affect the functionality of your machine in any way. In case you run into issues with the serial number check, please contact our tech support. In case you have purchased a non-genuine board, please be patient or downgrade the firmware - a fix is currently being tested and we plan to include it in the next release.
3.10.1 Firmware for MK3, MK3S, MK3S+, MK2.5 and MK2.5S
Summary
- New debugging functions & crash analysis tools
- A rare memory bug debugged and fixed
- Long-Press action fixed
- Move auto reporting out of the temperature ISR
- Uint8_t used consistently for the block buffer's index
- Arduino boards definition updated
- Build script updated
- Algorithm for reading SN in EEPROM improved
- Spanish translation fixed
- Firmware version parsing removed
- Bug fixes
This is the final release of firmware 3.10.1, which introduces improved functionality and several bug fixes. These release notes also include information provided in the previous release RC1.
Before we describe all the new features, improvements and changes, we would like to thank the entire Prusa community members for their feedback - especially @gudnimg and @Panayiotis-git who helped us test and debug this firmware release. Your input is very much appreciated!
New debugging functions & crash analysis tools
The "Dump memory" feature is a very important new debugging support tool. It allows you to store the RAM content into the xFlash memory for further issue/bug analysis, just like we have in the Buddy firmware for the MINI+. This procedure has proven vital for identifying the rare bug of “static memory overwritten”.
MK3, MK3S and MK3S+
This feature is now accessible from the printer’s Display menu Support-> Dump memory, which is the last command within the Support menu.
The dump command is also available during an active print, which allows the user to execute an actual Memory "Snapshot" during a critical status or misbehavior of the printer. You will find it under LCD Menu -> Support -> Dump memory display menu. Please note that the snapshot takes some time to finish, therefore we advise not to use this feature if you are not experiencing any problems - i.e. the printer will stop for a while to dump the memory.
Also, to allow for simpler usage of this function, we put it at the end of the support menu for now. If it was hidden somewhere deep, a user experiencing an issue may hot reach this option quickly.
When you have connected a serial device like Pronterface or Octoprint, you can use the following commands via the serial link:
- D20 - create memory dump on xFlash (same as LCD Menu -> Support -> Dump memory)
- D21 - download/print the memory dump via the serial link. This is the only way to get the Dump from the printer. Warning: please be aware not to connect the serial link during print as it can restart the printer and break the recent printing job
- D22 - clear the current memory dump in the printer
The crash dump to xFlash is active at any time, it is stored in xFlash and can be downloaded even after the system reboot until a new D22 command is sent to the printer.
MK2.5, MK2.5S and MK2.5S+
The MK2.5 series does not contain the xFlash, so the situation is different. The dump cannot be stored but it can be sent down to a serial link. In order to get the memory dump from the printer, there must be a serial link connection available prior to any dump download. In default, the LCD Menu -> Support -> Dump to serial and crash dump are disabled after printer restart. To get the dump the following process has to be followed and serial commands used:
- Connect the serial link to Printer. As the serial link connection restarts the Printer, it has to be done before any further activity.
- Using the D23 command from the serial link enables the crash dump by setting the crash dump flag and activates the LCD Menu -> Support-> Dump to serial display menu.
- D23 R command disables the crash dump and removes the LCD Menu -> Support-> Dump to serial display menu.
- The command D23 E - sends the Dump down to the serial link immediately and resets the printer.
- Command D20, D21, D22 are ignored.
- The Dump to serial command should be available even during print and should be found again under LCD Menu -> Support-> Dump to serial display menu.
Please note, that in this release the “Dump memory” function is currently not fully working on the MK2.5 series. After the memory Dump is successfully sent down to the serial link the printer is freezing during Booting and you can see the following or similar:
To resolve the situation at the current firmware build, push the HW reset button below the knob and the printer will restart. We are working on a workaround, this feature should be fully functional in the future firmware release. Should you find any other issues, please let us know.
A rare memory bug debugged and fixed
We have noticed several issues with unpredictable and non-replicable behavior like preheat menu loop when the printer was powered on with already loaded filament. Unpredictability and non-replicability made the root cause identification very hard. Recently we believe we found the major root cause. Its explanation is rather technical, but there’s really no other way to describe it.
The bug was not directly in our firmware, but we believe we ran into a bug in the link-time code generation stage of GCC 4.9.2 (bundled with PF-build-env-1.0.6.*) with optimization for size. The generated code could then partially overwrite the stack, which obviously resulted in random behavior. A workaround was found to avoid this bug by not allowing some functions to get inlined, even when they were used at one spot only.
We believe this is the main reason behind issues #3147, #3151, #3175 and probably others. We have verified that the code generation issue was also present in 3.9.3 already and probably in older FW versions as well. We have been able to track the problem down to FW 3.8.0, it may have been there even longer.
For more detailed technical description see please: #3202
However, since we haven't been able to reproduce ANY of those issues mentioned above in-house during our tests, we kindly ask the community for help. To help with tracing those malfunctions, you can use the debugging tool described at the very beginning of these release notes.
Please, report any of those potential issues you discover on GitHub and attach the Crash Dump file.
Long-Press action fixed
In the previous releases, the LCD knob "Long press" action was monitored and executed within the temperature control loop Interrupt Service Routine (ISR). This operation could under some circumstances destroy the menu buffer and create the menu itself inconsistently.
This change improves the printer reaction when the user is applying the "Long press" action (move Z etc. ). The main change is that the jog wheel "Long press" execution part has been moved to the main program loop. The temperature control loop is now exclusively dedicated to its generic task - temperature control.
Move auto reporting out of the temperature ISR
This change is similar to the Long-Press action described above. The code running in the temperature Interrupt Service Routine (ISR) needs to be fully reentrant, which is hard to keep for other than Temperature control tasks.
For this reason, the auto reporting (response to M155) is moved to the main processing loop. This can make the auto reporting slower or irregular but removes the reentrant restriction, which allows to use “printf_P” to serial port and to keep Temperature ISR only for temperature control.
For more information head to: #3180
Uint8_t used consistently for the block buffer's index
We have identified and fixed another potential problem in the planner’s block buffer. The index was sometimes computed as an int (2 bytes), sometimes as 1-byte uint8_t. On the AVR working with 2-byte integers, this is generally not an atomic operation, because it takes multiple instructions to perform. Since it has been possible, all indices of the block buffer are now referenced as 1-byte uint8_t.
Arduino boards definition updated
The developers have merged several pull requests from the community. These commits changed the logic for parts of the code that are dependent on the board version, moving that dependent information directly to the boards.txt file. This simplifies the board version-dependent actions to be done by the compiler and makes them more transparent. Other compilation optimization changes have been made as well. This will not change the printer functionality but the built code quality and bug tracking is improved. The board definition was updated to v1.0.4.
For more detailed information, see please links below:
- prusa3d/Arduino_Boards#8
- prusa3d/Arduino_Boards#10
- prusa3d/Arduino_Boards#11
- prusa3d/Arduino_Boards#12
Build script updated
For our community members, who besides printing also enjoy coding, we have updated our build script to version 2.0, which focuses on improving the MK404 project, which is an MK3 printer family simulator. Adding this project to the PF-build.sh will enable users to compile the Prusa-Firmware and immediately start the simulator with the correct hex file and correct printer.
The credit for this great simulator goes to VintagePC.
Algorithm for reading SN in EEPROM improved
Another significant improv...
3.10.1-RC1 Firmware for MK3, MK3S, MK3S+, MK2.5 and MK2.5S
Summary
- New debugging functions & crash analysis tools
- A rare memory bug debugged and fixed
- Long-Press action fixed
- Move auto reporting out of the temperature ISR
- Uint8_t used consistently for the block buffer's index
- "Preheating to load" screen behavior fixed
- Message on boot while inserting SD card fixed
- Algorithm for reading SN in EEPROM improved
- Spanish translation fixed
- Firmware version parsing removed
- Prusa Connect & PrusaLink - beta testers wanted!
In this minor release, the primary focus was on improving the debugging capabilities and fixing potential and bugs in the firmware. The main motivation behind this effort was to catch very rare bugs exhibiting symptoms like memory corruption or a random mid-print crash.
New debugging functions & crash analysis tools
The "Dump memory" feature is a very important new debugging support tool. It allows you to store the RAM content into the xFlash memory for further issue/bug analysis, just like we have in the Buddy firmware for the MINI+. This procedure has proven vital for identifying the rare bug of “static memory overwritten”.
MK3, MK3S and MK3S+
This feature is now accessible from the printer’s Display menu Support-> Dump memory, which is the last command within the Support menu.
The dump command is also available during an active print, which allows the user to execute an actual Memory "Snapshot" during a critical status or misbehavior of the printer. You will find it under LCD Menu -> Support -> Dump memory display menu. Please note that the snapshot takes some time to finish, therefore we advise not to use this feature if you are not experiencing any problems - i.e. the printer will stop for a while to dump the memory.
Also, to allow for simpler usage of this function, we put it at the end of the support menu for now. If it was hidden somewhere deep, a user experiencing an issue may hot reach this option quickly.
When you have connected a serial device like Pronterface or Octoprint, you can use the following commands via the serial link:
- D20 - create memory dump on xFlash (same as LCD Menu -> Support -> Dump memory)
- D21 - download/print the memory dump via the serial link. This is the only way to get the Dump from the printer. Warning: please be aware not to connect the serial link during print as it can restart the printer and break the recent printing job
- D22 - clear the current memory dump in the printer
The crash dump to xFlash is active at any time, it is stored in xFlash and can be downloaded even after the system reboot until a new D22 command is sent to the printer.
MK2.5, MK2.5S and MK2.5S+
The MK2.5 series does not contain the xFlash, so the situation is different. The dump cannot be stored but it can be sent down to a serial link. In order to get the memory dump from the printer, there must be a serial link connection available prior to any dump download. In default, the LCD Menu -> Support -> Dump to serial and crash dump are disabled after printer restart. To get the dump the following process has to be followed and serial commands used:
- Connect the serial link to Printer. As the serial link connection restarts the Printer, it has to be done before any further activity.
- Using the D23 command from the serial link enables the crash dump by setting the crash dump flag and activates the LCD Menu -> Support-> Dump to serial display menu.
- D23 R command disables the crash dump and removes the LCD Menu -> Support-> Dump to serial display menu.
- The command D23 E - sends the Dump down to the serial link immediately and resets the printer.
- Command D20, D21, D22 are ignored.
- The Dump to serial command should be available even during print and should be found again under LCD Menu -> Support-> Dump to serial display menu.
Please note, that in this release the “Dump memory” function is currently not fully working on the MK2.5 series. After the memory Dump is successfully sent down to the serial link the printer is freezing during Booting and you can see the following or similar:
To resolve the situation at the current firmware build, push the HW reset button below the knob and the printer will restart. We are working on a workaround, this feature should be fully functional in the future firmware release. Should you find any other issues, please let us know.
A rare memory bug debugged and fixed
We have noticed several issues with unpredictable and non-replicable behavior like preheat menu loop when the printer was powered on with already loaded filament. Unpredictability and non-replicability made the root cause identification very hard. Recently we believe we found the major root cause. Its explanation is rather technical, but there’s really no other way to describe it.
The bug was not directly in our firmware, but we believe we ran into a bug in the link-time code generation stage of GCC 4.9.2 (bundled with PF-build-env-1.0.6.*) with optimization for size. The generated code could then partially overwrite the stack, which obviously resulted in random behavior. A workaround was found to avoid this bug by not allowing some functions to get inlined, even when they were used at one spot only.
We believe this is the main reason behind issues #3147, #3151, #3175 and probably others. We have verified that the code generation issue was also present in 3.9.3 already and probably in older FW versions as well. We have been able to track the problem down to FW 3.8.0, it may have been there even longer.
For more detailed technical description see please: #3202
However, since we haven't been able to reproduce ANY of those issues mentioned above in-house during our tests, we kindly ask the community for help. To help with tracing those malfunctions, you can use the debugging tool described at the very beginning of these release notes.
Please, report any of those potential issues you discover on GitHub and attach the Crash Dump file.
Long-Press action fixed
In the previous releases, the LCD knob "Long press" action was monitored and executed within the temperature control loop Interrupt Service Routine (ISR). This operation could under some circumstances destroy the menu buffer and create the menu itself inconsistently.
This change improves the printer reaction when the user is applying the "Long press" action (move Z etc. ). The main change is that the jog wheel "Long press" execution part has been moved to the main program loop. The temperature control loop is now exclusively dedicated to its generic task - temperature control.
Move auto reporting out of the temperature ISR
This change is similar to the Long-Press action described above. The code running in the temperature Interrupt Service Routine (ISR) needs to be fully reentrant, which is hard to keep for other than Temperature control tasks.
For this reason, the auto reporting (response to M155) is moved to the main processing loop. This can make the auto reporting slower or irregular but removes the reentrant restriction, which allows to use “printf_P” to serial port and to keep Temperature ISR only for temperature control.
For more information head to: #3180
Uint8_t used consistently for the block buffer's index
We have identified and fixed another potential problem in the planner’s block buffer. The index was sometimes computed as an int (2 bytes), sometimes as 1-byte uint8_t. On the AVR working with 2-byte integers, this is generally not an atomic operation, because it takes multiple instructions to perform. Since it has been possible, all indices of the block buffer are now referenced as 1-byte uint8_t.
"Preheating to load" screen behavior fixed
During the Load filament process, the printer was waiting for the preset temperature and displayed the "Preheating to load" message. When the user removed the SD card, the previous message was replaced by the message "Card removed" but the Preheating process still did not finish, so the lasting displayed message was not correct. Now after this and similar action the “Preheating to load" message is redrawn again which is the correct Process status Message.
Message on boot while inserting SD card fixed
When the user inserted the SD card during the booting process, the "Sorting files" message was presented twice on the display later followed by the correct "Print from SD menu" message. The issue has been reported on GitHub issue #3135 and clearly reproduced.
We have fixed the SD card handling while booting scenario, which corrected the double "Sorting files" message. Now the system works correctly.
Algorithm for reading SN in EEPROM improved
Another significant improvement is a Serial Number (SN) reading algorithm change from the 32u2 communication chip. When reading the SN, the code is expected to start with the standard "CZPX" prefix used for all Prusa printers worldwide. Unsuccessful attempts are repeated until a valid SN is read.
Spanish translation fixed
A tiny contribution from our community on improving wording in Spanish translation. Specifically for the text string: "Was filament unload successful?".
Firmware version parsing removed
This FW optimization has saved 936 bytes of Flash me...
3.10.0 Firmware for MK3, MK3S, MK3S+, MK2.5 and MK2.5S
Summary
- New "Print from SD" menu
- "Time Remaining" function improved
- Community translations
- Faster and quieter XYZ calibration
- PVB preheat preset
- Satin sheet profiles
- G-code "M204 T" implemented
- Optimizations for the MK3 filament sensor
- DEDGE support enabled for TMC2130
- Improved filament troubleshooting
- Support for 0.8mm nozzles
- Support for a GD external FLASH chip
- Optimizations for print hosts (e.g. Octoprint)
- Optimized code size and RAM usage
- Scaling extruder motor current based on speed
- File listing adjusted for remote printing software
- Host Long File Name (LFN) improvements
- Z offset during M600 reverted
- Factory reset menu extended
- G-code documentation updated
- Translations updated and checked
- Reservation in the EEPROM for job ID tracking
- Bug Fixes
This is the final release of firmware 3.10.0, which introduces improved functionality and several bug fixes. These release notes include information provided in the previous releases RC1 and RC2.
Before we describe all the new features, improvements and changes, we would like to thank the entire Prusa community members for their feedback - especially all active members who helped us test and debug this firmware release. Your input is very much appreciated!
This release required:
- 4500+ printing hours during our in-house testing
- 867 commits to the source code
- 80 pull requests
- 11 contributors (5 of them external)
New “Print from SD” menu
The "Print from SD" menu was rewritten entirely. It is much more responsive when many files need to be displayed. This was accomplished by caching the file positions in memory during sorting. The menu isn't blocking anymore, so G-code commands can still be processed while the filename is scrolling on the screen. This should improve host software functionality and compatibility.
When the "FlashAir" mode is enabled (for SD cards with Wi-Fi) in the settings menu, a new menu button appears above the files and folders. It causes the menu to sort all items in the current directory again. This is useful when a file uploaded to the FlashAir card doesn't appear on the uppermost line - the user doesn't have to reset the printer or disconnect and reconnect the card.
Sorting is improved compared to the previous firmware releases. In general, Alphabetical sorting is now 10-15 % faster. Sorting of the files by time-stamp is now almost 2-4x faster.
"Time Remaining" function improved
Until now, the firmware was only able to display how much time remains until the print is finished. There were multiple suggestions from the community on further improvements. Starting this release, the developers have implemented the first stage. However, to make the function work correctly, the PrusaSlicer dev team also needs to publish a new release because the G-code instructions must be updated.
Once both firmware and PrusaSlicer are updated, the "remaining time" will work the following way. The printer will switch every 5 seconds between "remaining-printing-time" and "time-to-next-color-change." Therefore the user will be informed in advance when the next filament change is expected.
G-code M73 has been extended with two parameters: C (for normal mode) and D (for stealth mode). Until now, the PrusaSlicer produced pairs of lines in the form of (example):
M73 P15 R30
Once this feature is fully implemented, the code will look as follows:
M73 P15 R30 C15
This means a color change is planned in 15 minutes in normal mode. In case you would like to try this feature now, you can edit the G-code manually using the code mentioned above. Adjust the parameter "C" according to your model's requirements.
Also, if the printer receives G-code “M73 C0”, it disables switching between “Time to finish” and “Time to color change”. However, this caused an issue during the last minute before the color change, when the printer stopped switching between these two values completely.
To avoid this scenario, the firmware was further adjusted. It is advised for the slicer software to use a floating-point value for the last minute before the color change (e.g. M73 C0.1) which is technically greater than zero and enables the function to work correctly.
Community translation
Thanks to the modifications to the part of the system responsible for storing the language dictionaries on the printer (XFLASH), the firmware can now extend the library of the official languages by loading new translations made by the community.
Our first addition is Dutch, which is fully translated thanks to @3d-gussner and @vintagepc. To select this language and other new translations in the future, please head to the LCD menu -> Settings -> Select language -> Community made. In this release, the only option is "Nederlands."
We welcome everyone to join us and localize the printer to their native language. In case you would like to translate and maintain the translations, contact us at [email protected]. We appreciate community members, who already signed up and we will contact them shortly with instructions.
Faster and quieter XYZ calibration
As noted in the previous release notes, the algorithm behind the XYZ calibration was almost completely rewritten, but developers are still looking for improvements. This release brings a bit faster, more precise, and also quieter calibration. The algorithm has both improved acceleration handling and a more robust scan (circle search).
Another improvement to the XYZ calibration is the skew analysis. Previously, the user was informed on the screen about the measured skew. Starting with this firmware release, the calibration values can also be accessed over the serial line for advanced diagnostics if anything goes wrong.
During extensive internal testing of the XYZ calibration, it was discovered that in certain rare scenarios the data provided by the sensor are not handled correctly. The developers have improved the algorithm and if this scenario happens, the scan of the recent calibration points is automatically repeated.
PVB preheat preset
In the preheat preset menu a new entry for PVB filament has been added, with temperatures 215 °C / 75 °C. To learn more about PVB material, visit the blog article.
Satin sheet profiles
The developers have modified the default sheet profile list. It takes effect on new printers delivered with firmware 3.10.0, or after the Sheet profile reset and Factory reset with “All data” is executed on this firmware release or later.
Two new sheet names (Satin 1 and Satin 2) were introduced and “Custom 3” and “Custom 4” have been removed. As there are only 8 sheet profiles, only “Custom 1” and “Custom 2” remain at the end of the list. It is important to note that all profiles have the same default settings and the only difference is in the name.
The new default sheet profile list is as follows:
Smooth1
Smooth2
Textur1
Textur2
Satin 1
Satin 2
Custom1
Custom2
You can edit the default names of the sheets via LCD Menu -> Settings -> HW Setup -> Steel Sheets -> [sheet name] -> Rename.
Kudos to @awenelo for this pull request. Fixes enhancement request #3051.
G-code "M204 T" implemented
Another extension of the G-code support is an implementation of "M204 T", which enables separate acceleration control of travel moves (now separated from the print moves). With this change, the syntax and behavior of M204 are now identical to Marlin 2.
A separate travel acceleration setting allows reducing the number of instructions required while printing. Resetting the acceleration just for travel moves is no longer required and can be done a single time during the print.
M204 has two forms:
- the legacy format:
M204 S[print-acc] T[retract-acc]
- the newer format:
M204 P[print-acc] R[retract-acc] T[travel-acc]
The distinction is made based on the presence of the P parameter. If P is included in the G-code, the new format is used. To keep backward compatibility, the "M204 S[acc]" will set both print and travel acceleration, which is identical in behavior to existing firmware versions. M500 and M503 will now also report settings using the "new format."
For more information, see the PR #2838
Optimizations for the MK3 filament sensor
The PAT9125 on the MK3 is attached to the hardware SDA/SCL pins, however, it was using a software two-wire interface (TWI) implementation.
The code now includes the PAT9125_I2C configuration option (enabled by default) to use the hardware TWI module in 400kHz fast mode instead. The change saves a few bytes in all variants while also improving the performance of optical filament sensor checks in the MK3.
For more information, see the PR #2814
DEDGE support enabled for TMC2130
The Trinamic driver TMC2130 supports Double Edge stepping (DEDGE) where both the rising and falling edge of the step pin count as a step instead of requiring a full cycle.
Using DEDGE is beneficial - it removes one extra toggle for each step pulse (plus a delay, in some circumstances), saving a few µs in hot code paths while stepping.
This release introduces 2 macros to step: STEP_NC_HI and STEP_NC_LO. In legacy mode, both perform as their name implies. In DEDGE mode instead, STEP_NC_HI inverts the line, while STEP_NC_LO becomes a no-op. Both modes are still fully supported, but DEDGE is now enabled by default in all supported varia...