3.9.0 RC3 Firmware for MK3, MK3S, MK2.5 and MK2.5S
Pre-releaseSummary:
- 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:
- The printer is equipped with the unsupported revision 0.3 or older
- 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:
- The printer is in an idle state (e.g. not printing, not heating up, …)
- Only if the InfoScreen (home screen) is displayed
- The sensor state is either “Unknown” or “Older version”
- In the settings menu, the Filament sensor is set to “ON”
- 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:
- 0.3 or older
- 0.4 or newer
- 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:
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