From 3cf49d11bf204317da1770673dbdb52fd9cfb3d8 Mon Sep 17 00:00:00 2001 From: markt-heximal Date: Sun, 31 May 2026 21:49:59 -0400 Subject: [PATCH] =?UTF-8?q?docs(esp32):=20note=20that=20lv=5Fconf.h=20is?= =?UTF-8?q?=20ignored=20(LV=5FCONF=5FSKIP)=20=E2=80=94=20set=20LVGL=20font?= =?UTF-8?q?s/tick=20via=20Kconfig?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The firmware builds the managed lvgl/lvgl component with CONFIG_LV_CONF_SKIP=y, so main/lv_conf.h has no effect — LVGL options (fonts, tick, widgets) must be set via Kconfig/sdkconfig. Documents the trap behind the silently-disabled fonts and the never-advancing tick (#889). --- firmware/esp32-csi-node/README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/firmware/esp32-csi-node/README.md b/firmware/esp32-csi-node/README.md index f75d053c29..e83d5a77ed 100644 --- a/firmware/esp32-csi-node/README.md +++ b/firmware/esp32-csi-node/README.md @@ -287,6 +287,19 @@ CONFIG_WASM_MAX_MODULES=4 CONFIG_WASM_VERIFY_SIGNATURE=y ``` +#### LVGL / display config gotcha (ADR-045) + +This project builds the managed `lvgl/lvgl` component with **`CONFIG_LV_CONF_SKIP=y`**, so `main/lv_conf.h` is **ignored** — every LVGL option is taken from Kconfig instead. Editing `lv_conf.h` (fonts, tick, widgets, …) has **no effect**. Configure LVGL through `sdkconfig.defaults` (or `idf.py menuconfig` → *Component config → LVGL*): + +```ini +# Fonts: setting LV_FONT_MONTSERRAT_* in lv_conf.h does NOTHING — use Kconfig: +CONFIG_LV_FONT_MONTSERRAT_20=y +CONFIG_LV_FONT_MONTSERRAT_36=y +CONFIG_LV_USE_BAR=y +``` + +The same applies to the **LVGL tick**: the display only refreshes if `lv_tick` advances, which requires either `CONFIG_LV_TICK_CUSTOM` (Kconfig) or a firmware-driven `lv_tick_inc()` — `LV_TICK_CUSTOM=1` in `lv_conf.h` is ignored. (The firmware drives the tick via an `esp_timer`.) + --- ## Flashing