How To use Linear Advance on Ender 3

Linear Advance on an Ender 3 is something that you don’t hear about too often. It’s been noted on quite a few websites, including marlin’s own wiki that the bowden setup may not benefit from a linear advance. I was looking into ways to print faster while still maintaining the print quality of my slower prints; and I come across the linear advance setups that some other guys have posted about with success.

Initially I decided to use Linear Advance by itself, and to enable this option you first need to make sure that you have calibrated your Extruder E-Steps properly, and that the rest of your printer is running in a satisfactory manner. Linear advance will not help issues that are already present, but it can help you speed up your printing and decrease stringing on a well tuned printer.

If you have TH3D Firmware

If you are using TH3D Firmware as suggested on other posts from then enabling the Linear Advance option is quite simple. Open the Arduino IDE in your Firmware Folders, and ensure you have the TH3D configuration open. Open the configuration tab, and either use the “Search/Find Function” or scroll to the bottom of the configuration until you have found ” #define LinearAdvance ” options. You will remove the // in front of the settings, and I recommend leaving the K value at 0.


If you have Marlin Bugfix Firmware

Open your Arduino IDE, and choose the Configuration tab. Use the “Search/Find” function and look for “Linear Advance”. You will see an option that looks like “//#define linearadvance” and you will remove the two “//” in front of it. Below this option you will see an area to set your K value/factor. Leave it at 0, we will set this up in the Start GCode later.


Upload the firmware

Once you have enabled the firmware, you will need to go through your regular routine of uploading it to the printer. I always make sure I run these two G codes after I upload new firmware to ensure the flash memory has been reset and updated as well. Use your octoprint, or pronterface console and send the following two G-codes from the command line.



Calibrating your Linear Advance K factor

Once you have enabled the linear advance option in your configuration, and uploaded the new firmware you will have to run the K factor calibration tool and find the value at which you will use to print. This tool is helpful, and you may need to run it when you swap material types (PLA to PETG, or ABS etc). Follow the link below, and use the settings that I have listed below for your Ender 3. Don’t forget to choose the Auto Bed Leveling option box if you have ABL, otherwise don’t.

Diameter of the used filament (mm)
Diameter of the nozzle (mm)
Nozzle Temperature (°C)
Bed Temperature (°C)
Retraction distance (mm)
Layer Height (mm)

Print Bed:

Rectangular or round bed. Round beds will activate Origin Bed Center
Size (mm) of the bed in X
Size (mm) of the bed in Y
Set the origin position (X0 Y0) to bed center instead of front-left corner


Use mm/s instead of mm/min
Slow printing speed
Fast printing speed. This should differ noticeably from Slow Speed
Movement speed
Retract Speed of the extruder
Set printing acceleration (mm/s^2)
Set the Jerk for the X-axis. -1 to use firmware default
Set the Jerk for the Y-axis. -1 to use firmware default
Set the Jerk for the Z-axis. -1 to use firmware default
Set the Jerk for the Extruder. -1 to use firmware default


Select version 1.0 for Marlin 1.1.8 and earlier. Select 1.5 for Marlin 1.1.9 / 2.0 and up
Select standard or alternate pattern
Starting value for the K-factor. Usually 0 but for bowden setups you might want to start higher, e.g. 30
Ending value of the K-factor. Bowden setups may be higher than 100
Stepping of the K-factor in the test pattern. Needs to be an exact divisor of the K-factor Range (End – Start)
Length of the Slow Speed test-line (mm)
Length of the Fast Speed test-line (mm)
Distance between the test lines. This will impact print size
Adds a frame around the start and end points of the test lines. May improve adhesion
Rotates the print in 45° steps
Prints the K-value besides every second test line


Ratio between extruded line width and nozzle diameter. Should be between 1.05 and 1.2
Offset the Z-axis for manual Layer adjustment
Level bed or load a saved mesh (i.e. for UBL) before printing. Bed leveling has to be activated in Configuration.h! Loading a mesh requires UBL to be activated!
Use Firmware Retract. Needs to be activated in Marlin
Usually 1.0
Prime the nozzle before starting the test pattern
The default of 2.5 results in roughly 1mm of filament for 10mm line length
Speed of the prime move
Inserts a pause of x seconds before starting the test pattern to bleed off any residual nozzle pressure

Determining your best K value

Once you have generated the K factor calibration test, and run the print you will see some of the lines may have printed well, and some may have done bad. The point of this test is to get the most consistent line over the slow and high speeds. You should look over your lines and determine which one is the most consistent. If there is a value that is very close, but could use some more tweaking: modify the linear advance calibration pattern again but change the options to start below the setting you think looked best, and end just after it with a 0.05 increment. (Example: Start @ 0.40 End @ 0.60 with a 0.05 increment). Choose the best K value for your printer and material, and make sure you make a note of it.

Changing your Start G-Code to use K Value

Now that you have your new K value, you will want to use it when you are starting a new print. You will add the following line to your Start G-Code in Cura, where 0.00 should be replaced with your new K value.

M900 K0.00

Increase the Print Speeds incrementally and start testing! It’s time to see if your new linear advance setup will print just as good at a faster rate, later we will talk about getting more speed by increasing firmware default accelerations and max feed rates. With our Ender 3 running on Linear Advance we have successfully printed up to 90mm/s with fairly simple prints. 60mm/s is a walk in the park now!

0 0 votes
Article Rating
Notify of

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Newest Most Voted
Inline Feedbacks
View all comments

Hi thank for your information, but as far as I know the linear advance does not work on ender 3 using any creality motherboard. They are some issues with drivers. Did you use another board or did you manage to work on the creality board?


As far as I’ve read, Ender 3 v2 is not capable of linear advance? Is this correct? I heard someone say the driver firmware was burnt in the wrong mode for it…

Ky Lane

Thanks for this articvle. Is there a way to check if your printer is currently using linear advance or not? Im running a SKR Mini v2 in an Ender 3 and am unsure.

james melmede

this works fine with ar4988 drivers that are on most creality machines. Only the machines with tmc2208 drivers in legacy/standalone mode don’t work. So I believe it is all the creality silent boards that won’t work as none of these connected in the required are in UART mode?
Eg. 4.2.7(ender 3 V2) is silent tmc2208 and 4.2.2(later model ender3 pro) is ar4988.
So noisy board yes, silent board no?

Last edited 3 years ago by james melmede
jesse grauman

hey anyone else have this issue? when i generate the code and try to print it will try to print off the bed…and if i try to have it begin in the center it crashes the extruder axis into the far right of the frame lol what am i doing wrong ??

Scroll to Top