Waveshare ESP32-S3-Touch-LCD-4.3 combines a 4.3-inch touchscreen with an ESP32-S3, plus RS485, CAN, I2C, a lithium charger, microSD, and two USB-C ports.
PlatformIO support came through ESP32_Display_Panel, but the board needed BOARD_CUSTOM.json changes because its 8MB flash conflicted with the default 16MB partition table.
The module uses an ESP32-S3-WROOM-1 MCN8R8 with a dual-core Xtensa LX7 at up to 240 MHz, 8MB Flash, and 8MB SRAM.
After switching to default_8MB.csv and adjusting the upload flash size, the board ran a simple LVGL demo with labels, buttons, sliders, charts, and dropdowns.
It behaves almost identically to the 5-inch version, but the frame rate still feels low and the display is less responsive than a modern phone.
Generated by the language model.
.
The ESP32-S3 Touch LCD 4.3 is, as the name suggests, a module featuring a 4.3" touchscreen controlled by the ESP32-S3, which is a dual-core, 32-bit Xtensa LX7 processor clocked at up to 240 MHz with 8MB Flash and external 8MB SRAM. The whole is enriched by various peripherals such as RS485, CAN, I2C, a 3.7V lithium battery charger or there microSD card slot and not one, but two USB Type C connectors.
The module can be bought in our country for about 175 PLN, from abroad you can import this board cheaper.
.
Information about the board is best checked on the official manufacturer's website . The connectors and on-board circuitry are described there in detail:
.
.
The board has the classic LVGL demo preloaded - just like the others in the series. Here, too, it feels that the FPS is quite low.
.
The ESP32_Display_Panel can be uploaded to the board, as I have shown for the ESP32-S3-Touch-LCD-5 board . It's just that in this case we should uncomment the option with BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3, although in practice in my case it wasn't needed. These boards are so similar that the only difference was the size of the ESP32 Flash memory:
.
.
Both are ESP32-S3-WROOM-1, but one is MCN8R8 - 8MB, the other is MCN16R8 - 16MB Flash. RAM 8MB in both. The program from the 16MB version does not even start:
E (31) flash_parts: partition 3 invalid - offset 0x650000 size 0x640000 exceeds
flash chip size 0x800000
E (32) boot: Failed to verify partition table
.
The solution turned out to be editing the BOARD_CUSTOM.json file - changing the default_16MB.csv partition table to default_8MB.csv, I also changed the Flash size in the upload section.
Code: JSON
Log in, to see the code
.
I have prepared simple example code for this, which sequentially creates different types of components within a single template:
Code: C / C++
Log in, to see the code
.
The above code creates successively:
- a label (lv_label) with text in large font, centred on the screen
- a container/template (lv_obj) with a flexible horizontal layout (LV_FLEX_FLOW_ROW) and spacing between elements
- button with 'Click' label
- text box (lv_textarea) with hint text "Text..."
- checkbox (lv_checkbox) with the text "Agree"
- line chart (lv_chart) with sample data
- switch (lv_switch)
- slider (lv_slider) with a range of 0-100 and a set value of 40
- progress bar (lv_bar) with a set value of 70
- a dropdown menu (lv_dropdown) with three options to choose from
Result:
.
Basically, that's it - you can programme.
Finally, a comparison between the 4.3" and 5" versions:
.
In summary , this was a very similar board to the already discussed Waveshare ESP32-S3-Touch-LCD-5 , there were no differences on the display control side. Only the ESP32 partitions had to be changed and it managed to be programmed just like the "five".
The rest is identical to the "five", here too the display seemingly looks good, But the frame rate often drops quite low and it feels not as responsive as today's mobile devices.
Do you have any ideas what kind of projects can be done on this type of display? I already have two, it's time to harness them to work somehow. I am attaching the board schematic.
Attachments:
ESP32-S3-Touch-LCD-4.3-Sch.pdf(742.52 KB)
You must be logged in to download this attachment.
About Author
p.kaczmarek2 wrote 14397 posts with
rating 12321 , helped 650 times.
Been with us since 2014 year.
What puzzles me is why manufacturers do something like this. What is the purpose of this device? If I fix it on the wall, am I supposed to run wires out in all directions?
The same if I add a stand for... [Read more]
chemik_16
28 May 2025 14:14
.
you can make yourself a control panel for HA, nothing cheaper now.
gpio they are making it out, rs485 is there so you can outofbox to make it a controller for the furnace under modbus.
if someone... [Read more]
krzbor
28 May 2025 15:45
Exactly what I'm thinking of - an IOT control device, but the edge leads nullify the aesthetic use. [Read more]
chemik_16
28 May 2025 22:00
.
Because what we have here is the cartridge itself, they still sell frames for it [Read more]
krzbor
29 May 2025 09:58
Has anyone bought or analysed buying something like this:
https://obrazki.elektroda.pl/8627627700_1748505394_thumb.jpg .
Link . I am concerned with how it performs. [Read more]
chemik_16
29 May 2025 10:10
.
You buy any tablet and lan card on usb as you need.
I generally use android tablets for HA but they have all sorts of flops, they reset, battery swells after a while etc. [Read more]
krzbor
29 May 2025 11:54
.
I know this, which is why I asked about the indicated tablet. There is no battery there, there is POE. [Read more]
chemik_16
29 May 2025 11:57
It's not cheap, the battery can be given smaller, or you can buy an android photo frame, there is no battery ;) but this from the insert will come out cheaper [Read more]
p.kaczmarek2
29 May 2025 12:08
.
And it's not possible to convert it so that it's powered directly from the power supply, without a battery at all? I'm assuming you're talking about the tablet as a desktop controller. I remember that... [Read more]
chemik_16
29 May 2025 12:21
.
It can be done, generally this product above is nothing more than a Chinese tablet scaled down from a battery, with a poe to usb converter.
Worse with the rest of the pains, you have to somehow keep... [Read more]
dktr
29 May 2025 15:28
This microcontroller is too slow for such resolutions, 10 FPS is however not enough - we are talking about a touch-controlled user interface, the data display itself as OK. [Read more]
chemik_16
29 May 2025 16:55
.
120fps needed to turn something on with a button ? :) [Read more]
dktr
29 May 2025 17:36
120 is not necessary, but the 30 must be so that the device gives the impression of being modern and not a mulled crisper made a dozen years ago ;) [Read more]
chemik_16
29 May 2025 18:26
.
Well, the only thing that slows me down is moving the demo between tabs and I think the touch, so the cpu is practically 0% loaded when displaying animations. Clearly a lack of optimisation in the lvgl... [Read more]
Anonymous
29 May 2025 22:57
.
There it also gives information on what settings are needed for the ESP-IDF to make this LVGL work a little better. This unfortunately involves a recompilation of the whole ESP-IDF, so the Arduino SDK... [Read more]
p.kaczmarek2
29 May 2025 23:14
The essential question now is whether this pre-loaded demo is already with these optimisations?
I've had a look at the project I'm basing it on and only some of the settings have it differently, but... [Read more]
FAQ
TL;DR: For PlatformIO users moving from the 16MB 5-inch example to the 4.3-inch board with 8MB Flash: change the partition layout and flash size, or boot will fail. As one poster put it, "the solution turned out to be editing the BOARD_CUSTOM.json file". This FAQ helps ESP32-S3 touchscreen developers bring up the Waveshare 4.3-inch panel and understand its real limits. [#21562195]
Why it matters: This thread shows the exact fix that gets the Waveshare ESP32-S3-Touch-LCD-4.3 booting in PlatformIO and explains where the board is useful, and where its UI performance still falls short.
Cecha
ESP32-S3-Touch-LCD-4.3
ESP32-S3-Touch-LCD-5
Przekątna ekranu
4.3 cala
5 cali
Moduł ESP32
ESP32-S3-WROOM-1 MCN8R8
ESP32-S3-WROOM-1 MCN16R8
Flash
8MB
16MB
PSRAM
8MB
8MB
Zmiana w PlatformIO
tabela partycji 8MB
przykład 16MB działa bez tej zmiany
Kluczowy wniosek: Różnica między wersją 4.3" i 5" okazała się głównie pamięciowa, nie graficzna. Ekran rusza po korekcie partycji Flash, ale odczucie płynności nadal ogranicza wydajność całego stosu LVGL i konfiguracja SDK. [#21562195]
Quick Facts
Moduł opisano jako ESP32-S3 z dwoma rdzeniami Xtensa LX7 32-bit do 240 MHz, z 8MB Flash i zewnętrznym 8MB SRAM. [#21562195]
Płytka ma interfejsy RS485, CAN, I2C, ładowarkę akumulatora 3.7V Li-Ion, gniazdo microSD i dwa USB Type-C, więc nadaje się na panel sterujący, nie tylko prosty ekran. [#21562195]
W poście podano cenę około 175 PLN w Polsce, z możliwością tańszego importu z zagranicy. [#21562195]
Błąd startu pojawia się, gdy firmware używa układu 16MB, a faktyczna kość ma 0x800000 bajtów = 8MB; wtedy partycja z offsetem 0x650000 i rozmiarem 0x640000 wychodzi poza pamięć. [#21562195]
W dyskusji padła ocena, że około 10 FPS to za mało dla dotykowego interfejsu, choć do samego wyświetlania danych może wystarczyć. [#21563864]
How do I get the Waveshare ESP32-S3-Touch-LCD-4.3 working in PlatformIO when the example is set up for the 16MB ESP32-S3-Touch-LCD-5?
You need to adapt the example to the 4.3-inch board’s 8MB Flash layout. 1. Open BOARD_CUSTOM.json. 2. Change the partition file from default_16MB.csv to default_8MB.csv. 3. Change the upload Flash size from 16MB to 8MB-equivalent values. The poster reported that display control stayed the same as on the 5-inch model, and only the ESP32 memory layout blocked boot. [#21562195]
Why does the ESP32-S3-Touch-LCD-4.3 show "partition 3 invalid" and "Failed to verify partition table" after flashing?
It fails because the flashed image expects a 16MB Flash map, but the 4.3-inch board in the thread had only 8MB Flash. Boot reported partition 3 at offset 0x650000 with size 0x640000, which exceeded the chip size 0x800000. That makes the partition table invalid before the application even starts. [#21562195]
What exactly should I change in BOARD_CUSTOM.json to switch an ESP32-S3 project from a 16MB flash layout to an 8MB flash layout?
Change the partition CSV and the upload Flash size. In the shared file, build.arduino.partitions was set to default_16MB.csv, and upload.flash_size plus upload.maximum_size matched 16MB. The working fix was to replace the partition file with default_8MB.csv and update the Flash-size-related upload settings so they no longer describe a 16MB target. [#21562195]
How do I create a simple LVGL demo on the ESP32-S3-Touch-LCD-4.3 with a label, button, textarea, checkbox, chart, switch, slider, bar and dropdown?
Create the active screen, then add each LVGL widget to a horizontal container. The example builds a centered label in lv_font_montserrat_48, then adds a button, textarea, checkbox, line chart with 6 points, switch, slider set to 40, bar set to 70, and a dropdown with 3 options. That gives a compact UI smoke test for display and touch bring-up. [#21562195]
What is LVGL and why is it commonly used on ESP32-S3 touchscreen displays like the Waveshare Touch LCD series?
"LVGL" is a graphics library that builds embedded user interfaces, provides ready-made widgets, and supports layouts, fonts, charts, and touch interaction. It is used here because the board ships with an LVGL demo and the shared sample code creates labels, buttons, charts, sliders, and dropdowns directly with LVGL APIs. [#21562195]
What is RS485 in the context of the ESP32-S3-Touch-LCD-4.3, and how could it be used for a Modbus furnace or home automation controller?
RS485 is the board’s wired industrial bus option, useful when a touchscreen must talk to field devices over a robust cable link. One reply pointed out that the board exposes RS485 and could work “out of box” as a furnace controller under Modbus, or as a Home Assistant control panel with extra GPIO-based integration. [#21562661]
ESP32-S3-Touch-LCD-4.3 vs ESP32-S3-Touch-LCD-5 — what are the real differences in hardware, flash size and software setup?
In this thread, the practical difference was mainly display size and Flash capacity, not the display-control stack. Both boards used ESP32-S3-WROOM-1 and had 8MB RAM, but the 4.3-inch unit was MCN8R8 with 8MB Flash, while the 5-inch unit was MCN16R8 with 16MB Flash. Software only needed a partition-layout change for the smaller Flash device. [#21562195]
Why does the preloaded LVGL demo on the Waveshare ESP32-S3 touchscreen feel slow, and what actually limits the FPS?
The demo feels slow because the whole UI path appears to be the bottleneck, not raw widget count alone. The original post said the factory LVGL demo had noticeably low FPS, and later replies argued that about 10 FPS is not enough for a touch UI. Others blamed weak optimization in the LVGL libraries and touch handling rather than CPU saturation during simple animations. [#21564031]
Which ESP-IDF settings improve LVGL performance on the ESP32-S3-Touch-LCD-4.3, and why are those optimizations harder to use from Arduino?
The thread confirms that the manufacturer’s material includes ESP-IDF settings that improve LVGL behavior, but it does not list those settings line by line. A later reply says these changes require recompiling the whole ESP-IDF, which makes them awkward in Arduino-based workflows. That is why Arduino was described as a poor fit for squeezing maximum LVGL performance from this board. [#21564323]
What kinds of practical projects can I build with the ESP32-S3-Touch-LCD-4.3, especially for Home Assistant or wall-mounted control panels?
The strongest use case in the discussion is a Home Assistant wall panel or a furnace controller. One poster explicitly suggested a Home Assistant control panel and noted the onboard RS485 as a direct path to a Modbus-based heating controller. The board also has GPIO, CAN, I2C, microSD, and dual USB-C, so it fits custom dashboards better than a pure display module. [#21562661]
How should I mount the Waveshare ESP32-S3-Touch-LCD-4.3 so the edge connectors and cables do not ruin the look of a wall panel?
Mount it in a frame or enclosure that redirects cables behind the panel, not straight out from the edges. One reply criticized the exposed side connectors for wall use, while another answered that the bare module is only the insert and separate frames are sold for it. Without that extra mechanical layer, the panel looks unfinished in fixed installations. [#21563198]
What frames or enclosures are available for the ESP32-S3-Touch-LCD-4.3 module, and how do they solve the connector placement problem?
The thread only confirms that frames are sold for the module; it does not name a part number or vendor SKU. Their purpose is clear: they turn the bare “cartridge” into a wall-ready or stand-mounted panel and hide the edge connectors so cables can route more cleanly. That directly addresses the aesthetics problem raised in the discussion. [#21563198]
For a Home Assistant wall panel, how does an ESP32-S3 touchscreen compare with an Android tablet or a PoE Android panel in performance and reliability?
The ESP32-S3 panel is simpler and more embedded, but it feels less fluid than a modern tablet. In contrast, Android tablets were described as faster-looking yet prone to resets and swollen batteries over time, while a PoE Android panel avoids the battery issue but remains a more tablet-like product with kiosk-management overhead. The thread presents this as a trade-off between polish and long-term appliance behavior. [#21563535]
How do people run an Android tablet without a battery as a fixed desktop or wall controller, and what problems still remain with kiosk mode and stability?
People either feed power directly where the battery connects or buy a tablet-like panel already stripped of the battery. One poster said an old Xiaomi phone could be revived by applying voltage to the battery connector, and another said the PoE wall unit was basically a Chinese tablet without a battery plus a PoE-to-USB converter. The remaining problems were app auto-start, kiosk lock-in, resets, and general Android oddities. [#21563676]
What is the real-world performance of the PoE Android wall tablet mentioned in the discussion, and how does it compare with using a standard tablet plus a USB LAN adapter?
The thread does not provide measured real-world performance for that PoE panel, so there is no reliable FPS, latency, or stability benchmark to quote. The only concrete comparison is practical: one reply said you can buy a normal tablet plus a USB LAN adapter, while another preferred the PoE idea because it removes the battery. That makes the PoE option cleaner mechanically, but not proven faster in this discussion. [#21563632]
Comments
What puzzles me is why manufacturers do something like this. What is the purpose of this device? If I fix it on the wall, am I supposed to run wires out in all directions? The same if I add a stand for... [Read more]
. you can make yourself a control panel for HA, nothing cheaper now. gpio they are making it out, rs485 is there so you can outofbox to make it a controller for the furnace under modbus. if someone... [Read more]
Exactly what I'm thinking of - an IOT control device, but the edge leads nullify the aesthetic use. [Read more]
. Because what we have here is the cartridge itself, they still sell frames for it [Read more]
Has anyone bought or analysed buying something like this: https://obrazki.elektroda.pl/8627627700_1748505394_thumb.jpg . Link . I am concerned with how it performs. [Read more]
. You buy any tablet and lan card on usb as you need. I generally use android tablets for HA but they have all sorts of flops, they reset, battery swells after a while etc. [Read more]
. I know this, which is why I asked about the indicated tablet. There is no battery there, there is POE. [Read more]
It's not cheap, the battery can be given smaller, or you can buy an android photo frame, there is no battery ;) but this from the insert will come out cheaper [Read more]
. And it's not possible to convert it so that it's powered directly from the power supply, without a battery at all? I'm assuming you're talking about the tablet as a desktop controller. I remember that... [Read more]
. It can be done, generally this product above is nothing more than a Chinese tablet scaled down from a battery, with a poe to usb converter. Worse with the rest of the pains, you have to somehow keep... [Read more]
This microcontroller is too slow for such resolutions, 10 FPS is however not enough - we are talking about a touch-controlled user interface, the data display itself as OK. [Read more]
. 120fps needed to turn something on with a button ? :) [Read more]
120 is not necessary, but the 30 must be so that the device gives the impression of being modern and not a mulled crisper made a dozen years ago ;) [Read more]
. Well, the only thing that slows me down is moving the demo between tabs and I think the touch, so the cpu is practically 0% loaded when displaying animations. Clearly a lack of optimisation in the lvgl... [Read more]
. There it also gives information on what settings are needed for the ESP-IDF to make this LVGL work a little better. This unfortunately involves a recompilation of the whole ESP-IDF, so the Arduino SDK... [Read more]
The essential question now is whether this pre-loaded demo is already with these optimisations? I've had a look at the project I'm basing it on and only some of the settings have it differently, but... [Read more]