Prusa Firmware 3.9.1 für MK3, MK3S, MK2.5 and MK2.5S erschienen

Vor knapp 2 Stunden wurde von DRracer eine neue Prusa Firmware veröffentlicht, welche nun in Version 3.9.1 vorliegt. Diese kann ab sofort auf GitHub herunter geladen und installiert werden.

Wie gewohnt gibt es hier wieder den Changelog und man kann sehr gut sehen, dass man sich vermehrt auf die Linear Advance Funktion konzentriert hat. Ob man das auch wirklich so sieht, bleibt erstmal offen. Ich werde gleich updaten und dann mal schauen, ob sich was verbessert hat. 😀

  • 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

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

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

This issue is now fixed and the printer communicates properly over the serial line.

Check Also

PrusaSlicer 2.3.0-alpha1 erschienen

Vor knapp 22 Stunden wurde eine neue Version vom PrusaSlicer zum Download bereit gestellt. Diese …

Kommentar verfassen