Documentation / Shipping it

Troubleshooting

A symptom, its usual cause, and where the fix is.

Most problems fall into one of four places: the board does not show the screen, the screen is wrong, the build does not compile, or the designer is telling you something. Each has a short list of usual causes.

On the board

SymptomUsual cause
Nothing on serialWrong COM port or baud (it is 115200); a charge-only cable; USB CDC On Boot not enabled on an S3 or C3 with native USB.
White or black screen, UI ready printedBacklight pin or its active level is wrong; or the panel is not initialised - wrong controller, bus or library driver on the Display tab.
White screen, nothing printed after the nameThe panel init is hanging: SPI pins wrong, or a reset line not wired.
draw buffer allocation failedLower Buffer height in the export settings. On an S3 with PSRAM, enable it in the IDE and tick Buffer in PSRAM.
Reboot loop as the UI startsThe same memory problem; or PSRAM enabled in the project but not in the IDE; or an RGB panel without PSRAM.
Colours invertedToggle Invert on the Display tab.
Red and blue swappedSwitch the colour order between RGB and BGR.
Mirrored or rotated imageChange Rotation, then fix the touch axes if they no longer match.
Touch does nothingWrong I2C address; the controller shares a bus that is not marked as shared; its reset line not wired (CST816S); INT pin wrong. The serial output says whether it answered.
Touch offset or mirroredSwap X/Y, Invert X, Invert Y on the Touch tab; resistive controllers also need Calibration.
Touch works on part of the screenResistive calibration values, or the touch resolution does not match the display rotation.
Random pixels, tearing, flickerSPI clock too high for the panel or the wiring - lower it; shorten wires. RGB: PSRAM speed, pixel clock.
Images are empty boxesThe filesystem was not uploaded (pio run -t uploadfs or the IDE plugin); or the wrong filesystem type; or the partition scheme has no room. ui_fs_init() names each missing file on serial.
A sensor never changesReported absent at boot: address, bus, pull-ups, power. The Devices tab address must match the part's strapping.
A readout lags or jumpsThe device's poll interval is long, or an analog input's smoothing is high. Both are on the Hardware tab.
A slider snaps back when touchedIts binding is Variable → widget only. Set the Direction to Both ways.
Text shows ? boxesA character outside Montserrat's built-in range (it covers Latin, not CJK), or a font size not enabled - re-export after changing the font.

Building

ErrorFix
lv_conf.h: No such file, or LVGL uses default settingsArduino IDE: lv_conf.h must be in libraries/ next to the lvgl folder. PlatformIO: keep the generated -DLV_CONF_INCLUDE_SIMPLE -I . build flags.
lv_image_create / lv_img_create undeclared, or hundreds of LVGL errorsThe installed LVGL major version does not match the project. Install 9.x or 8.3.x to match the export settings, or change the version and re-export.
TFT_eSPI builds but the panel is wrongThe generated User_Setup.h was not copied over the library's own. PlatformIO does not need it - the defines are in platformio.ini.
fatal error: Adafruit_BME280.h (or any library header)Install it from LIBRARIES.md. The search string is quoted there exactly.
Sketch too bigChoose the Huge APP partition scheme, or one with a larger app partition.
lv_colorwheel_create undeclared on LVGL 9The colorwheel was removed from LVGL 9 core. Enable it in lv_conf.h extras or target 8.3.x.
ESP32-P4 board not foundThe P4 needs a recent Espressif core; update it in the Boards Manager or the PlatformIO platform.

The designer's own messages

The Check tab, the Errors tab and the export dialog show the same list. Errors block export; warnings do not. The messages name the widget, pin or variable concerned. The ones people ask about:

MessageMeaning
GPIO n (...): Strapping pin - affects boot modeA warning, not an error. The pin is used at reset to pick the boot mode. Fine for data lines, risky for RST and backlight because a level held at boot can stop the board booting.
GPIO n (...) is input-only and cannot drive this signalGPIO 34-39 on the ESP32 (and 46 on the S2) cannot be outputs. Move CS, DC, RST or the backlight to another pin.
GPIO n is assigned twiceTwo unrelated signals on one pin. If they are meant to share a bus, mark the touch controller as sharing the display bus, or put both devices on the same named bus.
RGB panels need PSRAM for the framebufferEnable PSRAM on the Board tab (and in the IDE), or choose an MCU that has it.
The draw buffer (n KB) is large for ...Lower Buffer height in the export settings.
"X" on "Screen" extends outside the screenPart of the widget is past the edge and will be cut off. Move or shrink it.
"X" has a chart binding but no series to push ontoAdd a series under Chart data, then pick it in the binding.
"X" is a scatter chart, so its points need an X valueSet X from on the chart, or change the type to Line.
"clock" looks like a clock, and "X" plots it as YYou have bound the time variable as a value; it belongs in X from.
"X" wants a reading every n ms to cover its windowThe time span divided by the point count is faster than the refresh loop. Lengthen the window or reduce the points.
Address 0x.. is used by both "A" and "B"Two I2C devices with one address on one bus. Change one's address strap, or put it on another bus.
Analog input "X" uses prev() or delta()Those only work in variable formulas, which run after the inputs are read.
"X" has transparency but is set to RGB565The alpha channel will be discarded. Use RGB565A8 or ARGB8888.
Image assets total n KB, more than the roughly 896 KB availableOver the filesystem partition. Shrink or reformat images, compile some in as C arrays, or use an SD card.
The Errors tab on a project with a few warnings and one error. Clicking an entry selects the widget it names.
The Errors tab on a project with a few warnings and one error. Clicking an entry selects the widget it names.

Accounts and quota

The gallery

Still stuck

Email admin@lcdwizard.online with the board, the serial output from boot, and - if you can - the project .json from File > Download project file. That file is the whole design and is the fastest way to reproduce what you are seeing.