ATILLLLITA/OpenBambuFarmAPI
GitHub: ATILLLLITA/OpenBambuFarmAPI
独立逆向整理的 Bambu Lab 局域网农场协议文档,记录 Farm Manager 与多台打印机之间的绑定、TLS、MQTT、REST 及打印任务全流程通信规范。
Stars: 2 | Forks: 0
# OpenBambuFarmAPI
关于*Bambu Farm Manager*(Bambu Lab 自主开发的、用于管理多台打印机的 Go 服务器)与 Bambu Lab 3D 打印机之间使用的**局域网“农场”协议**的独立且专注于互操作性的文档。
本项目是 [Doridian/OpenBambuAPI](https://github.com/Doridian/OpenBambuAPI) 的配套项目,
后者记录了云端/局域网环境下的*单台打印机* MQTT/HTTP/FTP 协议。该项目并**未**涵盖农场模式。而本项目专门记录了农场模式特定的层级:TCP-3002 绑定握手、农场 TLS 信任链、农场 MQTT broker、REST 控制 API、受安全保护的打印机所需的命令安全签名层、打印机端的任务队列,以及打印结束时的行为——所有这些都是通过观察真实服务器与真实打印机之间的通信还原得出的。
## 范围与方法
相关发现来自对官方 Farm Manager 2.x 在私有局域网内连接**一台**服务器与**一台**打印机(型号 C12,固件 `01.06.30.01`)会话的受控抓包,随后将解密后的 JSON 与独立编写的 OpenBambuAPI 以及服务器自身反编译的符号进行交叉核对。如果某项结论是推断得出而非直接观察到的,则会标记为 *(推断)*。
机密值(私钥、共享的 broker 密码、TLS 会话密钥、设备证书)在全文中均已**打码处理**,仅以 `«REDACTED»` 占位符显示。
## 架构
```
SSDP (discovery) TCP 3002 / TLS (bind: server dials printer)
┌────────────┐ 239.255.255.250:2021 ┌───────────────────┐ login/detect → login_report
│ Farm │ ◀──────────────────────▶│ Printer │
│ Manager │ │ 01P00C5725xxxxxx │ MQTT 1883 / TLS (printer dials server)
│ Server │ ◀──────────────────────▶│ (MQTT *client*) │ device//{request,report}
│ (Go, :8888 │ MQTT 1883 / TLS └───────────────────┘
│ REST + │ REST 8888 / TLS liveview 6000/TLS, FTPS 990 (printer-hosted)
│ :1883 │ ◀──────────────────────▶
│ broker) │
└────────────┘
Farm Manager Client (Electron) ──REST :8888/TLS──▶ Server
```
与云模式相比的关键反转:在**农场模式下,打印机是 MQTT _客户端_**,并会向*外*连接到服务器的 `1883` 端口上的 broker;打印机自带的 `8883` 端口 broker 是关闭的。绑定是唯一的例外——由**服务器**向**打印机**的 `3002` 端口发起连接,以向其下发农场端点信息。
## 端口
| 端口 | 主机 | 传输协议 | 用途 |
|------|------|-----------|---------|
| **3002** | 打印机 | TLS 1.2 (`0xc030`) | 绑定握手:服务器 → 打印机 `login`/`detect` |
| **1883** | 服务器 | TLS 1.2 (`0xc02f`),双向认证 | 农场 MQTT broker (`mochi-mqtt`);打印机向外连接 |
| **8888** | 服务器 | **HTTP + TLS 1.2** (`0xc02f`) | 农场 REST API(控制、文件、实时预览、登录)。双协议:客户端/实时预览使用纯 HTTP,打印机的任务下载使用 HTTPS —— 参见 [farm-rest.md](./farm-rest.md) |
| **6000** | 打印机 | TLS | 实时预览流(打印机端托管) |
| **990** | 打印机 | FTPS | 文件访问(打印机端托管) |
| **2021** | 多播 | UDP | SSDP 农场发现 |
| 8883 | 打印机 | — | 农场模式下**已关闭**(打印机是客户端,而不是 broker) |
## 连接模式
`lan` · `cloud` · `farm`。本文档涵盖 **`farm`**(即 `LAN_FARM`)。
## 文档
| 文件 | 主题 |
|------|-------|
| [farm-discovery.md](./farm-discovery.md) | SSDP 发现、NOTIFY 头部、URN |
| [farm-bind.md](./farm-bind.md) | TCP-3002 `detect`/`login` 握手、绑定与解绑 |
| [farm-tls.md](./farm-tls.md) | TLS 版本、加密套件、农场证书链、为何解密需要会话密钥 |
| [farm-mqtt.md](./farm-mqtt.md) | Broker 认证、`device//{request,report}`、`project_file`、`push_status`、打印生命周期、Collected/Reprint/Cancel 触发器 |
| [farm-rest.md](./farm-rest.md) | 客户端和打印机使用的 `:8888` REST 接口 |
| [farm-tasks.md](./farm-tasks.md) | 打印机任务卡片、`sub_start`、单份打印子任务、ID 关系以及启动顺序 |
| [farm-command-security.md](./farm-command-security.md) | MQTT-Sec:**受安全保护的**打印机所需的逐命令签名层 |
## 许可证
文档版权归 2026 OpenBambuFarmAPI 贡献者所有,采用
**GNU 自由文档许可证 1.3 版**([LICENSE](./LICENSE))授权,**无固定章节、无封面前言文字、无封底文字** —— 与 OpenBambuAPI 保持一致,以便资料能够在两个项目之间自由流通。
标签:3D打印, API文档, 互操作性, 内核驱动, 日志审计, 物联网, 网络协议