Back to index | Discuss

Notes on using a Creality K1 Max

2023 AUG 28

Installing a Bondtech LGX Lite

These are my notes on using Bondtech’s LGX Lite extruder on a Creality K1 Max 3D-printer.

A Creality K1 that is powered by a Bondtech LGX Lite extruder.


My Creality K1 Max (K1) extruder gave up after only 10 hours of printing. It all started with snagged filament. The filament jumped off the MasterSpool and got tangled in the spool holder. The K1 extruder tried, but could not, feed more filament. Instead of stopping, it proceeded by chewing through its own plastic gears:

A tooth is missing and another is shaved off this K1 extruder.

The early K1 printers had bad extruders [1, 2]. Bad extruders are identified by their shiny metal interiors. This is not one of those. This is the supposedly better extruder as evident by its matte finish:

A v2 K1 extruder is identified by its matte finish.

Better or not, the extruder was toast. It could not extrude reliably. A replacement was in order. Using another K1 extruder would likely result in the same issue on the next snag or jam. We need something better. Something battle tested with true engineering prowess.

Choosing a replacement

As of this writing there are no replacement extruders for the K1. Instead, we will have to modify cables, root the machine, fiddle with Klipper configurations, and print adapters, to fit an aftermarket extruder. It is work, but it does leave us with options.

The K1 extruder is strikingly similar to Bondtech’s LGX Lite (LGX) as noted by Nathan Builds Robots. It features large extruder gears, a pancake stepper motor, and a simple lever for setting the tension.

An other option is Orbiter V2.0. It has smaller steel gears and a very interesting filament sensor add-on with a neat unload/load button.

Other notable options:

Update 2023-09-18: The Sherpa Mini and HextrudORT are not suitable. They have no leaver to release the tension, making loading an unloading very difficult.

I went with the LGX extruder because it was widely available on short notice. And because I like the large extruder gears. They seem to produce very smooth and consistent extrusions.

Rooting the Creality K1 Max

We need access to Klipper’s configuration if we are to replace the extruder (to modify drive currents, estep values etc.) Unfortunately, this isn’t possible on the default firmware. Creality has decided to cripple Klipper. Fortunately, some very crafty people have figured out how to root the machine. Use the following resources to root your printer:

With a rooted printer you get access to Fluidd which is a very nice web interface for Klipper.

Quick how-to:

  1. Download the pre-rooted image file.
  2. Place the image on the root of a USB-stick.
  3. Power down the printer.
  4. Insert the USB-stick in the printer.
  5. Power up the printer.
  6. Wait while it upgrades.
  7. Enable WiFi on the printer.
  8. Take note of your printer’s IP-address.
  9. Go to your computer and visit http://your-printer-ip:4408/ (replace your-printer-ip with your printer’s IP-address.)
  10. You are now in Fluidd. Here you can control the printer, upload G-code, and modify settings.

Good to know

Attaching the extruder

The LGX is too large to fit where the K1 extruder used to sit. Instead, it goes on top of the print head. Attach it using the Creality K1 Universal Extruder Adapter. This adapter should work for all extruders mentioned above. Re-use the hardware from the old extruder.

Here is an informative video from Nathan Builds Robots with more information.

Use a file to remove any excess plastic that keeps the adapter from seating properly. The two protrusions at the top of the print head kept my adapter from seating. Some light sanding is required.

The adapter isn’t seated properly and requires sanding.

You need a spare PTFE tube to go inside the adapter. The recommended length is 65 mm.

Creality unfortunately went with a Molex PicoBlade connector for their stepper motor. The LGX stepper motor comes with a more standard JST-connector. You can either source some PicoBlade connectors (housing, connector, tool) and crimp them into the LGX motor or use the cable from the original motor. I went with the latter. Here are the connections you need to make:

An LGX motor spliced onto the K1 motors connector.

Remove the PTFE tube from the drag chain.

The LGX when mounted on the print head.

Configuring Klipper

Open the Fluidd web interface of your K1. It should be located on an address similar to Go to the Configuration page and locate printer.cfg.

Our first modification is reducing the bed size by 6 mm in the Y-direction. This is necessary since the LGX stepper protrudes from the back of the print head. Locate the [stepper_y] section and change position_max:306 to position_max:300. This is the final result:

step_pin: PB8
dir_pin: !PB7
enable_pin: !PC3
microsteps: 32
rotation_distance: 72
endstop_pin: tmc2209_stepper_y:virtual_endstop
position_endstop: -2
position_min: -2
position_max: 300 # reduced by 6 mm
homing_speed: 36

Our second modification is setting the correct estep value. This setting is called rotation_distance in Klipper. It is found under the [extruder] section. The LGX documentation recommends a value of 5.7:

max_extrude_only_distance: 1000.0
max_extrude_cross_section: 80
step_pin: nozzle_mcu:PB1
dir_pin: nozzle_mcu:PB0
enable_pin: !nozzle_mcu:PB2
microsteps: 16
rotation_distance: 5.7 # LGX recommended value is 5.7
nozzle_diameter: 0.800
filament_diameter: 1.750
heater_pin: nozzle_mcu:PB7
sensor_type: EPCOS 100K B57560G104F
sensor_pin: nozzle_mcu:PA0
pressure_advance: 0.04
pressure_advance_smooth_time: 0.040
control: pid
pid_Kp: 25.013
pid_Ki: 2.566
pid_Kd: 60.966
min_temp: 0
max_temp: 320

Our final modification is reducing the run current and disabling stealthchop. Go to the [tmc2209 extruder] section. The recommended LGX run current is 0.45 A. Change run_current to match. Disable stealthchop to increase torque by setting stealthchop_threshold to 99999 (can we remove this setting to disable it?)

[tmc2209 extruder]
uart_pin: nozzle_mcu:PB11
tx_pin: nozzle_mcu:PB10
uart_address: 3
run_current: 0.45 # recommended LGX run current is 0.45 A
sense_resistor: 0.150
stealthchop_threshold: 999999 # disable stealthchop for more torque

Update 2023-09-29: We should also fix a bug caused by the PAUSE/RESUME macros.

Press Save & Restart to apply the changes. Then wait for Klipper to restart.

Note the LGX lever

Keep the lever to the left to load/unload filament.

Keep the lever in the middle (aligned with the PTFE tube) when printing PLA/PETG and other rigid materials.

Keep the lever to the right when printing flexible materials.


It is tempting to upgrade the gears to steel. Steel hopefully more wear and heat resistant. However, the increased heat resistance is of negligible importance due to the plastic housing. And unfortunately, it’s a very expensive upgrade at 50 % the cost of a new extruder with motor.

Replacing the K1’s runout sensor with a filament motion sensor is also tempting. A filament motion sensor monitors both the presence of filament and its motion. It allows the printer to stop when jammed. (BigTreeTech SFS V1.0, BigTreeTech SFS V2.0, Marlin/Klipper config)

A lighter print head is a better print head. Removing the Lidar is easy since it has no function? But we can make it even lighter by also removing the USB-cable RS232. I suspect the cable only attaches to the Lidar and therefore has no function? Even less when the Lidar is missing. Update 2023-10-10: The cable is an RS232 cable according to the silkscreen on the motherboard. It runs in parallel with the CAN-cable all the way from the motherboard to the print head.

Smooth filament path

Update 2023-09-29: Removing the default runout sensor is the way to go. Remove the runout sensor but leave the bowden tube press-fit adaptor in place. Then run a longer tube from the extruder all the way to the spool. The result is a super smooth filament path from spool to extruder. Magic.

Extruder current issue

Update 2023-09-29: There is a bug caused by the PAUSE/RESUME macros. The PAUSE macro lowers the extruder run current to a measly 0.25 A. This is great while the printer isn’t moving. But not so great when the run current isn’t reset to the default value. We’ll fix this by resetting the run current to 0.45 A in the START_PRINT macro. Add RESTORE_E_CURRENT to the end of the macro gcode section.

[gcode_macro START_PRINT]

  # ... your regular START_PRINT macro goes here ...

  RESTORE_E_CURRENT # use configued run current instead of PAUSE current
Copyright (c) 2023