Round ESP32-S3 printer companion for Bambu Lab with a circular display, hybrid cloud/local routing, and the current code paths for cover preview, camera snapshots, and battery-aware operation.
This fork retargets the project from the original Waveshare ESP32-S3 AMOLED 1.75 hardware to the Waveshare ESP32-S3 LCD 1.28. The goal is to keep the original PrintSphere behavior, setup flow, and UI structure as intact as possible while limiting changes to the board support layer and the scaling needed for the smaller 240x240 display.
- MakerWorld model:
https://makerworld.com/de/models/2517189-printsphere-bambu-status-display-standalone-1-75 - End-user setup guide:
MAKERWORLD.md
- ESP-IDF
v5.5.x - LVGL
v9.4.0 - original hardware target: Waveshare ESP32-S3 AMOLED 1.75
- this fork target: Waveshare ESP32-S3 LCD 1.28
- battery monitoring through the 1.28 board's ADC path
- no Home Assistant required
- custom Waveshare 1.28 display BSP with LVGL integration
- 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
- Flash
release/firmware.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 is not supported.- The
H2family requires Developer Mode for local status. - The local JPEG camera path is currently written for:
A1,A1 Mini,P1P,P1S - RTSP-style camera handling is recognized for:
P2S,H2C,H2D,H2D Pro,H2S,X1,X1C,X1Ebut that path will not be implemented as the hardware is not capable of displaying video live feeds with more than about 0.5 fps. - 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.
- local camera and MJPEG/RTSP work are not fully finished yet
- cloud/local behavior on newer families still needs broader real-world validation
P2Slocal status is not supported in the current codeH2local 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
release/firmware.bin is the merged initial-flash image for empty devices.
The newest merged image stays in /release/; older versioned builds can be moved to /release/archive/.
web.esphome.io
https://web.esphome.io/
- connect USB
- choose the COM port
- do not use "Prepare for first use"
- install
firmware.bindirectly
espboards.dev
https://www.espboards.dev/tools/program/
- write
firmware.binto address0x0
esptool-js
https://espressif.github.io/esptool-js/
- write
firmware.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/firmware.bin
