Skip to content

Releases: prusa3d/Prusa-Firmware

3.10.0-RC2 Firmware for MK3, MK3S, MK3S+, MK2.5 and MK2.5S

16 Apr 18:10
Compare
Choose a tag to compare

Summary

  • Support for a GD external FLASH chip
  • Reservation in the EEPROM for job ID tracking
  • XYZ calibration algorithm improved
  • Bug Fixes

This is the second release candidate of the upcoming firmware 3.10.0 with multiple optimizations to the code.

Support for a GD external FLASH chip

As mentioned in the previous firmware releases, the Covid-19 virus is negatively impacting worldwide supplies, and 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.

In this release, we are extending system support for external FLASH chip GD25Q20CEIGR from company GigaDevice to ensure our production of Einsy boards remains unrestricted. For the user, there is no impact on the functionality of the printer, everything remains the same.

Reservation in the EEPROM for job ID tracking

For the host software, there is now a reserved space in the EEPROM to track/identify the print job. Even if the SD card or Raspberry Pi becomes unresponsive, the job ID will prevail. The 4-bytes variable in EEPROM is named "EEVAR_HOST_JOBID". Host software can manipulate the EEPROM variable via D3 commands.

XYZ calibration algorithm improved

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.

Bug Fixes

Incorrect G-code reading from a buffer

There was a bug in the new G-code reading code, which could stop the print in progress. In some scenarios, the system would insert a new line '\n' into the current cached block of the G-code file and change the G-code line syntax. Kudos to @lhecker for reporting the issue and providing a good test case (fixes issue #3077).

"Time Remaining" function bug fixed

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 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.

M120 and M121 disabled

From now on, G-codes M120 and M121 have been disabled as they do not function correctly and cause issues when used in the G-code file. If necessary, advanced users can enable them in the FW code and recompile.

Crash detection during MBL

Normally, if prior to Mesh Bed Leveling (MBL) a crash on the Y-axis is detected, the MBL is repeated again and print coordinates are verified, then a purge line is printed. In some scenarios starting firmware 3.9.0 (previous releases are not affected), the purge line was incorrectly placed in the center of the sheet, now this is fixed and the purge line is correctly placed in the front-left position.

3.10.0-RC1 Firmware for MK3, MK3S, MK3S+, MK2.5 and MK2.5S

18 Mar 18:06
Compare
Choose a tag to compare

Summary

  • New "Print from SD" menu
  • "Time Remaining" function improved
  • Community translations
  • Faster and quieter XYZ calibration
  • PVB preheat preset
  • G-code "M204 T" implemented
  • Optimizations for the MK3 filament sensor
  • DEDGE support enabled for TMC2130
  • Improved filament troubleshooting
  • Support for 0.8mm nozzles
  • Optimizations for print hosts (e.g. Octoprint)
  • Optimized code size and RAM usage
  • Bug fixes

This is the first release candidate of the upcoming firmware 3.10.0 with multiple optimizations to the code.

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. Note that this feature is still a "work in progress," and there might be some changes before the final release. 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.

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."

Community made

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 info@prusa3d.com

Along with the community translations, the officially supported languages were updated.

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.

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.

PVB

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 variants. The macros are specialized for each axis and still respect INVERT_?_AXIS as defined in the variant file.

Additionally, the firmware introduces a few constant definitions for the delays required by the TMC2130 and uses them when appropriate instead of hard-coding delays:

  • step pauses (2µs minimum)
  • direction changes (100µs minimum)

Existing code that was manipulating the pins directly has been changed to use either the macros or the helper functions defined in tmc2130.h. We also fixed the behavior of TMC2130_INTPOL_* (which was previously ignored) in the variant files.

Note that this feature will only be present on MK3, MK3S and MK3S+ printers.

For more information see the PR #2789

Improved filament troubleshooting

When using the Settings->Move->Extruder menu the filament sensor is now temporarily ignored.

Thanks to this change, it is now possible to use the Move menu to control the extruder while trying to perform a manual filament swap, (e.g. when trying to clear a filament clog or when untangling a stuck flexible filament). There is no need to use the filament-change procedure, which was sometimes used by the users instead to fix the issue.

For more information, see the PR #1758

Support for 0.8mm nozzles

A new 0.8mm nozzle preset has been added to the firmware in the “HW setup” section. The user can set the printer to verify whether the G-code was sliced correctly for the selected nozzle diameter. Currently available sizes are 0.25, 0.4, 0.6 and 0.8 mm.

Optimizations for print hosts (e.g. Octoprint)

To improve the experience while printing using a remote host, there are several changes and optimizations in this release.

G-code M155 support

The firmware introduces support for an M155 G-code (Automatically send temperatures) which creates the same output as M105 (Get Extruder Temperature), but it provides it automatically without the need to periodically receive M105 G-code from Octoprint or other serial devices.

Implementation:
Added G-code M123 to show fan speed tacho and PWM values

Extended Capabilities in G-code M115
AUTOREPORT_FANS
AUTOREPORT_POSITION
Added parameter C to G-code M155 to de-/activate auto report output using a bitmask

SD card status send automatically

Previously the firmware didn't always properly report the current SD card status over the serial line. This is now fixed and the firmware reports three statuses: Insert, Eject and Error.

Host Long File Name (LFN) improvements

Under the hood, the SD FAT implementation in the firmware only uses 8.3 DOS filenames. This is fine when they’re internal to th...

Read more

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

07 Jan 12:24
Compare
Choose a tag to compare

Summary

  • Redesigned XYZ calibration

This is the final release of the firmware 3.9.3 introducing redesigned XYZ calibration. There are no changes compared to the previous release 3.9.3-RC1.

Redesigned XYZ calibration

Starting with the release of the Original Prusa i3 MK3S+ printer there is a new induction sensor called SuperPINDA, which is temperature-independent, features a much higher quality sensor and better quality components overall, plus, it does not need a thermistor. This sensor is a successor to the P.I.N.D.A. v2 (with thermistor) and is compatible with the following printers:

  • Original Prusa i3 MK3/MK3S/MK3S+
  • Original Prusa i3 MK2.5/MK2.5S

In order to use the full potential of both sensors, this firmware brings a significantly redesigned XYZ calibration. Previously, the data during the calibration were measured in one direction and approximated. Now, for both P.I.N.D.A. v2 and SuperPINDA the new algorithm measures 1024 points (32x32 bitmap) on the heatbed for each calibration point and utilizes z-hop on the Z-axis (multiple distances from the surface). The reason for multiple measurements is to mitigate the effect of the hysteresis* of the sensor. A similar method is used in the Mesh Bed Levelling (MBL).

*Every measurement sensor has its own hysteresis, which can be explained as a memory effect from the previous measurement. If you measure the first point, some of the energy remains in the sensor and affects the value in the second measured point. This effect has to be eliminated to provide accurate data.

Calibration_point_FW393

Calibration point on the heatbed "as seen" by the printer

From the measured data, the printer now performs a subpixel processing of the scanned 32x32 bitmap and detects very precisely the center of each calibration point. More precise data of the printer's overall geometry (e.q. axis skew) helps the printer to apply appropriate adjustments resulting in a better print accuracy. Note that this new XYZ calibration requires more time (around 20-25 minutes) to scan and evaluate all the calibration points.

This new method also replaces the last step of the older process, where the exact center of each calibration point was iteratively searched using a cross-search technique. The previous “whole-pixel” search was providing an accuracy of about 0.6 mm. Now, it is less than 0.1 mm thanks to the sub-pixel analysis.

Performing this new XYZ calibration on a calibrated printer is not necessary unless you are experiencing issues with your prints. Note that 3D printers from the MK3 family recognize this new sensor automatically. However, in the case of MK2.5/MK2.5S, the user needs to toggle a switch in the settings menu (LCD Menu -> Settings -> HW settings -> SuperPINDA -> ON/OFF) to inform the printer that the SuperPINDA sensor is present as the printer cannot recognize it automatically.

3.9.3 RC1 Firmware for MK3, MK3S, MK3S+, MK2.5 and MK2.5S

26 Dec 17:46
Compare
Choose a tag to compare

Summary

  • Redesigned XYZ calibration

Redesigned XYZ calibration

Starting with the release of the Original Prusa i3 MK3S+ printer there is a new induction sensor called SuperPINDA, which is temperature-independent, features a much higher quality sensor and better quality components overall, plus, it does not need a thermistor. This sensor is a successor to the P.I.N.D.A. v2 (with thermistor) and is compatible with the following printers:

  • Original Prusa i3 MK3/MK3S/MK3S+
  • Original Prusa i3 MK2.5/MK2.5S

In order to use the full potential of both sensors, this firmware brings a significantly redesigned XYZ calibration. Previously, the data during the calibration were measured in one direction and approximated. Now, for both P.I.N.D.A. v2 and SuperPINDA the new algorithm measures 1024 points (32x32 bitmap) on the heatbed for each calibration point and utilizes z-hop on the Z-axis (multiple distances from the surface). The reason for multiple measurements is to mitigate the effect of the hysteresis* of the sensor. A similar method is used in the Mesh Bed Levelling (MBL).

*Every measurement sensor has its own hysteresis, which can be explained as a memory effect from the previous measurement. If you measure the first point, some of the energy remains in the sensor and affects the value in the second measured point. This effect has to be eliminated to provide accurate data.

Calibration_point_FW393

Calibration point on the heatbed "as seen" by the printer

From the measured data, the printer now performs a subpixel processing of the scanned 32x32 bitmap and detects very precisely the center of each calibration point. More precise data of the printer's overall geometry (e.q. axis skew) helps the printer to apply appropriate adjustments resulting in a better print accuracy. Note that this new XYZ calibration requires more time (around 20-25 minutes) to scan and evaluate all the calibration points.

This new method also replaces the last step of the older process, where the exact center of each calibration point was iteratively searched using a cross-search technique. The previous “whole-pixel” search was providing an accuracy of about 0.6 mm. Now, it is less than 0.1 mm thanks to the sub-pixel analysis.

Performing this new XYZ calibration on a calibrated printer is not necessary unless you are experiencing issues with your prints. Note that 3D printers from the MK3 family recognize this new sensor automatically. However, in the case of MK2.5/MK2.5S, the user needs to toggle a switch in the settings menu (LCD Menu -> Settings -> HW settings -> SuperPINDA -> ON/OFF) to inform the printer that the SuperPINDA sensor is present as the printer cannot recognize it automatically.

3.9.2 Firmware for MK3, MK3S, MK2.5 and MK2.5S

10 Nov 09:39
396ee0f
Compare
Choose a tag to compare

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.

3.9.1 Firmware for MK3, MK3S, MK2.5 and MK2.5S

21 Sep 10:54
Compare
Choose a tag to compare

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.

LA15_PLA_test

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.

LA15_PETG

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 wo...

Read more

3.9.1 RC1 Firmware for MK3, MK3S, MK2.5 and MK2.5S

02 Sep 20:16
Compare
Choose a tag to compare

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.

3.9.0 Firmware for MK3, MK3S, MK2.5 and MK2.5S

18 May 19:16
Compare
Choose a tag to compare

Summary:

  • Linear Advance 1.5
  • Automatic E-jerk conversion
  • Screen brightness adjustment
  • Filament sensor recognition
  • New G-code files sorting
  • Toggle and Translations
  • MMU2S selector blade activated
  • Show current Z offset in reset dialog before first layer calibration
  • Unknown Z coordinate displayed
  • Safer moves in Z-axis, if the position is unknown
  • Heating disabled during MBL
  • MINTEMP value lowered
  • MINTEMP error differentiated
  • Laser filament sensor sensitivity fix
  • Flickering “Statistics” screen fixed
  • Tone timer re-enabled
  • Nozzle crash protection improved
  • MMU runout for unknown filament fixed
  • Belt test improvements
  • Decoupling XYZ relative and E relative
  • Other changes
  • Fixed bugs
  • GitHub templates

This is the final release of the firmware 3.9.0, a direct successor to the 3.8.1. Introducing new features, improved functionality, and bug fixes. These release notes are a summary of the previous releases BETA, RC1, RC3.

This release includes:

  • 409 commits to the code
  • 108 pull requests
  • 66 closed issues
  • cooperation of 14 developers

Special thanks to our community and the most active users @leptun, @wavexx, @3d-gussner, @nikkolade, @vintagepc @smurfix for discovering/reporting various issues and helping with fixing and testing them. Special thanks to @awenelo and @carlin57 for helping with the French translation. We really appreciate your cooperation.

Detailed description

Linear Advance 1.5

One of the biggest contributions from the community is the support for Linear Advance 1.5, which is also backward compatible with the previous version. In case you have a G-code with Linear Advance 1.0, the printer will analyze the code and convert the values automatically.

LA

This graph is showing the function used for converting LA 1.0 and 1.5

Linear Advance 1.5 (LA15) has been introduced in the 3.9.0-BETA release and it was further improved in the RC1 and RC3 releases. One of the major fixes is addressing issue #2543 reported by user @nikkolade. The release 3.9.0-RC1 was causing print issues (mainly an inconsistency in quality) compared to the stable 3.8.1.

The cause of this issue was in the implementation of the linear advance function. And while fixing it, the developers have discovered that it is partly present in the latest stable release 3.8.1 as well. Further research revealed that it is also responsible for rare scenarios, in which the material was missing at the start of a path of an object's support, which negatively affected the support quality.

Another problem was with the acceleration while using a factor K=15. With this value, the printing speeds were lowered significantly because after the conversion to the LA15, the K factor value was close to zero (3E-9) and the firmware responded incorrectly.

Last addition to the Linear Advance 1.5 and PrusaSlicer profiles. To keep the profiles compatible with both FW 3.9.x+ and older firmware versions, this release accepts a G-code where the K factors are specified in pairs. The old firmware 3.8.1 picks up the last M900 Kxx (this will remain as the old Linear Advance 1.0 K factor value), while the new firmware 3.9.0 has a smarter algorithm. When the new FW encounters M900 Kxx with xx < 10 it automatically switches to Linear Advance 1.5 mode, accepting only xx < 10 from now on.

However, if a custom filament profile is used and the user wants to update these to be compatible with new and old firmware, it is important that the M900 Kx.xx LA1.5 value MUST be placed BEFORE the M900 Kyy LA1.0 value.

Otherwise, the FW3.9.0+ firmware will switch to LA1.0 conversion mode and ignore the 2nd M900 Kx.xx value as it K is <10 and so invalid in this mode.

Example of K factor in the G-code:

M900 K0.12
M900 K45

Firmware 3.8.1 behavior:
The firmware will pick up the second (last) value (K45)
Firmware 3.9.0 behavior:
The firmware will use the first (LA15) value K0.12

To make this compatible with MMU G-codes, which may set different K factors for different materials, M900 K0 resets the Linear Advance mode.

A new M900 Kxx with either new or old values may be accepted then and the firmware will act accordingly. In general, the M900 K0 resets the LA and it is recommended to have it at the end of every G-code.

A special note regarding the calibration prints created under LA 1.0. The automatic conversion to the LA 1.5 might not bring the same print results compared to the previous version. This is because the automatically converted K factors (LA 1.0 to LA 1.5) can differ from the ideal K factors for LA 1.5. It is highly recommended to reslice the calibration object having the LA 1.5 values already in the G-code.

In general, it is recommended that the user switches to the new profiles whenever possible. Even some community profiles are already LA 1.5 compatible and will produce better print results.

For custom profiles, starting this firmware there are three options:

  1. Use the new LA15 K values to achieve the best print results
  2. Use the old LA10 K values, which will be auto-converted to LA15
  3. Use both K values to create profile compatible with the old and new firmware

All the issues mentioned above are addressed in this release, the quality of the supports is now improved and the conversion function has been further tweaked to achieve optimal print results.

Automatic E-jerk conversion

With the introduction of Linear Advance 1.5 to the firmware, it was also necessary to convert the values of the E-jerk, originally used for Linear Advance 1.0. Based on internal testing, it was decided to set the conversion of the E-jerk parameter from 1.5 to 4.5. If there is a different E-jerk value in the G-code file, the printer uses the function shown in the graph below to convert the value correctly.

LA15vs10_ejerk

Old profiles with very low e-jerk might still result in a very slow print. Resetting the E-jerk to the standard values in the "Print Settings, Machine limits" menu will fix such an issue.

Screen brightness adjustment (MK3/MK3S)

Starting this release, certain printer models are capable of adjusting the brightness of the screen, which is convenient if the printer is used in a darker environment. The user can adjust the following parameters:

ScreenBacklightON_

Screen Backlight ON

ScreenBacklightOFF_

Screen Backlight OFF

In the menu head to Settings -> Brightness

This feature is available for printers manufactured in the second half of 2019. For older printers, you have to replace the LCD screen and also in some cases the Einsy board (you must have Einsy 1.1a or newer). Selected parts can be obtained in the official e-shop, spare parts section.

Filament sensor recognition (MK3S)

Over the lifetime of the MK3 and MK3S, we have introduced several iterations of the sensor responsible for filament checks. The MK3 was using a laser sensor, which was later replaced with another generation in the MK3S, which uses a steel ball and a lever-arm to trigger the sensor. In the latest iteration of the sensor with the red PCB introduced last year (2019), we have added one feature, which will be activated starting this release.

The printer will be able to recognize that the connection with the sensor was interrupted (e.g. broken wire or disconnected cable) and take appropriate action based on the settings in the Menu > Settings > HW setup > FS action

  1. Pause - pause the print, show an onscreen message and wait for the user
  2. Continue - ignore the issue and continue printing

To ensure correct operation, the printer needs to recognize the sensor first. As explained above, this will work only for the MK3S and only for the red PCB sensor, which is revision 0.4.

Right now there are two options for the MK3S:

  1. The printer is equipped with the unsupported revision 0.3 or older
  2. The printer is equipped with the supported revision 0.4 or newer*
    *Currently, there are no plans for another revision of the filament sensor.

The process is fully automatic and the printer enables the new feature for the revision 0.4 only when all of the following conditions are met:

  1. The printer is in an idle state (e.g. not printing, not heating up, …)
  2. Only if the InfoScreen (home screen) is displayed
  3. The sensor state is either “Unknown” or “Older version”
  4. In the settings menu, the Filament sensor is set to “ON”
  5. The correct voltages were measured (conditions: no filament: 4.2-4.6 V, inserted filament: 0.3-0.5 V)

As soon as the new sensor is detected and the conditions are met, the printer will display the following message in the lowest row of the LCD screen: “FS v0.4 or newer”

In the Support > Voltages menu, a new value will now be displayed regardless of the version of the sensor: “IR: x.xxV”. This value represents the actual voltage measured on the pin of the filament sensor.

In the Support > Fil. sensor menu, information about the revision of the sensor will be displayed. Currently, three possible states are defined:

  1. 0.3 or older
  2. 0.4 or newer
  3. unknown status

There is a new submenu in Settings > HW settings > Fsensor Detection. Where the sensor revision recognition can be triggered manually for the MK3S printer, the MK3S with the MMU2S unit must run th...

Read more

3.9.0 RC3 Firmware for MK3, MK3S, MK2.5 and MK2.5S

28 Apr 15:25
d1e92a7
Compare
Choose a tag to compare

Summary:

  • More improvements to LA15
  • Nozzle crash protection improved
  • Filament sensor recognition
  • File sorting updated
  • MMU runout for unknown filament fixed
  • Belt test improvements
  • Decoupling XYZ relative and E relative
  • Calling out all the brave testers

Version 3.9.0-RC3 is a direct successor to the previous version 3.9.0-RC1. Version 3.9.0-RC2 is a non-public release because of a bug discovered after the final build of RC2 was created.

Detailed description

More improvements to LA15

Linear Advance 1.5 (LA15) has been further improved for this release. One of the major fixes is addressing issue #2543 reported by user @nikkolade. The previous release 3.9.0-RC1 was causing print issues (mainly an inconsistency in quality) compared to the stable 3.8.1.

The cause of this issue was in the implementation of the linear advance function. And while fixing it, the developers have discovered that it is partly present in the latest stable release 3.8.1 as well. Further research revealed that it is also responsible for rare scenarios, in which the material was missing at the start of a path of an object's support, which negatively affected the support quality.

Another problem was with the acceleration while using a factor K=15. At this value, the printing speeds were lowered significantly because after the conversion to the LA15, the K factor value was close to zero (3E-9) and the firmware responded incorrectly.

All the issues mentioned above are addressed in this release, the quality of supports is now improved and we have further tweaked the conversion function to achieve optimal print results. Kudos to users @nikkolade, @vintagepc @leptun @wavexx for either discovering/reporting the issue or helping fixing and testing it. We really appreciate their cooperation!

Nozzle crash protection improved (MK3/MK3S)

Starting this release, the firmware has the StallGuard functionality for the Z-axis enabled also during the self-test procedure. If the P.I.N.D.A. sensor is set too high and the nozzle starts crashing into the heatbed, the StallGuard is activated and motion of the Z-axis immediately stopped to prevent any possible damage. A warning message “Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset.” is then displayed on the screen.

Note, that this function is available only on the boards with the Trinamic drivers (MK3/MK3S). Older printers like MK2.5 and MK2.5S won't support it.

Filament sensor recognition (MK3S only)

Over the lifetime of the MK3 and MK3S, we have introduced several iterations of the sensor responsible for filament checks. The MK3 was using an optical sensor, which was later replaced with another generation in the MK3S, which uses a steel ball and a lever-arm to trigger the sensor. In the latest iteration of the sensor with the red PCB introduced last year (2019), we have added one feature, which will be activated starting this release. The printer will be able to recognize that the connection with the sensor was interrupted (e.g. broken wire or disconnected cable), pause the print and inform the user.

To ensure correct operation, the printer needs to recognize the sensor first. As explained above, this will work only for the MK3S and only for the red PCB sensor, which is revision 0.4.

Right now there are two options for the MK3S:

  1. The printer is equipped with the unsupported revision 0.3 or older
  2. The printer is equipped with the supported revision 0.4 or newer*

*Currently, there are no plans for another revision of the filament sensor.

The process is fully automatic and the printer enables the new feature for the revision 0.4 only when all of the following conditions are met:

  1. The printer is in an idle state (e.g. not printing, not heating up, …)
  2. Only if the InfoScreen (home screen) is displayed
  3. The sensor state is either “Unknown” or “Older version”
  4. In the settings menu, the Filament sensor is set to “ON”
  5. The correct voltage was measured (conditions: no filament: 4.2-4.6 V, inserted filament: 0.3-0.5 V)

As soon as the new sensor is detected and the conditions are met, the printer will display the following message in the lowest row of the LCD screen: “FS v0.4 or newer”

In the “Support -> Voltages” menu, a new value will now be displayed regardless of the version of the sensor: “IR: x.xxV”. This value represents the actual voltage measured on the pin of the filament sensor.

In the “Support -> Fil. sensor” menu, information about the revision of the sensor will be displayed. Currently, three possible states are defined:

  1. 0.3 or older
  2. 0.4 or newer
  3. unknown status

There is a new submenu in “Settings -> HW settings -> Fsensor Detection”. Where the sensor revision recognition can be triggered manually.

The recognition process is as follows:
fsensor_schema

The measured values of the voltages during the process can be read from the serial connection:

  • “Measured filament sensor high level: xxx V”
  • “Measured filament sensor low level: xxx V”

In a very rare scenario, in which the user decides to downgrade the 0.4 sensor to an older revision, it is necessary to run the procedure manually, to inform the printer about the change.

A known issue:
In case the full factory reset is performed “Factory reset -> “All Data” the printer will lose track of which sensor version is currently connected. The automatic recognition mechanism doesn’t work for this specific scenario and the recognition must be started manually through the menu "Settings -> HW Setup -> Fsensor Detection". This will be fixed in the final release of this firmware 3.9.0.

Attention for those using a printer with a modified filament sensor (i.e. with a LED). Since we are unable to test every possible modification to the original hardware, please verify the behavior is correct. In case of any issues, this detection algorithm can be disabled in the source code.

File sorting updated

Previously, the firmware was using only the “modification time” parameter for sorting the files. However, if an old G-code was copied to the SD card, it wasn't placed at the very top due to the sorting logic. This release fixes this scenario by checking both the “modification” and “creation time” parameters and selecting the most recent one.

MMU runout for unknown filament fixed

This fix addresses the issue with the printer soft-resetting in case a filament runout is detected while the current filament is unknown. This can happen due to the following reasons:

  • User performed a load to the nozzle and an event caused a power cycle (power panic during MMU print)
  • User turned off the printer and continued printing with the same filament the next day

Since the currently loaded filament is unknown, the printer cannot reliably retract it and move the selector to the next one if the Spooljoin function is enabled, nor can it be marked as fully depleted. After trying several automatic procedures, it was decided to trigger M600 in such scenarios and require the user's attention to verify the state of the filament.

This fixes issues #2464, #1993, #2301, #2500, and kudos to user @vintagepc for his contribution!

Belt test improvements

The belt test feature is providing approximate values indicating, whether the belts are properly tensioned. There were some scenarios, in which the test didn't finish correctly.

This release fixes all of them, namely: #2472, #2356, #2484, #968, #2547 and again kudos to @vintagepc.

Decoupling XYZ relative and E relative

Until now the Prusa-Firmware was preventing the user from using relative XYZ motion (for Z-hop) at the same time with absolute extrusion. This behavior was fixed and also switched at the same time to be more inline with the Marlin 2.0 standard (changing the XYZ relativity also affects the extruder).

The users however reported that some calibration G-codes stopped working with the RC1 release. It turns out those G-codes needed the axis to be decoupled just like previously in Prusa-Firmware and not be directly inline with Marlin 2.0. The second change, which comes with this RC2, decouples the XYZ relativity from the extruder completely, eliminating both mentioned issues simultaneously.

Calling out all the brave testers

We would like to release the final firmware as soon as possible, however, there are over 130 pull requests between version 3.8.1-FINAL and the current 3.9.0-RC3. Some of them like Linear Advance 1.5 are a major change to the printer's behaviour and we want to be sure that the final version is as stable as the current version 3.8.1.

The plan is to release the final version of the 3.9.0 in about two weeks, if no major issues are discovered. We would appreciate feedback from the community. Compare your prints between both firmware versions and let us know if the quality is the same or better on the newer firmware.

Keep in mind that LA1.5 is less demanding on the CPU than the LA1.0, therefore the prints might finish slightly sooner. The limiting factor is now the value of the E-jerk which is now set to a rather conservative value of 4.5. If your G-code has a LA1.0 with value 1.5 it will be automatically converted to value 4.5. We are currently testing an E-jerk value of 8, which is still relatively safe and won't cause the Extruder motor to skip steps.

Our aim is to collect the community experience and tweak the firmware to achieve even faster printing times.

Thank you

3.9.0 RC1 Firmware for MK3, MK3S, MK2.5 and MK2.5S

17 Feb 22:40
c07814b
Compare
Choose a tag to compare

Summary:

  • Power panic fixed
  • Automatic E-jerk conversion
  • Heating disabled during MBL
  • MINTEMP value lowered
  • MINTEMP error differentiated
  • Filament sensor sensitivity fix (MK3)
  • Flickering “Statistics” screen fixed
  • Tone timer re-enabled
  • “Unknown height” displayed for Z-axis fixed

This is a release candidate of the upcoming firmware 3.9.0 with several fixes for bugs discovered in the previous beta release.

Detailed description

Power panic fixed

The power panic function didn't work properly in the previous beta release. This issue is now fixed. Also, during the debugging, the developers discovered a way to further optimize the code. This release corrects an issue with data being reset on “Fail stats > Last print” and also fixes a scenario in which the printer would fail to heat up the hotend during the recovery. This caused an issue when the printed object could detach from the sheet as the extruder moved.

Automatic E-jerk conversion

With the introduction of Linear Advance 1.5 to the firmware, it was also necessary to convert the values of the E-jerk, originally used for Linear Advance 1.0. Based on internal testing, it was decided to set the conversion of the E-jerk parameter from 1.5 to 4.5. If there is a different E-jerk value in the G-code file, the printer uses the function shown in the graph below to convert the value correctly.

LA15vs10_ejerk

Heating disabled during MBL

The Pulse-width modulation (PWM) of the heated bed created an electromagnetic field, which had a negative impact on the P.I.N.D.A. sensor during the mesh bed levelling (MBL) procedure. To increase the reliability of the measurements, heating is temporarily disabled above each measured point during the MBL.

MINTEMP value lowered

Based on the feedback from the community, the minimal operational temperature was lowered from 15°C to 10°C (59°F to 50°F).

MINTEMP error differentiated

Previously the firmware displayed a message “MINTEMP FIXED” after a successful recovery in an environment with low temperature. New firmware distinguishes between “MINTEMP HOTEND FIXED” and “MINTEMP BED FIXED”.

Filament sensor sensitivity fix (MK3)

The new Linear Advance 1.5 function was causing issues on older MK3 printers equipped with the IR filament sensor. The sensitivity of the sensor was adjusted to prevent false filament runout detections. Most problematic colours were pink and transparent green filament.

Flickering “Statistics” screen fixed

The screen displaying the statistics was flickering during the print due to an error in the code responsible for refreshing the screen. The error is now fixed.

Tone timer re-enabled

The function responsible for the tone playback was broken in the previous release. It is now fixed and available at timer4 (timer2 is used as a system_timer) both for Einsy (MK3S) and MiniRambo (MK2.5S).

“Unknown height” displayed for Z-axis fixed

There were several reports that the printer would display “?” instead of the Z coordinate. This happens, when the printer isn't sure about the exact position (height) of the Z-axis. The issue was caused by the behaviour of the black Delta PSU. This is now fixed.