MCPcopy Create free account
hub / github.com/ClusterM/open-bamboo-networking

github.com/ClusterM/open-bamboo-networking @v1.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.1.0 ↗ · + Follow
1,522 symbols 4,005 edges 138 files 182 documented · 12% updated 4d agov1.1.0 · 2026-06-27★ 43113 open issues

Browse by type

Functions 1,223 Types & classes 299
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Open Bamboo Networking

Open-source drop-in replacement for Bambu Studio's proprietary bambu_networking plugin.

Table of contents

Downloads

Pre-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.

Why this project exists

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:

  • The stock plugin ships an unaligned atomic that triggers the kernel's 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.
  • No ARM or non-x86_64 build. The plugin is only published as Linux x86_64 (plus Windows and macOS). You can't use Studio or any third-party tool that reuses the plugin on a Raspberry Pi, an Ampere workstation, or any other aarch64 / riscv host, even though the rest of Studio builds cleanly.
  • Cloud chatter on every action, even in LAN-only mode. Even when the printer is sitting on the same subnet as Studio in Developer Mode, the stock plugin keeps reaching out to 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.

Supported platforms

  • Linux x86_64 (primary target).
  • Linux aarch64 (primary target).
  • Windows x64 (experimental).
  • macOS (very experimental, works partially, not documented yet).

Supported Bambu Studio versions (ABI versions)

  • Bambu Studio 02.03.00.xx
  • Bambu Studio 02.03.01.xx
  • Bambu Studio 02.04.00.xx
  • Bambu Studio 02.05.00.xx
  • Bambu Studio 02.05.01.xx
  • Bambu Studio 02.05.02.xx
  • Bambu Studio 02.05.03.xx
  • Bambu Studio 02.06.00.xx
  • Bambu Studio 02.06.01.xx
  • Bambu Studio 02.07.00.xx
  • Bambu Studio 02.07.01.xx
  • Bambu Studio 02.08.00.xx

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.

Developer Mode requirement

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:

  1. On the printer screen, enable LAN-only mode and Developer mode. Bambu places these toggles in different submenus depending on the model and firmware — look for options named along the lines of "LAN Only", "LAN Only liveview", and "Developer mode". Examples:
  2. P2S: Nut icon -> Settings -> LAN Only Mode
  3. P1S: Nut icon -> WLAN
  4. In Bambu Studio: Device -> Connect via LAN with access code.

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.

What works and what's not

TL;DR: what is not implemented

  • Printing in non-developer mode
  • MakerWorld integration
  • Internal storage file browser/operations

More details

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:

  • Native — the plugin speaks the same wire protocol the stock bambu_networking.so does. Drop-in behaviour.
  • Alternative — the plugin reaches the same user-visible outcome over a different transport (e.g. LAN MQTT instead of cloud REST).
  • Passthrough — the plugin just forwards MQTT / REST payloads; Studio does the work.

Basics (model-independent)

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).

Printing

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.

Core symbols most depended-on inside this repo

Shape

Function 776
Method 447
Class 221
Enum 78

Languages

C++83%
Python11%
TypeScript5%
C1%

Modules by API surface

stubs/dshow_filter.cpp106 symbols
stubs/BambuSource.cpp66 symbols
src/agent.cpp63 symbols
tools/bambu6000_ftp_proxy.py55 symbols
tools/bambu6000_client.py50 symbols
tools/bambu_ftp_proxy.py47 symbols
tools/frida_ft_upload.js45 symbols
src/tunnel_local.cpp45 symbols
src/abi_ft.cpp41 symbols
src/tunnel_upload.cpp40 symbols
stubs/rtsp_client.cpp37 symbols
src/ftps.cpp32 symbols

For agents

$ claude mcp add open-bamboo-networking \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page