github Keralots/BambuHelper v3.4

3 hours ago

BambuHelper v3.4 - Release Notes

Firmware Builds

Build Target Board / Hardware Display OTA Update File Full Flash File
esp32s3 ESP32-S3 Super Mini ST7789 240x240 BambuHelper-esp32s3-v3.4-ota.bin BambuHelper-esp32s3-v3.4-Full.bin
esp32s3_zero Waveshare ESP32-S3-Zero external ST7789 240x240 BambuHelper-esp32s3_zero-v3.4-ota.bin BambuHelper-esp32s3_zero-v3.4-Full.bin
esp32s3_zero_320 Waveshare ESP32-S3-Zero external ST7789 240x320 BambuHelper-esp32s3_zero_320-v3.4-ota.bin BambuHelper-esp32s3_zero_320-v3.4-Full.bin
cyd ESP32-2432S028 (CYD / Cheap Yellow Display) ILI9341 240x320 BambuHelper-cyd-v3.4-ota.bin BambuHelper-cyd-v3.4-Full.bin
ws_lcd_154 Waveshare ESP32-S3-Touch-LCD-1.54 ST7789 240x240 BambuHelper-ws_lcd_154-v3.4-ota.bin BambuHelper-ws_lcd_154-v3.4-Full.bin
ws_lcd_200 Waveshare ESP32-S3-Touch-LCD-2 ST7789 240x320 BambuHelper-ws_lcd_200-v3.4-ota.bin BambuHelper-ws_lcd_200-v3.4-Full.bin
ws_lcd_280 Waveshare ESP32-S3-Touch-LCD-2.8 ST7789 240x320 BambuHelper-ws_lcd_280-v3.4-ota.bin BambuHelper-ws_lcd_280-v3.4-Full.bin
jc3248w535 Guition JC3248W535 (ESP32-S3-N16R8, 16MB flash / 8MB PSRAM) AXS15231B QSPI 320x480 BambuHelper-jc3248w535-v3.4-ota.bin BambuHelper-jc3248w535-v3.4-Full.bin
esp32c3 ESP32-C3 Super Mini ST7789 240x240 BambuHelper-esp32c3-v3.4-ota.bin BambuHelper-esp32c3-v3.4-Full.bin

OTA is for updating an already working device from the BambuHelper web UI.

Full is for first-time flashing, recovery, or ESP Web Flasher use.

First-time flashing? Easiest path is the hosted web flasher at keralots.github.io/BambuHelper - pick your board in the dropdown, click Install, and the browser handles bootloader + partitions + firmware in one go (no downloads, no flash offsets). The -Full.bin files below are only needed if you prefer the generic ESP Web Flasher or are flashing one of the community / beta boards that the hosted flasher doesn't list yet.

Changes

New Features

  • Redesigned web configuration UI with sidebar navigation and light/dark themes - the single-page accordion is replaced by a persistent sidebar that switches between focused sections (Printer, Display, Hardware, WiFi & System, Power, Diagnostics, Advanced). Adds a copper accent, light/dark theme toggle persisted in the browser (with first-paint flash fixed and an OS preference fallback), a mobile drawer under 820px, and a Detected Hardware card backed by an extended /status JSON (name, free heap, uptime, RSSI, IP, MAC, flash and PSRAM size). The Display section leads with the most-touched settings, Clock and Gauge Colors collapse by default so the page opens short, and a clean /reboot endpoint restarts the device without wiping settings (Factory Reset still lives in the Danger Zone). The big web_server.cpp was split into web_pages.h + web_template.cpp so the markup is maintainable - every existing form field, endpoint, and chunked-streaming guarantee was preserved.
  • Configurable gauge grid modes: 8-slot landscape and 9-slot portrait, plus a new AMS Bars gauge - you can now pack more gauges onto the printing screen. The new AMS Bars gauge (GAUGE_AMS_BARS_1..4) renders rounded vertical tray bars (filament color, remaining-percentage fill, active-tray notch) with an "AMS N" caption, available on any board/layout. On 240x320 / 320x480 boards, an optional landscape 8-slot mode swaps the right AMS sidebar for a symmetric 2x4 gauge grid, and an optional portrait 9-slot mode replaces the bottom AMS strip with a 3x3 grid. Each visible slot maps to its own stored gauge type, the gauge-type dropdown is now grouped into categories, and the toggles live in a new Advanced section of the web UI. NVS migration is length-tolerant, so existing devices keep their current layout until a mode is enabled.
  • Optional printer name + LAN IP footer on the idle / clock screen (#102) - units running side by side can be told apart at a glance. Off by default; the toggle lives in the web UI Advanced tab. The IP is parsed from the printer's pushall payload, so it resolves even for cloud-connected printers. The footer is bottom-anchored so it never overlaps the clock.
  • JC3248W535 landscape mode (480x320) - rotations 1 and 3 are enabled on the AXS15231B sprite path with a dedicated 480x320 layout mirroring the CYD / ws_lcd_200 pattern: a 360px gauge area on the left and a 120px AMS sidebar on the right. Gauges, ETA, bottom bar, idle screen, AP mode, simple clock and Pong clock all have proper landscape positions.
  • Browser-based serial monitor in the hosted web flasher - a new "View serial logs" panel on the GitHub Pages flasher streams the device's USB serial output (115200 baud) directly in the browser via Web Serial, so contributors can capture crash dumps, boot ROM messages, and WiFi/TLS logs for bug reports without installing PlatformIO or Arduino IDE. Includes connect/disconnect with port chooser, a 200KB rolling buffer with pause-on-scroll autoscroll, and Export to a timestamped .txt file.
  • Independent top progress-bar color - the LED-style top progress bar can now be themed separately from the Progress gauge arc, with its own web color picker. Reset restores the default; Random gives the bar a distinct hue kept clear of the Progress gauge.
  • Manual Tasmota plug on/off controls in the web config - each configured Tasmota plug now exposes On / Off buttons in the BambuHelper web UI for quick manual override without leaving the configuration page.
  • Promoted Waveshare ESP32-S3-Touch-LCD-2.8 (ws_lcd_280) to the official release line-up - the 2.8 inch 240x320 ST7789 board is now built by the release pipeline, merged into a single Full image, and listed in the hosted web flasher dropdown. Original port and hardware testing by Francisco São Marcos (@FranciscoSaoMarcos).

Improvements

  • Tasmota auto-off now respects the printer door (#94) - if the door is opened while the auto-off countdown is pending (including during the post-print FINISH wait), the scheduled power cut is cancelled so the printer can never accidentally lose power with the chamber open.
  • Cleaner single-AMS view - a lone AMS unit no longer shows its "AMS A" caption; in portrait the tray bars grow into the reclaimed space so spool levels read larger. Covers printing, idle and finished across the 240x240, 240x320 and 320x480 layouts. Multi-AMS setups are unchanged.
  • Reworked Gauge Colors web UI - theme presets (Warm / Ocean / ...) and the Apply Display Settings POST now cover all ten gauges including Exhaust Fan and Aux Fan Right (previously only eight were touched, leaving those two stuck on old colours). The page now uses a single source of truth, adds bulk pickers for All Arcs / All Labels / All Values, a Reset to Defaults that round-trips the exact firmware colors, and a Random button that builds cohesive HSL-rotated palettes.
  • Display settings apply instantly - "Smaller gauge labels", "Animated progress bar" and "Show remaining time" now repaint immediately when toggled instead of waiting for the Apply Display Settings button.

Bug Fixes

  • Off-screen print completion is now announced - with two printers in Smart rotation mode, if one finished while the other kept printing, the buzzer/LED/screen alert was never fired because rotation stayed locked on the still-printing slot. The finish is now signalled per printer the moment it completes, the display snaps to the finished printer, and holds for one rotation interval before Smart rotation resumes.
  • Dynamic Chamber / Exhaust fan label on airduct printers (#93) - on H2C / X2D the legacy field that drives the "Chamber Fan" gauge actually carries the exhaust fan value, so the gauge was mislabeled. It now reads "Exhaust" when the printer reports an airduct fan, while X1C / P / A keep the "Chamber" label matching Bambu's own UI. The gauge label also refreshes correctly on the first pushall instead of sticking on the initial guess.
  • Removed the progress-bar center glow seam - the 1px highlight drawn through the middle of the filled progress bar showed up as a hard near-white line on warm/light fill colors (most visible on the high-DPI JC3248W535) and flickered during the shimmer sweep. It's been dropped from both the base draw and the shimmer restore; the leading-edge tip cap is unchanged.
  • Smoother Pong clock (#100) - the JC3248W535 now flushes the full-frame sprite without redundant per-frame byte-swapping, removing the sluggishness. Paddle movement is clamped and tracks the ball center so it no longer jitters when catching the ball, and brick removal clears the surrounding gap so no leftover edge pixels remain.
  • Settings backup exports no longer overwrite each other (#99) - Export now downloads bambuhelper_settings_YYYYMMDD_HHMMSS.json with a timestamp, so consecutive backups never clobber a previous file.
  • Low-RAM dual-printer toggle takes effect without a page reload - on BOARD_LOW_RAM boards (CYD / C3), enabling the 2-printer toggle now reveals the Printer 2 tab and its status dot immediately, instead of doing nothing until the page was manually refreshed.
  • Serial monitor disconnect no longer hangs the flasher page - clicking Disconnect in the new browser serial monitor could livelock the read loop and freeze the page; the reconnect wrap was removed and a 1s watchdog added so disconnect is always clean.
  • Fixed CST328 touch on Waveshare 2.8 inch (ws_lcd_280) (#92) - three issues were preventing touch from ever responding:
    1. Fresh devices booted with touch disabled because the default settings did not list CST328 as touchscreen-capable, so the controller was never initialised.
    2. The touch-report register was being read at the wrong address (the high/low pointer bytes were swapped).
    3. The state byte packs the finger ID in the high nibble, so the old "non-zero" test could fire on a lifted finger; the correct check looks at the low nibble only.
      CST328 SDA/SCL/IRQ/RST pins are now also on the conflict deny-list so a user-assigned button or buzzer pin cannot steal the touch bus. Units already saved with touch disabled need either a full erase or to switch back to "Touchscreen" in the web UI once.
  • Fixed JC3248W535 landscape header overlapping the gauges - in landscape the printer-name banner was rendered with portrait constants and ate into the upper arc of the row-1 gauges. The header now uses a compact band sized to stop exactly 1px above the gauge top edge.
  • Fixed JC3248W535 startup IP screen not appearing - the "Show IP on startup" splash and the blocking WiFi-connect loop both bypass the main loop() tick, so on the PSRAM-sprite display nothing was ever pushed to the AXS15231B panel. Those blocking loops now flush the frame themselves (no-op on every other board).

Don't miss a new BambuHelper release

NewReleases is sending notifications on new releases.