Linear Advance (LA) is a technology that predicts the pressure build-up in the extruder when printing at higher speeds. The firmware of the printer uses that prediction to decrease the amount of filament extruded just before stopping and decelerating, which prevents blobs or artifacts at the sharp corners. What is referred to as 'K-values' are the parameter determining how much Linear Advance affects the print.
With firmware 3.9.0, we introduced Linear Advance 1.5 for the Original Prusa MK3S, MK3, MK2.5S, and MK2.5, which was further improved upon with FW 3.9.1, addressing print artifacts found in specific scenarios and geometries. Linear Advance 1.5 is also backward compatible with version 1.0. In case you have a G-code with Linear Advance 1.0, the printer will analyze the code and convert the values automatically.
These values are part of our PrusaSlicer configurations and filament presets. No need to adjust if you are using these. However, if you are using filaments not present or wish to play around with the presets, we have developed a K-factor calibration print together with the community, to find the perfect K-values for your material and printing temperatures. These are based on the various quality and layer height presets found in PrusaSlicer.
It will print a series of lines with different K-values affecting the speed and flow across the accelerated distance. The examples below show how the lines are affected by their K-value. The first and last 25 mm are printed slowly, and between the marked locations (red squares) 100mm is printed fast. Look closely at the transition from slow to fast and fast to slow. You see the line can be irregular to broken entirely when the value is not optimal, most visible on the top lines (red squares), but present on all except those with the optimal K-factor. You also see big differences between different materials and how much difference it can make to have this dialed in.
Calibration G-code printed with PLA at 215 °C. Most consistent line achieved with K-value 0.05 (green square).
Calibration G-code printed with ABS at 255 °C. Most consistent line achieved with K-value 0.04 (green square).
Calibration G-code printed with PETG at 240 °C. Most consistent line achieved with K-value 0.08 (green square).
You can download the K-factor calibration G-code from our print depository or directly from the table below. These are for a 0.4 mm brass nozzle. Load the correct filament type for the G-code and start the print as any other.
|Material||Layer height | Fastest speed | PrusaSlicer profile|
|0.2mm | 45mm/s|
|0.2mm | 60mm/s|
|0.3mm | 50mm/s|
If your usual printing temperatures are different than what is provided, feel free to modify the G-Code lines to your needs.
Change the "S" values, which is the temperature in Celcius:
|M104 S215 ; Set nozzle temperature (no wait)|
M140 S60 ; set bed temp
M190 S60 ; wait for bed temp
M109 S215 ; Wait for nozzle temp
The optimal values we found in our testing are listed in the tables below. These can be implemented into any slicer. Please note that different brands and colors of the same material may require a slightly different K value when printing at extreme speeds, however, our presets should be fine with all of them.
|HIPS||0.04 (some brands may need a higher K-value)|
|PETG||0.04 - 0.05|
|ASA/ABS||0.02 - 0.03|
|HIPS||0.03 (some brands may need a higher K-value)|
As mentioned, the K-values for all filaments are already implemented into PrusaSlicer's presets. If you need to adjust these settings due to some exotic filament or a specific application, the K-value is set in the custom G-code section in the Filament Settings tab, NOT under the printer-specific custom G-code.
If you are using a different slicer than our PrusaSlicer, you must manually change the settings in the G-code script of your slicer.
Simplify3D, Cura, etc. users just need to add “M900 Kxx” into the starting G-code script. Keep in mind you need to manually change that for different filament materials. Only PrusaSlicer has a custom G-code for each filament preset and therefore the K value is changed automatically. Set the desired speed and print something (large enough for speed to show up). If sharp corners have blobs, increase the K value. If you see missing filament, decrease the K value.