-
Notifications
You must be signed in to change notification settings - Fork 1
Creator 5 Series
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.
| 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 (set/read, max 80 °C) | Yes (set/read, max 80 °C) |
| 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).
| 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).
The Creator 5 runs the same HTTP API 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 thec). Parse responses as JSON regardless of the header.
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 validatesserialNumber+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.
For the full request/response schema see the endpoint YAML. Available endpoints:
| # | 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 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.
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_cmdwire keys are{slot, mt, rgb}(the#is stripped fromrgb), the same as the AD5X. Do not sendmaterialName/materialColor(those are the internal C++ parameter names, not wire keys). Unlike the AD5X there is noms_cmd— the Creator 5 has no slot load/unload command.
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.
Send via /control with temperatureCtl_cmd. The body is { serialNumber, checkCode, payload: { cmd, args } }.
The Creator 5 drives its tool heads only through the nozzles array — one entry per head, in order (index 0 is the first head; the printer UI numbers the heads T1–T4). The rightNozzle / leftNozzle scalars are not used. The bed (platform) and chamber use their scalar fields.
The "off" value differs between the scalar fields and the per-tool nozzles array:
| Field | No change | Off | Set target |
|---|---|---|---|
platform, chamber
|
-200 |
-100 |
target °C |
each nozzles[] element |
-200 |
0 |
target °C |
To turn a tool head off, set its
nozzles[]element to0— not-100. The per-tool array only treats0as off; a-100there is ignored and the tool keeps heating. (-100turns off the scalarplatform/chamberfields only.)
nozzles must be an array of exactly 4 elements or the per-tool block is ignored. Always send 4 entries, using -200 for tools you are not changing — even on 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.
The Creator 5 and 5 Pro both have a physically heated chamber (max 80 °C), and chamber heating is verified working on both models.
-
Set / clear the target with the
chamberfield oftemperatureCtl_cmd: a target up to 80 °C to heat,-100to turn off, or-200to leave unchanged. -
Read the live chamber temperature from
/detailchamberTemp, and the current target fromchamberTargetTemp.
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).
multipart/form-data, field name gcodeFile, streamed. Accepts .gcode and .3mf (a .3mf is unzipped on-device to its embedded .gcode).
Request headers:
serialNumber, checkCode, fileSize, printNow, levelingBeforePrint,
flowCalibration, timeLapseVideo, useMatlStation, gcodeToolCnt, Expect: 100-continue
-
Booleans are the strings
"true"/"false"(not"1"/"0"). -
useMatlStationflags the file as a material-station job (clients set ittrue);gcodeToolCntis the tool count (always ≥ 1). - There is no
firstLayerInspectionheader (the field doesn't exist on the C5) and nomaterialMappingsheader — 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"}).
{
"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.
{
"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.
POST /control with jobCtl_cmd and action = pause / continue / cancel.
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
/detailand no/controlcommand selects a tool.matlStationInfo.currentSlotis an unconfirmed candidate proxy — label any UI built on it as "derived," not authoritative.
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-apiFiveMClientauto-enableshttpOnlymode for Creator 5 PIDs;initControlskips 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.
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.
- Creator 5 Filament Palette — 24-color palette + 21-material list
- Printer PIDs — PID 40 / 41 model identification
- HTTP REST API — shared endpoint reference
- Capability Matrix — cross-model feature support
- AD5X — closest relative (material station, but TCP + load/unload)
{ "cmd": "temperatureCtl_cmd", "args": { "platform": 60, // heated bed "rightNozzle": -200, // legacy scalar — not used by the Creator 5 "leftNozzle": -200, // legacy scalar — not used by the Creator 5 "chamber": -200, // chamber heater (max 80 °C) "nozzles": [220, -200, -200, -200] // per-tool targets — the only path that drives the tools } }