Bambu Labs
Use this skill for local-network Bambu Lab print handoffs after a plain
file already exists and has been validated. This skill does not slice models.
Safety Rules
- Default to dry-run plans. Real printer traffic requires .
- Never start a print without
--execute --confirm-start-print
.
- Pause and cancel controls are live printer requests; default to dry-run plans.
Canceling a print requires
--execute --confirm-cancel-print
.
- Treat an explicit user request to print or start a specific job as live-start
authorization; do not pause for a second confirmation solely for physical
checks. Still validate the G-code, inspect the dry-run payload, read printer
status, prefer upload-only before upload-start, state the physical checks, and
stop if validation/status/intent is unsafe or ambiguous.
- Do not ask for the printer serial by default; fetch it from the printer TLS certificate with or let cache it.
- Prefer workspace-root over repeating access codes in commands. The file is local config and should be ignored by Git.
- Before a live start, state the physical checks: clear build plate, correct plate/filament/nozzle, safe surroundings, and operator nearby.
- Publishing MQTT is only a start request. Confirm acceptance with printer status/UI and physical observation.
CAD Viewer Handoff
After completing Bambu work that creates or modifies a local supported print artifact such as
or
, you must ALWAYS hand the explicit file path to
when that skill is installed.
must start CAD Viewer if it is not already running and return link(s) to the relevant created or updated file(s); if
is unavailable or startup fails, report that instead of silently omitting the handoff.
Workflow
- Generate and validate plain G-code with .
If no slicer is installed, install OrcaSlicer and retry; do not treat the missing slicer as a blocker. On macOS, prefer
brew install --cask orcaslicer
.
- Configure the printer. The user can either give the IP/access code in the thread and let the agent write JSON, or edit directly.
For a new printer setup or onboarding request, read
references/new-printer-onboarding.md
first. Walk the user through the
model-specific touchscreen steps to find the IP and LAN access code, and make
Enable LAN Only plus Enable Developer Mode explicit before running
local start workflows.
bash
python scripts/bambu_lan_print.py config set \
--printer a1-mini \
--host 192.168.1.34 \
--access-code 12345678 \
--model a1-mini \
--fetch-serial
Manual JSON shape:
json
{
"printers": {
"a1-mini": {
"host": "192.168.1.34",
"access_code": "12345678",
"model": "a1-mini"
}
}
}
On A1/A1 Mini, find the IP and LAN access code on the printer touchscreen under
network/LAN settings. Enable LAN Only and Developer Mode when offered, then
power-cycle before retrying local start commands.
- Read status before live work:
bash
python scripts/bambu_lan_print.py status \
--printer a1-mini \
--push-all \
--wait-seconds 10
- Dry-run the exact handoff, inspect the JSON payload, then run upload-only.
Only after upload succeeds should you run upload-start. If the user explicitly
asked to print or start the job, proceed to
upload-start --execute --confirm-start-print
after the validation, status, and upload checks pass. If
the user only asked to prepare, slice, upload, or review, stop before the start
request.
Handoff Modes
--handoff template-project
is the validated A1 Mini path from this repo's LAN
debugging. It starts from validated plain
, copies a known-good
same-printer
template, replaces
, writes
the plate MD5, uploads the project to the FTPS root, and publishes
with
url: ftp:///<name>.gcode.3mf
.
bash
python scripts/bambu_lan_print.py send \
--printer a1-mini \
--gcode /tmp/job.gcode \
--handoff template-project \
--template-project /path/to/same-printer-template.gcode.3mf \
--action upload-start
Execute after review when the user explicitly asked to print or start, or after
physical confirmation when intent is unclear:
bash
python scripts/bambu_lan_print.py send \
--printer a1-mini \
--gcode /tmp/job.gcode \
--handoff template-project \
--template-project /path/to/same-printer-template.gcode.3mf \
--action upload-start \
--execute \
--confirm-start-print
uploads
and publishes
. Keep it for diagnostics or printers/firmware where this is
known to work. On the tested A1 Mini, direct plain G-code was uploaded
successfully but
failed or was ignored, so do not use it as the
A1 Mini live-start path.
packages plain
with
, uploads the
project to FTPS root, and publishes
.
Currently enabled only for
with
,
, or
.
Known but disabled until validated profiles exist:
,
,
, and
.
Common Debugging Commands
Fetch/cache serial:
bash
python scripts/bambu_lan_print.py serial \
--printer a1-mini \
--json
Clear a stale printer error after fixing the underlying cause:
bash
python scripts/bambu_lan_print.py clear-error \
--printer a1-mini \
--execute
Use
--mqtt-qos 1 --wait-after-publish 10
on
when debugging whether the
printer acknowledged the MQTT publish and what status it reported immediately
afterward.
Print Controls
For a running print, use dedicated print-control commands rather than ad hoc
MQTT snippets. These commands publish only a control request; they do not upload
files or start a new job. Read status after execution to confirm the printer
state changed.
Dry-run pause payload:
bash
python scripts/bambu_lan_print.py pause \
--printer a1-mini
Execute pause and collect printer reports:
bash
python scripts/bambu_lan_print.py pause \
--printer a1-mini \
--execute \
--mqtt-qos 1 \
--wait-after-publish 10
Dry-run cancel payload. The Bambu LAN command sent to the printer is
:
bash
python scripts/bambu_lan_print.py cancel \
--printer a1-mini
Execute cancel only when the user explicitly asks to cancel/stop the print or
after confirmation when intent is ambiguous:
bash
python scripts/bambu_lan_print.py cancel \
--printer a1-mini \
--execute \
--confirm-cancel-print \
--mqtt-qos 1 \
--wait-after-publish 10
Failure Modes
- returns or leaves the printer : plain G-code upload worked, but the firmware rejected or ignored direct local start. For A1 Mini, switch to .
- Project uploaded under starts then fails with or : clear the error, upload project handoffs to FTPS root, and use .
- or local HTTP URLs appear accepted but nothing starts: stop using those URL forms for this workflow.
- Bambu Studio or OrcaSlicer project export crashes on macOS: do not keep retrying GUI-backed project export. Use OrcaSlicer for plain , then this skill for handoff.
- Stale or HMS after enabling Developer Mode: clear the printer error and power-cycle before retrying.
- FTPS login works but upload fails with or missing : check printer storage/SD card status before MQTT start.
- MQTT status works but start does not: confirm serial, access code, Developer Mode/LAN Only status, and the exact handoff payload before retrying.
Read
references/new-printer-onboarding.md
for new printer setup,
references/local-lan-protocol.md
for protocol details, and
references/real-printer-checklist.md
before first live use on a new printer.