github prusa3d/Prusa-Firmware-Buddy v5.0.0-alpha1
5.0.0-alpha1 Firmware for Original Prusa MK4

latest releases: v6.0.0-xl, build/6.0.0-BETA+7062.PR3739.B2, build/6.0.0-BETA+7062.PR3765.B9...
pre-release11 months ago

Summary

  • Input Shaper functionality
  • Pressure Advance functionality
  • Printing your own models
  • Known Bugs

This is the first public release of the 5.0.0-alpha1 firmware for the Original Prusa MK4. Since this is an alpha release, it is meant only for experienced users. Features in this firmware are still being developed and may not perform as expected. There are a few known bugs (see the end of the release notes), should you encounter any other bugs or issues with the printer’s performance, please report them via GitHub or in our forums.

Please note that all parameters included in the firmware and the print profiles are work in progress and subject to change! The print speed, travel speeds and accelerations are all work-in-progress and we’re working on further improvements.

You will need at least PrusaSlicer 2.6.0-beta2 (or newer) and the special MK4 IS profiles to slice your own objects with support for Input Shaper and Pressure Advance. If you don’t see an automatic pop-up window with updated configuration files when you launch PrusaSlicer, use Configuration -> Check for Configuration Updates menu to download the new profiles. Then go to Configuration -> Configuration Wizard to add the printer with correct profiles.

PrusaSlicer link

Input Shaper and Pressure Advance

The 5.0.0-alpha1 firmware comes with three new major additions - Input Shaper, Pressure Advance and Precise Stepping.

Input Shaper is a feature designed to reduce ringing (also known as ghosting) by cancelling resonance vibrations. It works by analyzing the printer’s movements and applying a filter to the input signals. Thanks to faster travel speed and accelerations, it can also minimize stringing. It also enables faster printing.

Pressure Advance is another important addition to the firmware’s set of features. This function aims to improve the quality of printed parts by compensating for the pressure changes in the nozzle during printing. It works by extruding extra filament during accelerations and retracting the filament during deceleration to maintain a consistent pressure inside the nozzle. Pressure Advance together with Input Shaper enables printing of better-looking models, reducing ringing, overshoots and issues with inconsistent filament extrusion. They also enable faster printing.

Precise stepping is a new implementation of the stepper routine, that allows precise timing of motor steps. It was a necessary prerequisite for both Input shaper and Pressure advance.

Dedicated forum section and testing G-codes

We have created a new subsection in the MK4 forum, where we can together discuss all the things related to Input Shaper. Our support team will be there, collecting feedback, answering questions. Share your successful prints, ask questions, and report bugs - please check the list of known issues at the end of the release notes before you post.

We have also prepared pre-sliced G-codes for you to test the increased speeds. We suggest starting with these objects, because we tested them internally and confirmed they can be printed without issues. For these objects, please use standard PLA (e.g. Prusament PLA Galaxy Black) instead of various blends, silks, -fills and other “non-standard” PLA variants which require different print settings. Read the instructions thoroughly before you start printing.

Forum link

List of G-codes

  • BonkersBenchy (12 mins)
  • Benchy (27 mins)
  • Spatula (25 mins)
  • Labyrinth (3h 19 mins)
    All the G-codes can be downloaded in the Assets below.

G-code changes

You can use custom G-codes to fine-tune various Input Shaper parameters - see below.

Input Shaper - M593
Setting and activation of Input Shaper

  • D - Set the input shaper damping ratio. If axes (X, Y, etc.) are not specified, set it for all axes. Default value is 0.1.
  • F - Set the input shaper frequency. If axes (X, Y, etc.) are not specified, set it for all axes. Default value is 0Hz - It means that the input shaper is disabled.
  • T[map] - Set the input shaper type, 0:ZV, 1:ZVD, 2:MZV, 3:EI, 4:2HUMP_EI, and 5:3HUMP_EI. Default value is 0:ZV.
  • R - Set the input shaper vibration reduction. This parameter is used just for 3:EI, 4:2HUMP_EI, and 5:3HUMP_EI. Default value is 20.
  • X<1> - Set the input shaper parameters only for the X axis.
  • Y<1> - Set the input shaper parameters only for the Y axis.

Pressure Advance - M572
Set pressure advance parameters.
So far option S is supported, option W for adjusting smoothing time and D for selecting specific extruder (XL) will be added later.

  • S - Set the pressure advance value. If zero the pressure advance is disabled. In range (0-1)

Safety checks

We have added a safety check for firmware compatibility - it can detect whether the G-code includes Input Shaper-related code. In case you’re running an older firmware (4.6.2) and attempt to print an Input Shaper-enabled G-code, the printer will raise an error.

M862.6 is used to check the G-code’s level and available firmware features

  • P - Check available features during pre-print routine
  • Q - List available features on serial console

How did we do it?

We have implemented Input Shaper that suppresses the printers’ vibrations. It can increase print precision, reduce ghosting and allows printers to accelerate their print speed. The profiles and frequencies are built-in the code, no user calibration is needed.

We have based our input shaper on the implementation in Klipper github.com/Klipper3d/klipper:

Our implementation takes inspiration from the work of Dmitry Butyugin and Kevin O'Connor for Klipper in used data structures, input shaper filters, and some computations.

We chose a different approach for implementing the input shaper that is less computationally demanding and can be fully run on a single 32-bit MCU with identical results as the implementation in Klipper.

Preparation and Troubleshooting

The fastest 3DBenchy G-code will be printed several times faster compared to the previous MK4 firmware and stock profiles. To achieve the best possible print performance, we strongly suggest performing basic maintenance on the MK4 before you start. Make sure the belts on the X and Y axes are not loose, the nozzle is in a good shape, and there’s no debris on the smooth rods.

If you encounter layer shifts, the usual cause are loose belts. Adjust the belt tension according to our guide: Adjusting belt tension

If you want to revert back to stable firmware, please follow the instructions in the handbook. In short: place the stable firmware version on a USB drive, insert it into the printer and during the startup (when the logo is shown), press and hold the knob to force a firmware installation screen. Flash the stable firmware and perform a full factory reset.

Crash detection

Please note that due to high accelerations and print speed, the crash detection feature is not compatible.

Implementation limitations:

  • When the parameters for the input shaper or the pressure advance change during printing, the printer must decelerate to zero velocity.
  • The W parameter (smoothing time) of M572 is ignored, and it always has a value of 0.2.
  • When the speed limits for travel moves and printing moves are exceeded, layer shift may occur.
    • Travel move limit 400 mm/s.
    • Print moves limit 400 mm/s.
  • Temporarily disabled uploads and deleting files via Prusa Connect and PrusaLink when the printer is printing.

Printing your own models

Make sure you’re running at least PrusaSlicer 2.6.0-beta2 and you have downloaded the latest print profiles (in PrusaSlicer select Configuration -> Check for Configuration Updates menu).

When printing your own objects, please consider the following:

  • This is an alpha release and we continue to fine-tune the profiles. Some materials might be missing at the moment. Feel free to experiment and add them, if you want
  • When printing large and heavy objects, PrusaSlicer / MK4 firmware will automatically adjust settings as the height/weight of the object increases during printing
  • You may consider increasing the nozzle temperature slightly if the results with stock speeds are not optimal

Known Bugs

There are several bugs in the current alpha we are still working on.

  • False runout is sometimes triggered without an obvious physical cause
  • Layer skip can occur randomly due to e-motor premature damping
  • Random layer shift on X and Y axes
  • Boot loop can occur, restart of printer solves it (use the main switch, not the reset button)
  • Power panic and networking infrastructures are not yet debugged with IS and can lead to number of errors
  • BSODs might still occur in rare error states
  • In case the unload filament procedure is cancelled, system will crash (BSOD)

Don't miss a new Prusa-Firmware-Buddy release

NewReleases is sending notifications on new releases.