Round ESP32-S3 printer companion for Bambu Lab with a circular display, touch setup, hybrid cloud/local routing, and the current code paths for cover preview, camera snapshots, and battery-aware operation.
- MakerWorld model:
https://makerworld.com/de/models/2517189-printsphere-bambu-status-display-standalone-1-75
- ESP-IDF
v5.5.x - LVGL
v9.4.0 - Waveshare ESP32-S3 AMOLED 1.75
- AXP2101 PMU integration via
XPowersLib - no Home Assistant required
- official Waveshare BSP for display, touch, and LVGL
- NVS-based configuration storage
AP+STAWi-Fi manager- local setup portal on
esp_http_server - Web Config that stays open during initial provisioning and switches to PIN/session unlock on the home network afterwards
- Bambu Cloud login flow with email/password plus email-code or 2FA handling
- hybrid routing logic between Bambu Cloud and the local printer path
- cloud MQTT as the primary live cloud status path plus metadata / cover preview handling
- local MQTT status path with live reconnect logic from the web portal
- embedded Bambu CA bundle for local MQTT TLS verification
- merged status, metrics, temperatures, errors, and HMS data depending on model and source availability
- cloud cover image/title page in the UI where available
- local camera snapshot page with tap refresh and periodic refresh while open
- arc color tuning from Web Config with live preview behavior
- hardware display rotation with touch alignment and a Web Config restart action
- chamber light toggle path on supported models
- battery and USB status with power-aware behavior
- embedded on-device error text lookup database without a separate storage partition
- V2 protocol support for P2S and H2 series (
snow-based spool detection,vir_slotfilament info) - AMS page with individual tray pills and EXT spool indicator
- OTA firmware update support
release/initial/printsphere_full.bin is the merged initial-flash image for empty devices.
For OTA updates, use release/ota/printsphere_ota.bin.
Versioned builds are archived in the archive/ subfolder of each release directory.
web.esphome.io
https://web.esphome.io/
- connect USB
- choose the COM port
- do not use "Prepare for first use"
- install
printsphere_full.bindirectly
espboards.dev
https://www.espboards.dev/tools/program/
- write
printsphere_full.binto address0x0
esptool-js
https://espressif.github.io/esptool-js/
- write
printsphere_full.binto address0x0
The bootloader is already included in the merged image.
If you clone the repo and build it yourself:
idf.py -p PORT flashAlternatively, write the merged image directly with esptool:
esptool.exe --chip esp32s3 --port PORT write_flash 0x0 release/initial/printsphere_full.bin- Flash
printsphere_full.bin - On first boot, the device starts a setup AP:
- SSID:
PrintSphere-Setup - password:
printsphere
- SSID:
- Open
http://192.168.4.1and save your home Wi-Fi. - After the reboot, reopen Web Config on the device IP in your home network.
- During provisioning, Web Config stays open without a PIN until the selected source path is ready.
- Choose the connection mode you want to run:
Cloud onlyLocal onlyHybrid
- Complete only the source path that your chosen mode requires:
Cloud only: connect Bambu CloudLocal only: connect the local printer pathHybrid: connect either path first; the portal unlocks setup once one path is working, and you can add the other later
- Bambu Cloud login supports:
- email + password
- optional email code
- optional 2FA code
- The local printer path uses:
- printer IP or hostname
- printer serial number
- access code
- After provisioning is complete, Web Config on the home network uses the on-device PIN/session unlock flow.
- hold anywhere on the display for about one second to request a six-digit PIN
- PIN lifetime: about 2 minutes
- unlocked browser session: about 10 minutes
Cloud and local credentials can usually be applied live from Web Config without another reboot. Changing the connection mode itself or applying a new screen rotation still restarts the device.
Hybrid: Current default recommendation. PrintSphere tries to combine cloud and local data, picks the better active path at runtime, and still uses the local camera when available. Provisioning is considered complete once Wi-Fi is connected and either Cloud or Local is working.Cloud only: Cloud monitoring and cover preview only. Local MQTT and the local camera page are disabled. Provisioning is complete once Wi-Fi and Bambu Cloud are connected.Local only: Local MQTT monitoring and the local camera path without requiring Bambu Cloud. Provisioning is complete once Wi-Fi and the local printer path are connected. The cloud cover page is not used in this mode.
- Cloud can now also carry progress, remaining time, layers, and temperatures on many models.
- In
Hybrid, the current code prefers cloud status forP2Sand theH2family. - The current code has local status paths for:
A1,A1 Mini,P1P,P1S,X1,X1C,X1E P2Slocal status works via V2 protocol fields (snow,vir_slot); some V1 fields may be absent or stale.- The
H2family requires Developer Mode for local status. - Camera snapshots are only available on
A1,A1 Mini,P1P, andP1S. These models expose a local JPEG snapshot endpoint that the ESP32-S3 can handle. Newer models (P2S,H2,X1series) use RTSP video streams only — the ESP32-S3 hardware lacks the memory and processing power to decode these streams. This is a hardware limitation that cannot be worked around with software changes alone. - The code currently exposes chamber light control on supported
P1S,P2,H2, andX1models.
- Page 1: can show progress ring, lifecycle state, job name, temperatures, layers, remaining time, Wi-Fi, battery, and USB state
- Page 2: can show cloud cover preview and title
- Page 3: can show local camera snapshots when that path is working
- Long-press on the display: requests a Web Config PIN
- Tap on the camera page: requests a refresh of the current image
- Tap the center logo on page 1 on supported printers: requests a chamber light toggle
- Dynamic secondary text such as IP addresses, project titles, and portal hints uses a more complete font for better glyph coverage
Web Config currently exposes sections for:
Step 1 - Wi-FiConnection ModeStep 2 - Bambu CloudStep 3 - Local Printer PathScreen RotationArc Colors
During initial provisioning, Web Config stays open until the selected source mode has at least one working path. After that, the portal uses the on-device PIN/session unlock flow on the home network.
Arc colors are intended to preview live immediately and can be saved without restarting the device. Screen rotation uses the display controller's hardware rotation and applies on restart so touch stays aligned.
- Camera snapshots are limited to
A1,A1 Mini,P1P,P1Sdue to ESP32-S3 hardware constraints. Newer models only offer RTSP streams which the ESP32-S3 cannot decode. - cloud/local behavior on newer families still needs broader real-world validation
P2Slocal status uses V2 protocol; some legacy fields may behave differently than on older printersH2local status requires Developer Mode- local MQTT TLS now uses an embedded Bambu CA bundle
Local onlyworks, but the broadest hands-on validation so far is still inHybridandCloud only- most hands-on testing so far has been on
P1SandP1P

