github prusa3d/Prusa-Firmware v3.9.1-RC1
3.9.1 RC1 Firmware for MK3, MK3S, MK2.5 and MK2.5S

latest releases: v3.14.1, t3.14.1, v3.14.0...
pre-release4 years ago

Summary

  • Further 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

Further improvements to LA15

The Linear Advance 1.5 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.

The changes to the algorithm will affect some K-factors in the final release. We are running multiple tests to set proper values. In the case of the PETG, the K-factor was initially set to K=0.12, however, with the adjusted algorithm optimal print results are currently achieved in a range K=0.07 to K=0.1 with dependency on the temperature. The higher the nozzle temperature for PETG, the lower the K-factor (e.g. 260 °C => K=0.07). For other materials like the PLA, the results so far show there is no need for change.

Note that the K-factors are still in development. You can join us in the research by submitting your ideal K-factors with the new firmware 3.9.1-RC1. Once the final values are achieved, the conversion between LA10 and LA15 will be also updated. For the recently sliced G-codes with LA15, there is no need to reslice them, the K-factor can be adjusted manually using a text editor (search for M900 Kx.xx).

While improving the LA15 we have printed multiple samples collected both from the community and our research lab, with the aim to surpass the print quality of both 3.9.0 running LA15 and 3.8.1 running LA10. We will continue pushing the capabilities of the LA15 in this and the upcoming releases.

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.

Don't miss a new Prusa-Firmware release

NewReleases is sending notifications on new releases.