BambuHelper v2.5 Release Notes
First time flashing a new device? Use the firmware file ending with -Full (e.g.
BambuHelper-esp32s3-v2.5-Full.bin). The regular (non-Full) firmware is for OTA updates on devices that already have BambuHelper installed.
Power Monitoring via Tasmota (BETA)
- Live watt display in the bottom status bar, alongside the layer counter
- Two display modes: alternate between layer count and watts every 4s, or always show watts
- Configurable poll interval - 10, 15, 20, or 30 seconds (Tasmota HTTP, no MQTT broker required)
- Print energy summary - total kWh shown on the "Print Complete" screen (e.g.
⚡ 0.234 kWh) - Graceful fallback when plug is offline; disabled by default, zero impact when not configured
- This feature is in beta - functionality may change in future releases
Screensaver brightness (NEW)
contributed by @theNailz in #16
- Separate brightness for clock/screensaver screen - auto-dim when idle without affecting printing brightness
- Respects night mode (lower value wins); included in settings export/import
ESP32-C3 Super Mini support (NEW)
contributed by @noliran in #13
- New build target for ESP32-C3 Super Mini with ST7789 1.69" 240x240 display (
pio run -e esp32c3) - Does not affect existing S3 or CYD builds
- Includes automatic patch for a TFT_eSPI SPI host bug on C3
Web UI improvements
contributed by @theNailz in #18, #19, #20
- XSS hardening - dynamic content is now HTML-escaped; status messages use
textContentwhere possible - Meaningful error messages - descriptive toasts ("Save failed", "Network error", etc.) replace generic "Error"
- Polling optimization - live stats and diagnostics timers stop when their sections are collapsed
Display settings redesign (NEW)
contributed by @theNailz in #24
- Logical sub-sections: Brightness, After Print Completes, Screen, Clock Settings, Gauge Colors
- Single "When print finishes" dropdown replaces the old timeout + checkbox combo - impossible to create broken combinations, fully backwards-compatible
Timezone and date format improvements (NEW)
contributed by @theNailz in #22
- Timezone dropdown in Windows-style format, sorted by UTC offset
- Timezone migrates safely across database reorders by matching POSIX TZ string
- Date format selection - 6 options (DD.MM.YYYY, MM/DD/YYYY, YYYY-MM-DD, etc.)
Brightness slider UX fix
contributed by @theNailz in #25
- Night mode and screensaver sliders no longer change live brightness while dragging
- All brightness sliders snap in increments of 5
Security hardening
contributed by @theNailz in #26
- Credentials cleared from RAM before factory reset; cloud token zeroed after MQTT connect
- TLS certificate verification enabled for cloud API calls (falls back to unverified if CA handshake fails)
A huge thank you to @theNailz for yet another round of quality contributions to this release. From security hardening to UX improvements to real bug fixes - the kind of thoughtful, well-tested work that makes this project better for everyone. It means a lot.
Stability and safety fixes
contributed by @theNailz in #32, #33
- HTTP client leak fixed in cloud API calls
- Unsigned underflow in AMS search loop guarded against out-of-bounds read
- Array bounds enforced in Pong screensaver with
static_assert - Null-pointer crash in gauge cache fixed (FIFO eviction instead of
nullptr) - DNS server leak fixed when transitioning from AP to STA mode
millis() == 0sentinel replaced with explicit flags (would misfire after ~49 days)- Bounds check added to
displayedPrinter()and stale fetch guard for printer tab switching
WiFi RSSI in /debug endpoint
contributed by @theNailz in #31
- WiFi signal strength (dBm) now included in
GET /debugJSON response
Fix: clock screen not appearing when finish timeout is 0
contributed by @theNailz in #23
finishDisplayMins == 0with clock enabled now correctly transitions to clock instead of staying on the finish screen
Fix: display going blank when applying settings in clock/screensaver mode
contributed by @theNailz in #29
- Applying display settings while clock/screensaver was active caused a black screen for up to 60s
- Fixed: timezone only reconfigured when changed; RTC fallback added; display throttle reset on apply
Fix: H2 series printers not working in LAN mode
- H2S/H2C/H2D in LAN mode showed "connected" but never received data
- MQTT buffer increased from 16KB to 40KB to handle H2's larger payloads (~33KB)
- H2 LAN mode requires both LAN-only mode and Developer Mode on the printer
Fix: false "Ready" screen during cloud printing
- Cloud printers could briefly show "Ready" mid-print when the broker stopped pushing updates for >5 minutes
- Recovery pushall is now sent when the stale timer fires during an active print; all MQTT messages (not just
printobjects) now reset the stale timer