-
Notifications
You must be signed in to change notification settings - Fork 13
My K1 Journey
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
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
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
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
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
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
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
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
https://www.printables.com/model/669220-remixed-betweener-notch-for-chain-support
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
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
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
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
Rooting the printer is not optional
Refer to install_moonraker
function in my install.sh script.
Refer to install_fluid
functions in my install.sh script.
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.
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.
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.
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.
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/
This is left intentionally blank