-
Notifications
You must be signed in to change notification settings - Fork 3
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 | No | Yes (set/read, max 80 °C, controllable) |
| Air filtration / aux fans | No | Yes (present, not API-controllable) |
| TVOC sensor | No | Yes (read-only) |
| Door sensor | No (cosmetic doorStatus) |
Yes |
Camera: the MJPEG stream on port 8080 works on both models, but it cannot be started or stopped through the API —
streamCtrl_cmdis a no-op across the whole series.
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 |
| 1.9.4 | Creator 5 / Creator 5 Pro | Same as 1.9.2 |
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).
/gcodeListreturns file names only — no per-file metadata and no per-tool material data, unlike the AD5X. This is the single biggest surprise on this printer; see/gcodeList— File Names Only.
The Creator 5 answers /gcodeList with a bare array of names:
There is no gcodeListDetail. The AD5X — older hardware — returns one, carrying printingTime, totalFilamentWeight, useMatlStation, and the gcodeToolDatas[] array that describes each tool's material name and color. The Creator 5 returns none of it.
Live-confirmed on a Creator 5 Pro (firmware 1.9.x, 2026-08-05). It is the printer's behavior, not a parsing artifact: every file on the list comes back as a name and nothing else, including files sliced for the Creator 5 with embedded thumbnails. Thumbnails are unaffected — those come from /gcodeThumb, keyed by file name, and work normally.
Consequences for clients:
| Want | Creator 5 | AD5X |
|---|---|---|
| File names | ✅ /gcodeList
|
✅ /gcodeList
|
| Print time / filament weight per file | ❌ not reported | ✅ gcodeListDetail
|
| Per-tool material name + color per file | ❌ not reported | ✅ gcodeToolDatas[]
|
| Thumbnail per file | ✅ /gcodeThumb
|
✅ /gcodeThumb
|
| Material Station slot contents | ✅ /detail → matlStationInfo
|
✅ /detail → matlStationInfo
|
Material matching cannot be offered for a file already on a Creator 5. The printer knows what is loaded in each slot (/detail), but will not say what the file needs, and both halves are required to map tools to slots. Do not synthesize the missing half — deriving tools from the slot report or the file name produces a mapping the printer never described, which is then sent back to it as fact.
Matching is still possible at upload time, where the client parses the .3mf itself and supplies materialMappings at print-start (see Print Workflow). That is the only supported path on this model.
/control dispatches on the payload.cmd string. The Creator 5 firmware has a dispatch branch for 12 commands; the 7 AD5X 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 |
Accepted but does not actuate the fans on the Pro; the base Creator 5 has no filtration at all. Read TVOC only (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. No-op across the whole Creator 5 series — the stream is always served on :8080 and cannot be gated |
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, ipdMsConfig_cmd, errorCodeCtrl_cmd.
These are the commands the AD5X firmware dispatches and the Creator 5 does not.
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 } }.
{
"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
}
}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.
Only the Creator 5 Pro has a heated chamber (max 80 °C), and chamber heating is verified working and API-controllable on the Pro. The base Creator 5 has no chamber heater at all.
-
Creator 5 Pro: 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 temperature from/detailchamberTempand the current target fromchamberTargetTemp. -
Base Creator 5: no heater.
/detailchamberTempreports the sentinel-108(no sensor), and thechambercontrol field is silently ACKed with no effect.
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.
hasMatlStationis AD5X-only. The raw firmwarehasMatlStationfield is omitted on the Creator 5 Pro even when the 4-slot station is present. Derive material-station capability fromslotCnt/slotInfos, never fromhasMatlStation.Similarly, the
/productcapability flags (chamberTempCtrlState,lightCtrlState,internalFanCtrlState/externalFanCtrlState) are unreliable on the Creator 5 — decide features from the model/PID, not these flags.
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)
{ "code": 0, "message": "Success", "gcodeList": ["anchor knauf 3.3mf", "dark angels heraldry.3mf", "..."] }