If you have a Bambu Lab printer, you probably already know that feeling. You start printing, walk away, and then spend the next two hours wondering if everything was okay. Maybe you’re checking Bambu Handy on your phone or pulling up the printer’s web interface, but none of those options feel special. quickly. I wanted something I could look at, something that was always on, always showing me exactly what my P2S was working without reaching for my phone.
So I built one. using ESP32 Cheap Yellow ScreenWith Bambu Lab HACS integration for ESPHome and Home Assistant, I put together a custom printer monitor that sits on my desk. It costs between $10 and $20 in hardware, and it shows me print progress, temperature, fan speed, AMS status, and more on four scrollable pages. If you’ve never touched ESPHome’s LVGL support before, it can be a little tricky to set up, and the lack of PSRAM on this board means there are severe limitations on what you can do, but for a print status screen it’s more than enough.
Interested in more manufacturer-related content? We’ve introduced XDA Maker Weekly, a newsletter featuring unique and original content you won’t find anywhere else on XDA. subscribe by changing your newsletter preferences!
Inexpensive Yellow Screen is the perfect starting point
Easy to buy, cheap to buy
The ESP32 “Cheap Yellow Screen” actually refers to a number of different boards that are all very similar but not identical. We’re using an ESP32-2432S028R, and the name doesn’t exactly roll off the tongue. Moreover, given that there is different boards that are very similar, it’s easier to call it “Cheap Yellow Screen” or CYD. Either way, this is one of those boards that is well worth the price and will set you back somewhere around $10-$20.
There’s some pretty good hardware on this board too, as you get an ESP32 with a 2.8-inch 320×240 ILI9341 TFT display and a resistive XPT2046 touchscreen. It’s not a high-quality panel by any means, but it does its job of displaying text, icons, and status information.
When it comes to graphics-related projects, the big difference with the standard CYD is that it ships without PSRAM. This means that you are working with the ESP32’s internal 520 KB of SRAM, and once you start loading fonts, icons, and LVGL widgets, the memory is squeezed. You’re not going to pass your printer’s camera stream to this thing, and you’re not going to render complex animations. But the memory budget is enough for a status dashboard with text labels, progress bars and temperature indicators. I haven’t had any crashes or memory issues with my setup.
The board also has an SD card slot, an RGB LED, and an internal LDR, although I’m not using any of these for this project. Touch calibration can be a bit tricky when you first set it up, but you can calculate the correct calibration values for your particular unit and ensure it works reliably.
Home Assistant brings it all together
Everything goes into Home Assistant first
The ESP32 is just a screen. The important part is how the printer data gets there. Bamboo Laboratory AGAINST integration involves tone sensor data from your printer: print status, current stage, nozzle temperature, bed temperature, chamber temperature, fan speeds, AMS tray contents, sheet counts, remaining time, speed profile, etc. It connects to your printer either through the Bambu cloud or directly through your local network.
Once these sensors are available in Home Assistant, ESPHome can subscribe to them directly through the Home Assistant API. Each sensor update triggers a lambda that formats the value and pushes it to an LVGL tag on the screen. No voting, no lag, and it’s all about the event. When the printer head temperature changes, the display is updated within a second or two.
I’ve set up four pages on the screen, each accessible via the navigation bar below with Material Design Icons. The first page is a basic status view with a progress bar, print status, job name, remaining time, layer count and all three temperature indicators. The second page shows fan speeds and target temperatures. The third page shows the contents of the AMS container, the humidity and the active tray. Finally, the fourth page covers general printer information such as WiFi signal, total usage hours, door status, and HMS error status.
ESPHome’s LVGL support makes it look even better
It looks more professional
A few years ago, if you tried to create something like this with ESPHome, you’d be stuck with the basic display rendering engine, drawing rectangles and text at fixed coordinates with no real widget system. It worked, but it wasn’t pretty and it was a pain to maintain. ESPHome’s LVGL integration changed that completely.
LVGL or Lightweight and Versatile Graphics Library gives you proper widgets like arcs, progress bars, style containers and font rendering with anti-aliasing. My display uses cards with rounded corners, color-coded temperature sections, and a proper progress arc that fills as the print completes. It looks more like a real product interface than a hobbyist hack.
That said, there is quite a steep learning curve. ESPHome’s LVGL documentation still matches the feature set and has quirks. Getting the touchscreen calibration right in landscape mode took some trial and error, and understanding how LVGL’s coordinate system interacts with ESPHome’s transform settings isn’t immediately intuitive. I’ve been building devices with ESPHome and LVGL for about a year at this point and I’m still getting failed builds because of my LVGL widgets.
You can also get YAML long. My config file contains over 800 lines, most of which are just UI layout definitions. But once you understand the pattern, it’s really repeating the same widget structures with different sensor bindings.
I also added some little touches that make it feel nicer to use. For example, the backlight turns off after 60 seconds of inactivity and turns off completely after five minutes, and touching the screen immediately wakes it back up.
No need to write any of these from scratch
It’s on GitHub
That’s one of the reasons I wanted to share this project indeed If you already have a Home Assistant and a Bambu Lab printer, it’s not that hard to replicate. You need a Cheap Yellow Screen board, Bambu Lab HACS integration installed and configured, and ESPHome installed in Home Assistant. Full YAML configuration available my GitHubso you don’t need to define the LVGL layout, touch maps or touch calibration yourself. The 3D printed box I used It’s from MBruneau at MakerWorld.
You must update the entity identifiers in the YAML to match your printer. The sensor names are generated by the Bambu Lab integration based on your printer’s serial number, so they will be different than mine. But the structure is all there. Change the entity IDs, fire it up, and you’ll have a working display in minutes.
If you’re using a different Bambu Lab printer like the X1C, A1 or P1S, everything should still work as long as the HACS integration exposes the same sensors. The sensor names may be slightly different, but the approach is the same. If you want to customize the layout, adding or removing widgets is easy enough once you understand how the LVGL YAML is structured.
Of course, there are alternatives out there. CO-Clipper It is a popular software that supports Bambu Lab printers and runs natively on CYD without needing Home Assistant at all. It talks directly to the printer’s API. It’s a perfectly valid approach if you don’t want to run Home Assistant, but for me, having printer data flow through Home Assistant means I can use it in automations, notifications, and other dashboards. An ESP32 display is another way to do this appearance data already present in my smart home setup.
I’ve had it running for a few weeks now and use it often. Having a dedicated, always-on screen that tells me exactly where my print is without touching my phone or opening a browser tab is one of those things you don’t realize you want until you have it. It’s hard to argue with the price of the device. This is what I like most about the ESP32 ecosystem; you can almost always build what you need.



