I am trying to run a fully-loaded ESPHome node on an M5Stack Core Basic (ESP32-D0WDQ6-V3). My goal is to use it as a Bluetooth Proxy while also using the internal screen to display sensor data.
The device boots, connects to WiFi, and the Bluetooth Proxy works perfectly. However, the display refuses to initialize. The backlight stays on, but the screen remains white (no pixels).
The logs show a clear memory allocation failure:
[E][display:017]: Could not allocate buffer for display! [E][component:119]: Component display was marked as failed.I suspect I am hitting a hard hardware ceiling because this board lacks PSRAM (it only has ~320KB internal RAM). It seems like the combination of these three components exceeds the available memory:
WiFi/API: Baseline load. Bluetooth Proxy: Reserves a massive contiguous block. Display (320x240): The ili9xxx driver seems to need ~153KB for the frame buffer. Since the display initializes last, it finds zero contiguous RAM left and fails.To test this theory, I crippled the display configuration to use less memory. By setting dimensions: 320x60, I forced the buffer size down to ~38KB.
This immediately fixed the crash. The device booted, the text appeared (in the top 60px strip), and Bluetooth continued working.
Is this a known hardware limitation of the M5Stack Basic? Has anyone managed to run a Bluetooth Proxy AND a Full Resolution (320x240) Display on an ESP32 without PSRAM?
I am wondering if there is a way to optimize the Bluetooth stack size or the display buffer (maybe partial updates?) to make them fit, or if I am simply asking for too much from this hardware.