This repository contains a comprehensive configuration for the Creality K1 Max paired with the CFS (Creality Filament System). It is engineered to provide a rock-solid, error-free experience by resolving firmware communication bugs while maximizing hardware performance.
Caution
DISCLAIMER: This repository is a documentation of what worked for my specific hardware setup. It is provided "as-is" without any warranty or official support. I am not responsible for any damage to your printer. Proceed at your own risk.
- Zero-Y CR-Touch Integration: Full support for the Zero-Y offset mount to eliminate "Y-axis tilt" during probing, ensuring perfect bed meshing.
- Communication Stability (The "Silent Window"): Resolves
Key 60andKey 61internal errors by implementing movement buffers and thermal-viscosity management during CFS tool changes. - Spoolman Automation: Real-time filament consumption tracking and active spool marking in your Spoolman database.
- KAMP (Klipper Adaptive Mesh & Purge): Integrated smart leveling and purging, specifically timed to work with CFS load cycles.
Using a Zero-Y mount is the best way to get a perfect mesh because the probe is physically aligned with the nozzle's Y-position.
- Bracket Hardware: This setup utilizes the CR-TOUCH mount K1/K1Max/K1C Zero Y-Offset designed by anavrin72.
- Z-Offset: After installation, perform a fresh
PROBE_CALIBRATE. Live-adjust your Z-offset during a test print and runSAVE_CONFIG.
The CFS adds extra complexity to the filament path.
- The Pull Factor: Ensure the PTFE tube leading from the CFS to the toolhead has enough slack to reach the front corners of the bed.
- The Risk: If the tube is too tight, it can physically pull the toolhead upwards during probing at the front of the bed, resulting in a false "high" reading and a ruined first layer.
- Upload
spoolman_cfs.cfgto your configuration folder. - Add
[include spoolman_cfs.cfg]to yourprinter.cfg. - Configure
moonraker.confwith your Spoolman server IP and port.
[gcode_macro START_PRINT]
variable_prepare: 0
gcode:
BOX_START_PRINT
{% set BED_TEMP = params.BED_TEMP|default(60)|float %}
{% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(220)|float %}
{% set INITIAL_TOOL = params.INITIAL_TOOL|default(0)|int %}
SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=prepare VALUE=1
# 1. Home & Initial Thermal Prep
G90
M140 S{BED_TEMP}
M104 S150
G28
G1 Z50 F3000
# 2. Bed Stability (Heat Soak)
M190 S{BED_TEMP}
M117 Heat Soaking (5 min)...
G4 P300000 ; Mandatory 300s soak
# 3. KAMP Adaptive Mesh
BED_MESH_CLEAR
BED_MESH_CALIBRATE ADAPTIVE=1
# 4. Native CFS Load
T{INITIAL_TOOL}
# 5. KAMP Final Prep
SMART_PARK
M109 S{EXTRUDER_TEMP}
LINE_PURGE
M117 Printing...| Command | Description |
|---|---|
MAP_ALL_SPOOLS |
Manually assign Spoolman IDs to CFS slots (e.g., MAP_ALL_SPOOLS SLOT0=12 SLOT1=5). |
STATUS_SPOOL_MAP |
Prints the current CFS-to-Spoolman ID assignments in the console. |
SYNC_SPOOLMAN |
Manually triggers an active spool update in the Spoolman database for a specific slot. |
CLEAR_CFS_SPOOLS |
Resets all slot assignments to 0. |
Machine Start G-code: Pass the initial tool and temperatures to the macro:
START_PRINT BED_TEMP=[first_layer_bed_temperature] EXTRUDER_TEMP=[first_layer_temperature[initial_extruder]] INITIAL_TOOL=[initial_extruder]Change Filament G-code: This block synchronizes Spoolman and enforces a "Silent Window" to prevent RS485 bus collisions.
; --- Tool Change & Spoolman Sync ---
{if previous_extruder != -1 and previous_extruder != next_extruder}
M117 Syncing Spoolman Slot {next_extruder}...
SYNC_SPOOLMAN SLOT=[next_extruder]
M400 ; Clear movement buffer
BOX_ERROR_CLEAR ; Clear data bus
G4 P3000 ; 3s Silent Window for stability
M104 S260 ; High-temp load to reduce motor torque
M117 Loading Tool {next_extruder}...
T[next_extruder] ; Call native tool change
M104 S[nozzle_temperature_range_high] ; Return to printing temp range
M117 Change Complete.
{endif}The Key 60: Internal error on command:BOX_EXTRUDE_MATERIAL is caused by electrical noise and bus congestion on the RS485 line. This setup resolves it via:
- The Silent Window: A 3-second pause and
M400ensure the printer's motion controller is idle before the CFS starts its high-frequency data transmission. - Torque Reduction: Forcing a 260°C load temperature reduces filament viscosity. This significantly lowers the electrical noise generated by the extruder motor, preventing data corruption on the communication bus.
- Native T-Command: Utilizing the internal firmware's tool-change logic instead of manual macro calls ensures the CFS handles the "Shadow Move" to the purge station reliably.
This final section includes the clickable link to the pellcorp guide that helped with the implementation.
- anavrin72 - For the excellent Zero-Y CR-Touch mount.
- Peter Ellerman (pellcorp) - For the invaluable guide on K1 BL-Touch integration and firmware troubleshooting.
- Guilouz - Creality K1 Series Helper Script - For the software foundation.
- Donkie - Spoolman - For filament tracking.
- kageiit - KAMP - For adaptive meshing logic.
Resolved Key 60/61 errors by moving tool-change logic to a thermal-controlled stationary window. This guide reflects a personal stable build.