Allowing more filament types on a K1SE and CFS combo
So I picked up a CFS and K1 upgrade kit for my K1SE, so far I like it-ish.
The biggest issue I have so far is how black-box it is. Creailty is violating GPL by distributing compiled C code alongside Klipper without providing sources for the plugins. So yeah, have fun attempting to understand the macros Creailty wrote.
Anyway, if you want to load filament from the Klipper console, you can use the gcode T#
with the number zero-indexed to the filament slots starting from the left of the CFS.
So if I wanted to load the first slot, I'd run T0
.
If you wanted to unload filament, run BOX_QUIT_MATERIAL
.
With these two macros, I can override the nozzle wipe macro (because, shocker shocker, Creailty is a shitter and didn't write a good nozzle cleaning macro for the K1SE).
Setting more profiles on the CFS
With the stock screen software, you can set the filament type, colour, and heater settings when you configure the CFS. As you can imagine the options are filtered based on the printer model.
So if you are like me and own a K1SE that is modded for enclosed printing, this poses a problem. How in the hell do you set the filament type to ABS/ASA?
Well, you can attempt to set it to just PLA and edit the heat settings, but that becomes problematic when you attempt to start a print job from the screen.
The new print flow in stock software will force you to match the filament slots in GCODE to the filaments currently loaded in the CFS. You can't assign an embeded filament slot with the type of ABS to a filament slot in the CFS that is configured as PLA, even if the temps are correctly set.
So now what? You could always start a job from the Klipper Web Panel. Means you can't use the screen either (Guppy doesn't have support for the CFS yet).
Well, if you SSH into the printer and cd
to /usr/data/creality/userdata/box
you'll see some interesting JSON files.
material_database.json
: Seems like a filament profile exported from Creailty_Print.
material_options.json
: The config file that the screen reads for filament parameters.
So we run a jq filter on the database file and:
jq '.result.list[] | .base.name' ./material_database.json
"Hyper PLA"
"Hyper PLA-CF"
"Hyper PETG"
"Hyper ABS"
"CR-PLA"
"CR-Silk"
"CR-PETG"
"CR-ABS"
"Generic PLA"
"Generic PLA-Silk"
"Generic PETG"
"Generic ABS"
"Generic TPU"
"Generic PLA-CF"
"Generic ASA"
"HP-TPU"
Oh hey, the names of the filament options on the screen!
So let's do the same with the options file:
jq '.' material_option.json
{
"Creality": {
"PLA": "Hyper PLA\nCR-PLA\nCR-Silk\nEnder-PLA\nEN-PLA+\nCR-PLA Matte\nCR-PLA Fluo\nCR-Wood\nHP Ultra PLA",
"PETG": "Hyper PETG\nCR-PETG",
"TPU": "HP-TPU\nCR-TPU"
},
"Generic": {
"PLA": "Generic PLA\nGeneric PLA-Silk",
"PETG": "Generic PETG",
"TPU": "Generic TPU"
}
}
Huh.
So let's attempt something, Let's add a “Generic ABS” option in this.
@@ -7,6 +7,7 @@
"Generic":{
"PLA":"Generic PLA\nGeneric PLA-Silk",
"PETG":"Generic PETG",
- "TPU":"Generic TPU"
+ "TPU":"Generic TPU",
+ "ABS":"Generic ABS"
}
-}
+}
After a power cycle of the printer (or reboot
command) and all of a sudden I can set ABS as a type on my CFS.
So yeah. Doing this would allow you to set unoffical filament types on the CFS.
neat.
Oh yeah, I guess if you really wanted to you could add your own filament profiles into the database file. I saw a field in that file that was related to filament ramming, I'm not sure if they are currently used (guess we'll see when it's reversed engineered), so you might incounter some issues if you blindly edit shit.
Make a backup and have fun.