Skip to content

Creality K1 Series

HelixScreen has a cross-compilation target for the Creality K1 series of high-speed CoreXY printers. The K1 series runs Klipper on an Ingenic MIPS processor. Moonraker is available via community firmware mods (Simple AF, Guilouz Helper Script).

All K1 models use the Ingenic X2000E MIPS32r2 dual-core processor running Creality OS (Buildroot-based).

ModelBuild VolumeDisplayNotable FeaturesStatus
K1220 x 220 x 250 mm4.3” 480x800StandardUntested
K1C220 x 220 x 250 mm4.3” 480x800Tri-metal “Unicorn” nozzleTested
K1 Max300 x 300 x 300 mm4.3” 480x800AI camera, LiDAR, ethernetTested
K1 SE220 x 220 x 250 mm4.3” 480x800Budget modelUntested

Hardware (Confirmed on K1C and K1 Max — 2026-03)

Section titled “Hardware (Confirmed on K1C and K1 Max — 2026-03)”
SpecValue
SoCIngenic X2000E, MIPS32r2 dual-core @ 1.2 GHz
Co-processorXBurst 0 @ 240 MHz (security/real-time)
RAM256 MB LPDDR2 (System-in-Package)
Storage8 GB eMMC
Display480x800 portrait, 32bpp ARGB8888, fbdev (/dev/fb0)
Stock UI/usr/bin/display-server (must be stopped to use framebuffer)
OSCreality OS (Buildroot 2020.02.1), Linux 5.4.x
glibc2.29 (important for ABI compatibility)
Python3.8.2
Init SystemSysV init (NOT systemd, NOT procd)
SSHroot / creality_2023 (enable via Settings menu)
Config path/usr/data/printer_data/config/
Klipper path/usr/share/klipper/ or /usr/data/klipper/
Logs path/usr/data/printer_data/logs/
Gcode path/usr/data/printer_data/gcodes/
MCUChipSerial PortPurpose
mcuGD32F303RET6/dev/ttyS7 @ 230400Main motion control, steppers, bed heater
nozzle_mcuGD32F303CBT6/dev/ttyS1 @ 230400Hotend, LED, accelerometer (input shaper)
leveling_mcuGD32E230F8P6/dev/ttyS9 @ 230400Pressure sensor (PRTouch v2)
FeatureK1CK1 Max
Build Volume220 x 220 x 250 mm300 x 300 x 300 mm
Rated Power350W1000W
AI CameraStandardIncluded
AI LiDARNoYes
EthernetNoYes
Chamber HeaterNoYes (heater_generic chamber_heater)
  • 256 MB RAM — Memory-constrained. Moonraker + Klipper + HelixScreen leaves ~80-100 MB free. Creality warns about excessive memory usage.
  • MIPS32r2 — Unusual architecture for 3D printers. Requires MIPS cross-compilation toolchain.
  • 480x800 display — Portrait framebuffer, same as K2 series. Requires software rotation to landscape (800x480). Uses the standard breakpoint.
  • No stock Moonraker — Must install community firmware (Simple AF or Guilouz) for Moonraker access.
  • K1C 2025 hardware revision — Some units removed the root access option from the touchscreen menu.

The K1 stock firmware does not include Moonraker. Users must install one of the following community mods:

Repository: pellcorp/creality

  • Includes Klipper, Moonraker, and GuppyScreen
  • Install location: /usr/data/pellcorp/
  • HelixScreen replaces GuppyScreen as the touch UI

Repository: Guilouz/Creality-K1-and-K1-Max

  • Menu-based installer for Moonraker, Fluidd/Mainsail, GuppyScreen
  • Install location: /usr/data/helper-script/
  • Modular: users choose which components to install

Repository: ballaswag/creality_k1_klipper_mod

  • Replaces entire Buildroot with modern version (2024.02)
  • Updates Python 3.8.2 → 3.11.8, uses mainline Klipper
  • Caveat: Breaks PRTouch — requires alternative probe

Available via the touchscreen:

  1. Settings → Root Account Information
  2. Accept disclaimer
  3. Wait 30 seconds, confirm

SSH credentials: root / creality_2023

The K1 target uses MIPS32r2 with fully static musl linking. There is also an advanced dynamic-linking variant.

Terminal window
# Static build — single self-contained binary (recommended)
make k1-docker
# Dynamic build — links against K1's glibc 2.29 (advanced)
make k1-dynamic-docker
Terminal window
make PLATFORM_TARGET=k1 -j # Static (musl)
make PLATFORM_TARGET=k1-dynamic -j # Dynamic (glibc)
Section titled “Static Build (PLATFORM_TARGET=k1) — Recommended”
SettingValue
ToolchainBootlin mips32el-musl-stable-2024.02-1
ArchitectureMIPS32r2 (little-endian, hard-float)
LinkingFully static (musl)
Optimization-Os with LTO (size-optimized)
Display backendfbdev (/dev/fb0)
SSLEnabled (static OpenSSL)
Platform defineHELIX_PLATFORM_MIPS
Outputbuild/mips/bin/helix-screen (~8-10 MB stripped)

Dynamic Build (PLATFORM_TARGET=k1-dynamic) — Advanced

Section titled “Dynamic Build (PLATFORM_TARGET=k1-dynamic) — Advanced”
SettingValue
ToolchainCustom crosstool-NG with NaN2008+FP64 ABI
LinkingDynamic (glibc 2.29, must match K1 firmware)
Critical flags-mnan=2008 -mfp64 (NaN2008 ABI compatibility)
Dynamic linker/lib/ld-linux-mipsn8.so.1
Outputbuild/k1-dynamic/bin/helix-screen (~3-5 MB stripped)

The static build is recommended for its simplicity — no ABI compatibility concerns.

The K1 target is included in the GitHub Actions release pipeline. Release artifacts are built automatically:

Terminal window
# Manual packaging
make package-k1
  • A Creality K1, K1C, K1 Max, or K1 SE printer
  • Root access enabled (see Root Access section above)
  • Moonraker installed via Simple AF, Guilouz, or Guppy Mod
  • SSH access: ssh root@<printer-ip> (password: creality_2023)
Terminal window
# SSH into the printer, then:
wget -O - https://dl.helixscreen.org/install.sh | sh

Or with a local package:

Terminal window
scp helixscreen-k1.zip install.sh root@<ip>:/usr/data/
ssh root@<ip>
sh /usr/data/install.sh --local /usr/data/helixscreen-k1.zip
Terminal window
# Full deploy (binary + assets + config + platform hooks + init script)
make deploy-k1 K1_HOST=192.168.x.x
# Deploy and run in foreground with debug logging
make deploy-k1-fg K1_HOST=192.168.x.x
# Deploy binary only (fast iteration during development)
make deploy-k1-bin K1_HOST=192.168.x.x
# SSH into the printer
make k1-ssh K1_HOST=192.168.x.x
# Full build + deploy + run cycle
make k1-test K1_HOST=192.168.x.x

Deploy directory: /usr/data/helixscreen (override with K1_DEPLOY_DIR).

Note: The K1 uses BusyBox, so deployment uses tar/ssh transfer instead of rsync.

  1. Stops any running HelixScreen processes
  2. Transfers binaries, assets, XML layouts, and config via tar/ssh
  3. Installs SysV init script at /etc/init.d/S99helixscreen for boot persistence
  4. Platform hooks stop the stock Creality UI (display-server, Monitor, etc.)
  5. Platform hooks disable /etc/init.d/S99start_app to prevent stock UI on reboot
  6. Platform hooks ensure SSH (dropbear) survives the stock UI shutdown
  7. Starts HelixScreen on the framebuffer
Terminal window
ssh root@<printer-ip>
killall helix-screen helix-splash helix-watchdog 2>/dev/null
chmod +x /etc/init.d/S99start_app # Re-enable stock UI
/etc/init.d/S99start_app start # Start stock UI now

Platform hooks are in config/platform/hooks-k1.sh. Key behaviors:

The stock K1 UI is managed by /etc/init.d/S99start_app, which launches display-server, Monitor, master-server, and other processes. The hooks:

  1. Stop S99start_app via its init script
  2. chmod a-x the init script to prevent reboot respawn (reversible)
  3. Kill all lingering stock processes

Critical: S99start_app also manages dropbear (SSH) on stock firmware. Disabling it would kill SSH on next reboot. The hooks detect this and:

  1. Check if dropbear is running after disabling S99start_app
  2. If not, start dropbear directly
  3. Create /etc/init.d/S50dropbear for future boot persistence

Sets HELIX_CACHE_DIR=/usr/data/helixscreen/cache since /usr/data/ is the writable partition.

HelixScreen renders directly to /dev/fb0. The framebuffer is 480x800 portrait (virtual size 480x1600 for double-buffering). Software rotation to landscape yields an effective resolution of 800x480.

HelixScreen uses evdev and auto-detects the capacitive touch controller. Running as root (default) avoids permission issues on /dev/input/event*.

HelixScreen auto-detects K1 printers using heuristics from config/printer_database.json:

HeuristicConfidenceDescription
Hostname contains k180Unique to K1 series
Hostname contains creality60Brand indicator
Chamber fan object75K1-exclusive feature
Chamber temp sensor70Enclosed printer signature
CoreXY kinematics40Common in several printers
Build volume ~220mm50K1/K1C standard
Build volume ~300mm70K1 Max
AI camera object60K1 Max distinctive

All K1 models use the creality_k1 print start profile:

{
"macro_name": "START_PRINT",
"pre_start_gcode": "PRINT_PREPARED"
}
# Motion
[printer] kinematics: corexy, max_velocity: 1000, max_accel: 20000
[stepper_x], [stepper_y], [stepper_z]
[tmc2209 stepper_x], [tmc2209 stepper_y], [tmc2209 stepper_z]
# Heating
[extruder], [heater_bed]
[heater_generic chamber_heater] # K1 Max only
# Temperature Sensors
[temperature_sensor mcu_temp], [temperature_sensor chamber_temp]
# Fans
[fan], [fan_generic fan0], [fan_generic fan1], [fan_generic fan2]
[heater_fan hotend_fan]
# Probing & Calibration
[prtouch_v2] # Pressure-based leveling
[bed_mesh]
[adxl345]
[input_shaper]

Moonraker port: 7125 (direct). No multi-extruder or toolchanger support — K1 series are single-extruder only.

K1, K1C, and K1 Max can run Creality’s official CFS upgrade. When installed, the upgrade firmware (≥ v2.3.5.33) publishes a box Klipper object and a non-prefixed BOX_* macro set — different from the K2 stock firmware’s CR_BOX_* primitives. HelixScreen detects the K1 dialect via PrinterDetector::is_creality_k1() at backend construction and emits the K1 macros (BOX_EXTRUDE_MATERIAL TNN=…, BOX_MATERIAL_FLUSH TNN=…, BOX_CUT_MATERIAL, BOX_RETRUDE_MATERIAL, BOX_NOZZLE_CLEAN, BOX_GO_TO_EXTRUDE_POS, BOX_MOVE_TO_SAFE_POS). See FILAMENT_MANAGEMENT.md § CFS for the full dialect table.

Community open-source K1 firmwares (Guilouz, Simple AF, Guppy Mod) do not bundle the CFS macros — the upgrade firmware ships separately from Creality. Without the upgrade installed, no box object is published and the CFS backend stays disabled.

  • 256 MB RAM — Most constrained platform. Moonraker + Klipper + HelixScreen is tight. Monitor memory usage carefully.
  • MIPS32r2 — Unusual ISA. Cross-compilation requires MIPS toolchain. No NEON SIMD (ARM-specific). MIPS SIMD (MSA) available but unused.
  • NaN2008 ABI — The K1’s glibc uses NaN2008 encoding. Dynamic builds must use -mnan=2008 -mfp64 or linking will fail at runtime.
  • 480x800 portrait — Same panel as K2 series. Requires software rotation to 800x480 landscape.
  • Moonraker required — Stock firmware has no Moonraker. Users must install community firmware first.
  • K1C 2025 revision — Some newer K1C units removed the root access option from the settings menu. Community workarounds exist but are not widely adopted.