Skip to content

Creator 5 Series

GhostTypes edited this page Jun 26, 2026 · 1 revision

Creator 5 Series (Creator 5 / Creator 5 Pro)

The Creator 5 and Creator 5 Pro are 4-head CoreXY tool-changers in the 5M/AD5X firmware family. Unlike every other modern FlashForge, the Creator 5 is HTTP-only: it runs the HTTP API on port 8898 (plus the camera MJPEG server on 8080 and UDP discovery) and exposes no legacy TCP command server on 8899. There is no raw G-code / M-code passthrough.

Overview

Feature Creator 5 Creator 5 Pro
HTTP API (8898) Yes Yes
TCP API (8899) No No
Discovery PID 40 (0x28) 41 (0x29)
Tool heads (extruders) 4 4
Material station (4-slot) Yes Yes
Built-in camera Yes Yes
Heated chamber Yes (control ⚠️ unverified) Yes (control ⚠️ unverified)
Air filtration / aux fans No Yes
Door sensor No (cosmetic doorStatus) Yes

Both models share productType 0x5A02; the PID is the only reliable family discriminator (see Printer PIDs). Build volume reported by /detail measure is 256×256×256 (the 310x260x270 value seen in the update-checker JSON is stale — trust the on-device value).

Firmware Coverage

Version Model Endpoint Reference
1.7.8 (base) Creator 5 endpoints_creator5_1.9.2.yaml
1.9.2 Creator 5 Pro endpoints_creator5_1.9.2.yaml

Architecture: MIPS32 LE (Ingenic), Klipper-based. Firmware is distributed via VoxelShare only (not sz3dp).

HTTP-Only Architecture

The Creator 5 runs the same OrcaServer (cpp-httplib) HTTP stack as the 5M/AD5X, but it is the only modern model with no TCP control channel:

  • Inbound listeners are limited to HTTP 8898, camera MJPEG 8080, and UDP discovery. All other sockets are outbound (MQTT/HTTPS cloud).
  • There is no port 8899, so any "TCP-first" connection flow fails. Clients must connect over HTTP only — see Connection Model.
  • Moonraker exists as a separate process but is disabled by default.

Content-Type quirk: the firmware returns the misspelled header appliation/json (missing the c). Parse responses as JSON regardless of the header.

Authentication & Discovery

Identical model to the rest of the 5M family (see Authentication and Discovery Protocol):

  • Every handler gates on LAN mode ({code:-2,"Lan mode error"} if disabled), then validates serialNumber + checkCode. Credentials are sent on every request — there is no session token.
  • UDP discovery uses the standard 276-byte FlashForge packet with the PID at offset 0x88, so the printer is discoverable without an IP scan.

HTTP Endpoints

For the full request/response schema see the endpoint YAML. Registration order (RE-confirmed):

# Endpoint Method Auth
1 /checkCode POST SN + checkCode
2 /detail POST SN + checkCode
3 /product POST SN + checkCode
4 /uploadGcode POST (multipart) SN + checkCode (headers)
5 /control POST SN + checkCode
6 /gcodeList POST SN + checkCode
7 /gcodeThumb POST SN + checkCode
8 /printGcode POST SN + checkCode
9 /getThum GET LAN-mode only
10 /notifyWanBind POST serialNumber only

Unmatched paths return "page not found" (no catch-all handler).

/control Command Set

/control dispatches on the payload.cmd string. The Creator 5 firmware has a dispatch branch for 12 commands; the 9 AD5X-style motion/material commands listed below are absent — and crucially, an absent command is silently ACKed with {code:0,"Success"}, so a success response is not proof a command did anything.

Accepted commands (12)

cmd Args Notes
temperatureCtl_cmd platform, rightNozzle, leftNozzle, chamber, nozzles[4] Per-tool temps — see Temperature Control
printerCtl_cmd zAxisCompensation (float), speed, chamberFan, coolingFan Partial update; sentinel -200
lightControl_cmd status: open/close Chamber LED
circulateCtl_cmd internal, external: open/close Filtration fans (Pro)
jobCtl_cmd action: pause/continue/cancel Print job control
stateCtrl_cmd action (e.g. setClearPlatform)
msConfig_cmd {slot, mt, rgb} Slot metadata only — see note
calibration_cmd leveling / vibration Cloud/app-originated
reName_cmd name Cloud/app-originated
streamCtrl_cmd camera open/close Cloud/app-originated
delayClose_cmd auto-shutdown + time Cloud/app-originated
userProfile_cmd account mgmt Not printer control

msConfig_cmd wire keys are {slot, mt, rgb} (the # is stripped from rgb), the same as the AD5X. Do not send materialName / materialColor (those are the internal C++ parameter names, not wire keys). Unlike the AD5X there is no ms_cmd — the Creator 5 has no slot load/unload command.

Absent commands (9) — silently no-op

moveCtrl_cmd, homingCtrl_cmd, extrudeCtrl_cmd, ms_cmd, ipdMs_cmd, clearFan_cmd, plateDetectControl_cmd, firstLayerDetectControl_cmd, errorCodeCtrl_cmd.

This means no axis home/jog/move, no manual extrude, no slot load/unload, and no error-clear command over the API. These are a permanent limitation short of rooting the printer and using Moonraker directly.

Temperature Control

Send via /control with temperatureCtl_cmd. The body is { serialNumber, checkCode, payload: { cmd, args } }.

{
  "cmd": "temperatureCtl_cmd",
  "args": {
    "platform":    60,                 // heated bed
    "rightNozzle": -200,               // legacy scalar — NOT read by C5 firmware
    "leftNozzle":  -200,               // legacy scalar — NOT read by C5 firmware
    "chamber":     -200,               // chamber heater (see caveat below)
    "nozzles":     [220, -200, -200, -200]  // PER-TOOL targets — the only path that drives C5 tools
  }
}

Per-tool temps use the nozzles array only. On the Creator 5 the firmware's temperature handler never reads rightNozzle / leftNozzle — those legacy scalars are ignored. Tool temperatures are driven exclusively through nozzles[], indexed T0–T3.

Sentinels (apply to every field, including each nozzles[] element)

Value Meaning
-200 No change (the parser pre-seeds all slots to -200)
-100 Off (firmware rewrites to 0)
any other int Target °C

Hard constraint

nozzles must be an array of exactly 4 elements (isArray && size() == 4) or the entire per-tool block is skipped. Always send 4 entries; use -200 for tools you are not changing — even for a bed- or chamber-only command.

Read back per-tool temperatures from /detail nozzleTemps[4] / nozzleTargetTemps[4] (current / target). The rightTemp / leftTemp scalars are legacy.

Chamber Heater ⚠️ Pending Hardware Verification

The Creator 5 and 5 Pro both have a physically heated chamber (Klipper [heater_generic chamber_heater], max_temp: 80, byte-identical on both models), and the full control path exists end-to-end:

  • temperatureCtl_cmd accepts a chamber arg, and /product reports chamberTempCtrlState: 1.
  • The TypeScript client exposes setChamberTemp / cancelChamberTemp and FlashForgeUI renders a chamber Set/Off cell (clamped to 80 °C).

However, two independent testers report that the chamber does not measurably heat in response to the command. Because /control silently ACKs no-op commands with {code:0}, a success response does not confirm the chamber heated.

  • chamberTemp (reading) — confirmed. The live value is real (24 °C in the reference capture).
  • Chamber heating (control) — unverified. Treat as experimental until a tester confirms physical heating.

Print Workflow

The Creator 5 splits the multi-tool workflow across upload and print-start differently from the AD5X: the upload flags the file as a material-station job, and the per-tool material mapping is supplied at print-start (not in the upload header).

1. Upload — POST /uploadGcode

multipart/form-data, field name gcodeFile, streamed. Accepts .gcode and .3mf (a .3mf is unzipped on-device to its embedded .gcode).

Headers sent by the client:

serialNumber, checkCode, fileSize, printNow, levelingBeforePrint,
flowCalibration, timeLapseVideo, useMatlStation, gcodeToolCnt, Expect: 100-continue
  • Booleans are the strings "true" / "false" (not "1" / "0").
  • useMatlStation flags the file as a material-station job (clients set it true); gcodeToolCnt is the tool count (always ≥ 1).
  • There is no firstLayerInspection header (the field doesn't exist on the C5) and no materialMappings header — mapping happens at print-start.

Files are saved to /usr/data/gcodes. Pre-flight gates: LAN mode ({code:-2}), a cache drop, then a busy check ({code:2,"Printer is busy"}).

2. Start print — POST /printGcode

{
  "serialNumber": "...",
  "checkCode": "...",
  "fileName": "model.gcode",     // required
  "levelingBeforePrint": true,   // required
  "flowCalibration": false,      // always sent, default false
  "timeLapseVideo": false,       // always sent, default false
  "materialMappings": [ /* present ONLY for a multi-tool print */ ]
}

/printGcode does not read useMatlStation, gcodeToolCnt, or firstLayerInspection — those belong to the upload request.

materialMappings[] element (5 fields — same shape as the AD5X)

{
  "toolId": 0,                    // gcode tool, 0-based (T0..T3)
  "slotId": 1,                    // physical material slot, 1-based (1..4)
  "materialName": "PLA",
  "toolMaterialColor": "#2E54DD", // #RRGGBB
  "slotMaterialColor": "#2E54DD"  // #RRGGBB
}

Maximum 4 mappings. For a single-tool print, omit materialMappings entirely.

Job control

POST /control with jobCtl_cmd and action = pause / continue / cancel.

/detail Schema Additions

The Creator 5 /detail is the AD5X schema plus these additions (full live example modeled in the endpoint YAML):

Field Description
nozzleTemps[4] / nozzleTargetTemps[4] Per-tool current / target temperatures (read these, not rightTemp/leftTemp)
lidar First-layer scanner capability flag
model Model name, e.g. "Creator 5 Pro"
nozzleModel, name, macAddr, location Identity fields
estimatedLeftWeight / estimatedRightWeight Filament weight estimates
zAxisCompensation Current Z-offset

matlStationInfo.slotInfos[] = { slotId (1-based), materialName, materialColor (#RRGGBB), hasFilament }; currentSlot / currentLoadSlot use 0 = idle (real slots are 1–4); slotCnt = 4.

Active toolhead has no confirmed HTTP signal. The firmware tracks the active extruder internally, but it is not exposed in /detail and no /control command selects a tool. matlStationInfo.currentSlot is an unconfirmed candidate proxy — label any UI built on it as "derived," not authoritative.

Connection Model

Because there is no TCP 8899, the Creator 5 breaks any TCP-first connection flow. Clients must use an HTTP-only path:

  • The @ghosttypes/ff-api FiveMClient auto-enables httpOnly mode for Creator 5 PIDs; initControl skips the TCP control channel.
  • FlashForgeUI routes Creator 5 PIDs through an HTTP-only short-circuit and never prompts for a LAN/TCP password.
  • HTTP-only models can never use legacy mode — any per-printer transport flag must be gated by an isHttpOnlyModel() check.

Filament Palette

The Creator 5 has its own 24-color palette and 21-material list, firmware-confirmed and different from the AD5X palette — do not reuse the AD5X swatch values. See Creator 5 Filament Palette for the full tables.

See Also

Clone this wiki locally