Browse by type
Open-source drop-in replacement for Bambu Studio's proprietary bambu_networking
plugin.
libBambuSource.so loggingPre-built plugin binaries are available for all supported platforms.
Stable releases: GitHub Releases — tested and tagged versions recommended for general use.
Interim builds: GitHub Pages — automatically built from the latest commit on the main branch. These builds may include new features and bug fixes ahead of the next release, but they can also be unstable, contain incomplete functionality, or introduce breaking changes that will be revised before the next stable release. Use them if you want the cutting edge and are comfortable reporting issues.
Bambu Studio is an excellent
open-source slicer, but every piece of code that actually talks to a
Bambu Lab printer — LAN discovery, MQTT telemetry, file transfer,
camera, OTA, cloud — lives in a closed-source shared library
(libbambu_networking.so, shipped as a "Network Plugin" Studio
downloads on first start). There's nothing inherently wrong with a
cloud product; the problem is the implementation:
split_lock detector on every modern Intel CPU. Startup
stalls for 25-60 seconds while the kernel walks each trap; every
Device-tab click hits it again. The workaround
(sysctl kernel.split_lock_mitigate=0) degrades system-wide
performance and still misbehaves in LAN-only mode. Reported to Bambu
over a year ago and still open:
bambulab/BambuStudio#8605.api.bambulab.com / MakerWorld for things like bind status and
task metadata. That's extra latency on every click, a hard
dependency on the account infrastructure being up, and a
surveillance footprint a lot of users didn't opt in to.This project is a drop-in replacement for that library: same dlsym
ABI, same file name, same install location, but open source,
aligned-atomic-clean, cross-architecture-buildable, and strictly
LAN-first (the cloud is only ever contacted for sign-in, so that
Studio's preset sync works — the rest is straight to the printer).
Protocol knowledge comes from OpenBambuAPI and the reference implementations in bambulabs_api and ha_bambu_lab; everything else is reverse-engineered from MITM captures of the stock plugin.
Everything we have been able to establish about how the stock network plugin is integrated, validated, and invoked — including the full C ABI and related wire behaviour — is collected in NETWORK_PLUGIN.md.
Please note:
This project has been built entirely through the author's enthusiasm, with a tremendous personal investment of time, effort, and financial resources. If this work helps you, please consider supporting its further development in the Support the Developer and the Project section.
Compatibility with plugin ABI depends on the first three numbers in the version number, e.g. any Bambu Studio v02.03.04.xx is compatible with any plugin with a version v02.03.04.xx.
Orca Slicer lets you select plugin versions directly.
Recent (2024+) printer firmware cryptographically verifies every MQTT command it receives when the printer is paired with the Bambu cloud. The verification uses a per-installation RSA key that the stock plugin ships as obfuscated data and which we do not reproduce. Symptom on the printer screen when an unsigned command arrives:
MQTT Command verification failed
err_code: 84033543
To use this plugin, put the printer in Developer Mode:
In this mode the printer skips MQTT verification and accepts plain LAN commands. All LAN features of the plugin (discovery, telemetry, printing, filename browsing, file transfer, camera) work normally.
Non-developer / hybrid / cloud-only modes are only partially
implemented and remain severely limited: the plugin can still
sign you into the cloud, fetch presets, and show telemetry, but you
cannot reliably start a print — the printer expects MQTT commands to
carry the stock plugin's RSA signature, which we do not ship. Without
Developer Mode every print / project_file / similar command is
rejected (err_code: 84033543). Fully replicating that signing chain
is out of scope for an open-source project. MakerWorld task history is
likewise out of scope.
The author only owns a P2S, so the "Tested" column in the table below usually means it works 100% on P2S.
Community help is essential. If you use another printer model or CPU architecture, please try the plugin and open an issue: https://github.com/ClusterM/open-bamboo-networking/issues with what works, what fails, and your firmware / OS / Studio version — that is how we turn "not tested" into documented reality. Bug reports, regressions, and small compatibility notes all belong in Issues.
The tables below are a feature-level view. For an ABI-level view — every single function Studio resolves from the plugin, with per-symbol implementation status and notes — see STATUS.md.
Legend:
| Mark | Meaning |
|---|---|
| ✅ | Implemented and working on the listed models. "Tested" column says where the author has physically verified. |
| ⚠️ | Partial / soft-fails / needs a prerequisite (see Notes). |
| ❌ | Not implemented (see TL;DR: what is not implemented for scope rationale). |
The Impl column distinguishes:
bambu_networking.so does. Drop-in behaviour.| Feature | Status | Impl | Notes |
|---|---|---|---|
| SSDP discovery (LAN) | ✅ | Native | Multicast listener on 239.255.255.250:1990 + Studio on_server_connected_. |
| LAN MQTT telemetry | ✅ | Native | TLS to mqtts://<ip>:8883, user bblp, pass = access code. |
| Cloud MQTT telemetry | ✅ | Native | TLS to us.mqtt.bambulab.com:8883. Runs in parallel with LAN when signed in; not exercised during LAN-focused testing. |
| Cloud login / ticket flow | ✅ | Native | Browser → localhost callback → POST /user-service/user/ticket/<T>. Session persisted to obn.auth.json. |
| User presets sync / profile / avatar | ✅ | Native | List / create / update / delete works |
| MQTT command signing | ❌ | — | Stock plugin carries per-install RSA keys we don't reproduce. Workaround for the user: enable Developer Mode on the printer (all LAN commands bypass signing there). |
| Feature | Status | Impl | Notes |
|---|---|---|---|
| LAN print (FTPS + MQTT, Dev Mode) | ✅ (tested on P2S) | Native | FTPS upload and {"print":{"command":"project_file",...}} command on LAN MQTT. |
"Send to Printer" dialog (ft_*) |
✅ (tested on P2S) | Native | ft_* over TLS :6000 — upload cmd_type=5, ability 7, Printer Preview cmd_type=4 (mem:/26). See STATUS.md §6.14. |
| Cloud 3MF upload to S3 | ✅ | Native | 6-step upload sequence reversed from MITM of the stock plugin. |
create_task (MakerWorld entry) |
⚠️ | ❌ | Soft-fails — logs 4xx, keeps going with task_id="0". Printing works; MakerWorld history and timelapse-on-printer cloud flags don't. See TL;DR: what is not implemented (MakerWorld). |
"Print from Device" (start_sdcard_print) |
✅ (tested on P2S) | Alternative | Stock plugin: cloud REST endpoint we can't sign. Ours: publish project_file on LAN MQTT for a file already on the printer. |
| AMS telemetry / mapping | ✅ | Passthrough | Studio consumes push_status directly. |
$ claude mcp add open-bamboo-networking \
-- python -m otcore.mcp_server <graph>