Firmware 3.9.1-FINAL for Original Prusa i3 MK3S & MK3
Summary
- Major improvements to LA15
- Support for parts from selected vendors
- Ambient temperature check
- PC Blend preheat added
- Stack corruption fixed
- More precise Belt test
- Octoprint causing M112 fixed
This is the final release of the firmware 3.9.1 introducing improved functionality and several bug fixes. These release notes include information provided in the previous release 3.9.1-RC1.
Before we dive into the detailed description, we would like to thank the entire Prusa community for the feedback, and our special thanks go to all active members, who helped us with this firmware release. Your input is very much appreciated!
This release required:
- 350 different samples of print objects
- 1500+ printing hours of the final tests
- 20 pull requests
- 95 commits
- over 20 participating community members
Major improvements to LA15
The Linear Advance 1.5 (LA15) functionality was first introduced in the firmware release 3.9.0 and brought several improvements both to the print speed and quality. However, in certain scenarios, the algorithm didn't perform as expected during deceleration, leaving artifacts on specific geometries.
The issue was discovered in a bad timer check, which prevented fast LA ticks to be scheduled, effectively limiting LA as speed increased (such as in long stretch of perimeters or during infill) or with shorter intervals due to geared extruders (commit 173aa2d). This also combined with a bad sign check that would cause over-retraction as extrusion speed/nozzle size increased (commits c08f37d & fb5f09d).
Several other tweaks were done to improve the print quality in specific scenarios and also to reduce CPU load allowing for better results with either high-resolution models or faster printing speeds. See PR #2785 for a detailed list.
After several weeks of tests and hundreds of printed objects, it was clear that aside from fixing the above-mentioned issues, the K-factors also needed adjustments. This has affected not only the LA15 K-factors but also the “LA10 to LA15” conversion curve. Here are the most important changes:
- The start K-factor is now K10 => K0.01 (the previous minimum was K15)
- For PLA K30 => K0.05 (previously K=0.07, optimal range is 0.045-0.06)
- For PETG K45 => K0.08 (previously K=0.13, optimal range* is 0.07-0.11)
*Based on the observations, the PETG optimal K-factor values depend greatly on the material composition (e.g. Prusament PETG differs from other PETG material) and also the temperature of the hotend/nozzle plays an important role. More information below.
The G-codes sliced in PrusaSlicer since March of 2020, might include K-factors for LA15, which are updated with this release. Therefore it is strongly recommended to update the G-codes from this time period. First, make sure you are running the latest PrusaSlicer and print profiles, then you have two options:
- Use the original model (.stl. .3mf) and reslice it again.
- Open the G-code in a text editor and change the values for M900.
Example of PETG:
Replace all M900 K0.13 with MK900 K0.08
Older G-codes with Linear Advance 1.0 (K-factors greater than 10) remain unaffected and will be converted correctly to the LA15 using the new conversion curve.
The results of our research can be seen in the two pictures below, the first with blue test objects is representing the PLA material with two different K-factors. Setting the K-factor too high can lead to missing material or distorted corners in certain geometries.
An even stronger effect of the K-factor can be seen while experimenting with the PETG. The picture below shows the corners of four different boxes printed with individual K-factors. Even a relatively small numerical change (0.12 vs 0.08) can have a great effect on the final print quality.
We will continue testing improving the LA15 and its capabilities and for most of the cases, the firmware together with the PrusaSlicer should provide correct parameters. Therefore no user calibration is needed.
However, we can't test every available material on the market. In case you are using exotic material, or you are unsatisfied with the print results, we have created calibration patterns, which are used to help you select the most suitable K-factor for a given scenario. To learn more about the K-factor calibration, please visit our article at help.prusa3d.com.
Support for parts from selected vendors
The Covid-19 virus is negatively impacting worldwide supplies and in order to be able to ship the printers continuously without any significant delay, we have started to look for alternative verified suppliers of the most critical parts. This has an impact on the firmware, which must be capable of automatic detection and adjustments based on the used part.
One example is the hotend cooling fan, located on the side of the MK3S extruder. Because different fans from different manufacturers have their own specific speed (RPM) and airflow, starting with this release, the firmware is capable of adjusting the parameters using a technique called pulse-width modulation (PWM). This brings some challenges, which are explained below.
For a printer with stock parts, there are no visible changes to the firmware and no user interaction is needed. When a printer is run for the first time after the assembly, the firmware will automatically detect the fan and set appropriate PWM. This value is stored permanently in the EEPROM memory, stays the same after future firmware updates, and can be only deleted after performing a factory reset.
For modded community printers using different than stock fans, this firmware update will not change anything as stated in the previous paragraph. The only scenario, when the user has to intervene on the modded printer might be after the factory reset when the printer will try to recognize the fan and set the PWM, which might affect the fan's performance. For this scenario, we have prepared a solution in the form of a hidden service menu.
To turn the PWM off and run the fan on 100 % like in the previous firmware releases, go to LCD menu -> Settings -> HW Setup, then scroll to any menu item and hold the knob for 2-3 seconds. After a “click” sound, the display will flash once and the “service menu” will be opened, where you will see the option “Altfan detection” (Altfan det.) and you can toggle between ON/OFF. Note that setting a custom value of the PWM is currently not possible.
Ambient temperature check (MK3S/MK3)
Every Einsy board is equipped with an NTC thermistor, which is used to measure the surrounding ambient temperature. The sensor is located right above the main power connector at the bottom of the board. This release is introducing two error states, that can occur “AMBIENT_MINTEMP” and “AMBIENT_MAXTEMP”.
The “AMBIENT_MINTEMP” is used to check whether the thermistor works properly ensuring that the second “MAXTEMP” state will be triggered correctly. In a rare case, when this error is displayed, the printer will halt any operation and the Einsy board must be checked by a technician and possibly replaced. Don't operate the printer, until the problem is resolved.
The “AMBIENT_MAXTEMP” is set to 100 °C, if this temperature is reached, the printer will immediately cut power to the heaters and motors to reduce power draw. Resuming the print is not possible. The only allowed operation is resetting the printer, the user is also highly advised to inspect the board for problems before attempting to continue printing.
PC Blend preheat added
The list of preheat materials is now expanded with the polycarbonate Prusament PC Blend (“PC” in the menu). The default preheat values are 275 °C for the nozzle and 110 °C for the bed. To learn more about this material, please visit our blog article.
Side note to Linear Advance 1.5, the optimal value for this firmware is currently K=0.07, for the previous releases (3.8.1 and 3.9.0) please use the PrusaSlicer profiles, where K=0.09.
Stack corruption fixed
A bug has been discovered in the temperature and filament sensor interrupts that could unpredictably cause the return address to be corrupted and result in a system crash. The root of this issue seems to be the "Static memory overwritten" error messages randomly happening when stepping at high frequency (when ISR is preempted more frequently) and a number of other infrequent and hard-to-reproduce issues such as inexplicable extruder moves.
See PR #2791 for further details.
More precise Belt test (MK3S/MK3)
The Belt test was improved in the previous release 3.9.0 in order to make the measurement process more sensitive and detect any degradation of bearings and rods in the early stages. During the Belt test, the Trinamic stepper motors are supplied by lower current value in comparison with standard operation. The built-in StallGuard function (detecting the movement resistance by an increase of motor current) is, therefore, more sensitive.
This change to the sensitivity might lead to slightly different values measured by the printer compared to measurements done in the past. However, the range is the same as in the previous releases, your printer should be still within 240-300. If your printer measures value below 240, you should check the belt tension first. On an older printer with hundreds of hours of print time, this value indicates your rods and bearings need closer inspection and possibly maintenance.
It is also important to note that the test gives a recommendation, it won't disable any printing functions, even if the measured values are out of range. To learn more about the Belt test, please visit our article at help.prusa3d.com.
Octoprint causing M112 fixed
The previous firmware versions sometimes incorrectly dropped some parts at the start of communication while connected over a serial line. This resulted in a scenario, where for example the Octoprint evaluated the printer as unavailable and sent G-code M112, which is a full emergency stop. More about the G-code M112 in our article at help.prusa3d.com.
This issue is now fixed and the printer communicates properly over the serial line.
Supported printers:
- Original Prusa i3 MK3S MMU2S
- Original Prusa i3 MK3S
- Original Prusa i3 MK3
- Original Prusa i3 MK2.5S MMU2S
- Original Prusa i3 MK2.5S
- Original Prusa i3 MK2.5
Download link:
Note that MK3S, MK3, MK2.5S and MK2.5 are different printers! Each has its own firmware file!!!
Firmware flashing guide:
https://manual.prusa3d.com/Guide/Upgrading+the+firmware/66
Please report any bug here:
https://github.com/prusa3d/Prusa-Firmware/issues
As always, we wish you happy printing and look forward to your feedback!
/ Knowledge Base
The guy behind Prusa assembly manuals...
RE: Firmware 3.9.1-FINAL for Original Prusa i3 MK3S & MK3
Thanks for the summary. I can confirm it fixes the M112 Error.
--------------------
Chuck H
3D Printer Review Blog
RE: Firmware 3.9.1-FINAL for Original Prusa i3 MK3S & MK3
What is the general start K-factor for ASA ?
Considering LA and the fact we all have our personal profiles which we put a lot of effort in, can you confirm I only have to make addaptions to "Custom G-code" section as a starting point so I can keep the remainder settings ?
RE: Firmware 3.9.1-FINAL for Original Prusa i3 MK3S & MK3
And now the French links are showing 3.9.2, with the obscure release note it fixes or changes the PINDA operation and improves XYZ calibration. Color me confused.
DRracer released this 7 days ago
Summary
- XYZ calibration optimization
XYZ calibration optimization
Similarly to the previous release 3.9.1, this firmware release further expands support for parts from selected vendors. The XYZ calibration was optimized to work with a broader spectrum of induction sensors.
The functionality of the current sensors remains unchanged.
RE: Firmware 3.9.1-FINAL for Original Prusa i3 MK3S & MK3
It's probably just so that they can use an alternate probe if they run out of their main stock and cannot get more due to the pandemic.
RE: Firmware 3.9.1-FINAL for Original Prusa i3 MK3S & MK3
It's probably just so that they can use an alternate probe if they run out of their main stock and cannot get more due to the pandemic.
That's my understanding. Prusa is having to use a more diverse range of parts and the supply chain is not reliable, so they're making adjustments in firmware to handle a wider range of parts. Having spent some time casually perusing the Marlin firmware, there is a LOT of work going into these sort of efforts.
and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan