对已验证的纯 `.gcode` 文件进行试运行、上传,并通过 Bambu LAN FTPS/MQTT 交接谨慎启动本地 Bambu Lab 打印任务。
Bambu Labs
来源:维护于 earthtojake/text-to-cad。
使用本地安装的技能文件作为运行时真实来源;
仓库链接仅用于来源追溯和发布审查。
此技能用于在已有已验证的纯 .gcode 文件后,进行本地网络 Bambu Lab 打印交接。此技能不进行模型切片。
安全规则
- 默认使用试运行计划。真实的打印机通信需要
--execute。 - 没有
--execute --confirm-start-print绝不启动打印。 - 暂停和取消控制是实时的打印机请求;默认使用试运行计划。
取消打印需要--execute --confirm-cancel-print。 - 将用户明确要求打印或启动特定作业视为实时启动授权;不要仅为了物理检查而暂停等待二次确认。仍需验证 G 代码、检查试运行负载、读取打印机状态、优先仅上传再上传启动、说明物理检查事项,并在验证/状态/意图不安全或模糊时停止。
- 默认不询问打印机序列号;通过
serial从打印机 TLS 证书获取,或让send缓存它。 - 优先使用工作区根目录下的
bambu-printers.json,而不是在命令中重复访问码。该文件是本地配置,应被 Git 忽略。 - 在实时启动前,说明物理检查事项:清理打印平台、正确的平台/耗材/喷嘴、安全的环境以及操作员在场。
- 发布 MQTT 仅是启动请求。通过打印机状态/用户界面和物理观察确认接受。
CAD 查看器交接
在完成 Bambu 工作(创建或修改本地支持的打印工件,如 .gcode 或 .3mf)后,如果安装了 $cad-viewer 技能,则必须始终将明确的文件路径交给 $cad-viewer。$cad-viewer 必须启动 CAD 查看器(如果尚未运行),并返回相关创建或更新文件的链接;如果 $cad-viewer 不可用或启动失败,则报告该情况,而不是静默省略交接。
工作流程
- 使用
$gcode生成并验证纯 G 代码。
如果未安装切片器,请安装 OrcaSlicer 并重试;不要将缺少切片器视为阻塞。在 macOS 上,优先使用brew install --cask orcaslicer。 - 配置打印机。用户可以在对话中提供 IP/访问码并让代理写入 JSON,或直接编辑
bambu-printers.json。
对于新打印机设置或入网请求,请先阅读
references/new-printer-onboarding.md。引导用户完成特定型号的触摸屏步骤以找到 IP 和 LAN 访问码,并在运行本地启动工作流程前明确启用 仅 LAN 模式 和 开发者模式。
python scripts/bambu_lan_print.py config set \
--printer a1-mini \
--host 192.168.1.34 \
--access-code 12345678 \
--model a1-mini \
--fetch-serial
手动 JSON 格式:
{
"printers": {
"a1-mini": {
"host": "192.168.1.34",
"access_code": "12345678",
"model": "a1-mini"
}
}
}
在 A1/A1 Mini 上,在打印机触摸屏的网络/LAN 设置中找到 IP 和 LAN 访问码。启用仅 LAN 模式和开发者模式,然后重新通电后再重试本地启动命令。
- 在实时工作前读取状态:
python scripts/bambu_lan_print.py status \
--printer a1-mini \
--push-all \
--wait-seconds 10
- 试运行确切的交接,检查 JSON 负载,然后仅运行上传。仅在上传成功后运行上传启动。如果用户明确要求打印或启动作业,则在验证、状态和上传检查通过后,继续执行
upload-start --execute --confirm-start-print。如果用户仅要求准备、切片、上传或审查,则在启动请求前停止。
交接模式
--handoff template-project 是本仓库 LAN 调试中验证过的 A1 Mini 路径。它从已验证的纯 .gcode 开始,复制一个已知良好的同打印机 .gcode.3mf 模板,替换 Metadata/plate_N.gcode,写入 plate MD5,将项目上传到 FTPS 根目录,并发布 print.project_file,其中 url: ftp:///<name>.gcode.3mf。
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
在用户明确要求打印或启动后,或在意图不明确时经过物理确认后,执行审查:
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
--handoff plain 上传 cache/<name>.gcode 并发布 print.gcode_file。保留用于诊断或已知此方法有效的打印机/固件。在测试的 A1 Mini 上,直接纯 G 代码上传成功,但 gcode_file 失败或被忽略,因此不要将其用作 A1 Mini 的实时启动路径。
--handoff bambox-project 使用 bambox 打包纯 .gcode,将 .gcode.3mf 项目上传到 FTPS 根目录,并发布 print.project_file。当前仅对 p1s-0.4 与 PLA、ASA 或 PETG-CF 启用。已知但已禁用直到验证配置文件存在:a1-mini-0.4、a1-0.4、x1c-0.4 和 p1p-0.4。
常见调试命令
获取/缓存序列号:
python scripts/bambu_lan_print.py serial \
--printer a1-mini \
--json
在修复根本原因后清除过时的打印机错误:
python scripts/bambu_lan_print.py clear-error \
--printer a1-mini \
--execute
在调试打印机是否确认了 MQTT 发布以及之后立即报告的状态时,在 send 上使用 --mqtt-qos 1 --wait-after-publish 10。
打印控制
对于正在进行的打印,使用专用的打印控制命令,而不是临时的 MQTT 片段。这些命令仅发布控制请求;它们不上传文件或启动新作业。执行后读取状态以确认打印机状态已更改。
试运行暂停负载:
python scripts/bambu_lan_print.py pause \
--printer a1-mini
执行暂停并收集打印机报告:
python scripts/bambu_lan_print.py pause \
--printer a1-mini \
--execute \
--mqtt-qos 1 \
--wait-after-publish 10
试运行取消负载。发送到打印机的 Bambu LAN 命令是 stop:
python scripts/bambu_lan_print.py cancel \
--printer a1-mini
仅在用户明确要求取消/停止打印或意图模糊时经确认后执行取消:
python scripts/bambu_lan_print.py cancel \
--printer a1-mini \
--execute \
--confirm-cancel-print \
--mqtt-qos 1 \
--wait-after-publish 10
失败模式
gcode_file返回result: fail或使打印机保持IDLE:纯 G 代码上传成功,但固件拒绝或忽略了直接的本地启动。对于 A1 Mini,切换到template-project。- 项目上传到
cache/后启动失败,出现print_error: 83935248或0500-C010:清除错误,将项目交接上传到 FTPS 根目录,并使用ftp:///<name>.gcode.3mf。 file:///sdcard/cache/...或本地 HTTP URL 看似被接受但未启动任何内容:停止在此工作流程中使用这些 URL 格式。- Bambu Studio 或 OrcaSlicer 项目导出在 macOS 上崩溃:不要继续重试 GUI 支持的项目导出。使用 OrcaSlicer 导出纯
.gcode,然后使用此技能进行交接。 - 启用开发者模式后出现过时的
gcode_state: FAILED或 HMS:清除打印机错误并重新通电后再重试。 - FTPS 登录成功但上传失败,出现
553或缺少cache/:在 MQTT 启动前检查打印机存储/SD 卡状态。 - MQTT 状态正常但启动未执行:确认序列号、访问码、开发者模式/仅 LAN 模式状态以及确切的交接负载后再重试。
阅读 references/new-printer-onboarding.md 了解新打印机设置,
references/local-lan-protocol.md 了解协议细节,以及
references/real-printer-checklist.md 了解在新打印机上首次实时使用前的检查清单。






