Skip to content

My K1 Journey

Jason Pell edited this page May 7, 2024 · 14 revisions

This page describes my journey with my k1, I purchased in november 2023 for my 50th birthday present to myself!

It describes:

  • hardware mods
  • software
  • automation of installation of my setup after a factory reset

Hardware mods

BIQU Microprobe

This by far is the most consequential mod I have done, this allowed me to dump a substantial amount of creality gcode, specifically since i stopped using the prtouch, I could basically install vanilla klipper, the only thing stopping me going completely vanilla klipper is the creality boot loader on the tool head which requires firmware be built from Creality version of klipper, I hope to solve that soon with katapult (see below)

I discovered there was a mod for installing a bltouch to replace the prtouch for levelling and do manual z-offset, I actually was using that mod for a while, but I really wanted side mounted, so I bought a BIQU (aka Big Tree Tech) micro probe and mounted that on the side of the tool head using the lidar mounting screw holes.

Refer to https://github.com/pellcorp/creality/wiki/BIQU-MicroProbe-v2

270 degree hinges

I wanted to be able to open my k1 door and swing it around to the side for easier maintenance and access, so I printed this model:

https://www.printables.com/model/510839-270-degree-door-hinge-for-creality-k1

Feet that stay on

I often move my K1 around, it sits on my table saw which is not ideal if I want to use my table saw, but the feet would often fall out, so I printed this model:

https://www.printables.com/model/541932-foot-upgrade-creality-k1-series

Fill the gaps around the door

In order to reduce leakage for and ingress points for dust I printed this model:

https://www.printables.com/model/551917-creality-k1-door-cover

Belt tensioner upgrades

Not sure this is required, but it does feel more secure tightening the belt tensioners:

https://www.printables.com/model/615689-creality-k1-xy-belt-tensioners-upgrade

Shims for bed

My bed was not quite trammed, so I printed a single shim for the right front screw and that worked nicely: https://www.printables.com/model/681528-bed-shims-fits-creality-k1-and-k1-max

Lid riser

I wanted to give the ptfe a bit more room so it was not on such a sharp angle, also allowed me to do a few more mods for quality of life reasons:

https://www.printables.com/model/520207-jc-creality-k1-lid-riser

Better clearance for back

https://www.printables.com/model/669220-remixed-betweener-notch-for-chain-support

Side mounted PTFE to dry box

I have a sovol dry box, I wanted to leave PETG roll on my printer for sometimes weeks on end as I don't always get a lot of time to play use the k1, so I use this model:

https://www.printables.com/model/645298-creality-k1-lid-riser-with-side-load-filament

Better filament sensor loading

Rear spool holder plug

Once I removed the filament spool holder, needed something to fill the hole:

https://www.printables.com/model/674725-remix-creality-k1-rear-spool-holder-plug

I also designed a mod to make it easier to feed filament: https://www.printables.com/model/659770-k1-filament-sensor-ptfe-m10-mount

Reverse bowden tube clamps to chain

The boden tube is a bit too constricted inside the chain, so I used these to clamp it:

https://www.printables.com/model/496694-k1-bowden-tube-clips

To avoid really sharp ptfe into the hotend

I printed this: https://www.printables.com/model/621037-creality-k1-ptfe-guide

Software Changes

WARNING: This page is not a step by step guide, its more of a document to share what I did, and perhaps you might find inspiration for your own journey, certainly it is not a good idea to run this script blind, as there is the possibility of bricking your printer by failing to setup the ssh service to restart, and if you also screw up starting guppyscreen or moonraker, you can't even recover from the lack of ssh by using the command line gcode plugin.

I do this all via my installation script: https://github.com/pellcorp/printers/blob/master/k1/install.sh

Root the printer

Rooting the printer is not optional

https://guilouz.github.io/Creality-K1-Series/firmwares/install-and-update-rooted-firmware/#enable-root-access

Install moonraker and nginx and fluidd

Refer to install_moonraker function in my install.sh script.

Install fluid and make it listen on port 80

Refer to install_fluid functions in my install.sh script.

Install K1 Klipper

The https://github.com/k1-klipper/klipper is an mostly up to date with vanilla klipper version of klipper that also includes creality specific code.

Refer to the install_klipper function in my install.sh script. This actually uses a pellcorp fork of my K1-Klipper, because I wanted to make sure as part of my automated installation script that I don't install a later version of klipper that might be incompatible. My fork also applies the bltouch TRSYNC_TIMEOUT hack to /usr/share/klipper/klippy/mcu.py. In my fork I also delete the prtouch so and related python files just to make sure they are not loaded.

I could actually switch to a version of vanilla klipper at the same feature level as the K1-Klipper, because I already installed the latest nozzle firmware, but for now that seems like extra work for no reason, especially when I plan to update my nozzle mcu to use the katapult boot loader and use vanilla klipper at some point in the future.

Flashing Nozzle MCU with updated version of klipper

All firmware flashed to nozzle mcu must be built using the https://github.com/CrealityOfficial/K1_Series_Klipper.

The MCU must be updated any time there is a change in interface between Klipper C code that is flashed to MCUs and the python code of klippy.

The creality bootloader deployed to the nozzle mcu validates that the firmware being flashed is built from the k1 version of klipper.

This means that whenever changes to upstream klipper are incompatible with Creality's version of klipper, there is a painful process to cherry pick any C code over to creality version of klipper and then build the firmware using make menuconfig, this can only work for so long before its impossible to accomplish.

The mcu_update service that runs as part of the K1 checks the klipper fw directory for any newer versions of firmware and automatically flashes the relevant MCU, this is what happens initially when you migrate from using Creality Klipper to the K1-Klipper github repo.

Future Vanilla klipper

https://discord.com/channels/1154500511777693819/1217873195424813177

I am planning to migrate my k1 to pure vanilla klipper. I would need to update the nozzle mcu with a new boot loader, which I have not got to as yet, and disable the mcu_update service as well.

Guppy Screen

I then install guppy screen because I wanted to disable a bunch of creality services, mostly to give the anemic CPU some head room, but also because the master-service at least generates a lot of logs that could shorten the life of the flash storage. I don't need to use creality print or creality cloud either.

Refer to install_guppyscreen function in my install.sh script.

References

A recent post to reddit highlights the master-server hammering flash storage with thousands of log messages per hour: https://www.reddit.com/r/crealityk1/comments/1c9nqem/massive_amount_of_writes_to_the_internal_emmc/