General Community

Waveshare **ESP32-S3-Touch-LCD-5B

lecpinc-boop

Board

Waveshare ESP32-S3-Touch-LCD-5B, 1024×600, the revision with the CH422G IO expander (not the newer CH32V003 revision the 7B profile uses). ESP32-S3, octal PSRAM, GT911 touch.

There's no 5B entry in boards.yaml, so I built it on the waveshare5 profile with overrides. It's now running well: display, touch and the HA connection all work.

  • Package ref: screens-v0.4.88, file packages/waveshare5.yaml
  • Built with ESPHome 2026.9.1 (Device Builder in Docker)

Problems I hit (in case they help with a 5B profile)

  1. Vertical lines / no picture: the waveshare5 profile assumes 800×480 glass and the 4.3" porch timings (4/8). On 5B glass that gives only vertical lines. Overriding the panel size and timings (below) fixed it.
  2. ESP_ERR_WIFI_NOT_INIT, Wi-Fi never starts: at 1024×600 the profile's LVGL_BUFFER_SIZE: "12%" lands in internal RAM and leaves too little for Wi-Fi (same issue as #207 on the 7B). Setting it to 25% pushes it to PSRAM and fixed it. I also had to remove CONFIG_ESP32S3_DATA_CACHE_64KB.
  3. !extend my_display in the local overrides file failed with "Source for extension of ID 'my_display' was not found". It only worked when placed in the main screen YAML.

Working overrides (in the main screen YAML)

The timings are the ones that already worked on this panel with a plain rpi_dpi_rgb config.

substitutions:
  PANEL_W: "1024"
  PANEL_H: "600"
  DISPLAY_DPI: "237.4"        # 1187 diagonal px / 5 in
  LVGL_BUFFER_SIZE: "25%"

psram:
  mode: octal
  speed: 120MHz               # 80MHz untested on this build

esp32:
  framework:
    advanced:
      enable_idf_experimental_features: true
    sdkconfig_options:
      CONFIG_IDF_EXPERIMENTAL_FEATURES: "y"
      CONFIG_SPIRAM_SPEED_120M: "y"
      CONFIG_ESP32S3_DATA_CACHE_LINE_64B: "y"
      CONFIG_SPIRAM_FETCH_INSTRUCTIONS: "y"
      CONFIG_SPIRAM_RODATA: "y"
      CONFIG_COMPILER_OPTIMIZATION_PERF: "y"

display:
  - id: !extend my_display
    model: RPI
    color_order: RGB
    pclk_frequency: 16MHz
    pclk_inverted: true
    de_pin: GPIO5
    pclk_pin: GPIO7
    hsync_pin:
      number: GPIO46
      ignore_strapping_warning: true
    vsync_pin:
      number: GPIO3
      ignore_strapping_warning: true
    hsync_pulse_width: 30
    hsync_back_porch: 210
    hsync_front_porch: 210
    vsync_pulse_width: 4
    vsync_back_porch: 23
    vsync_front_porch: 12
    data_pins:
      red: [GPIO1, GPIO2, GPIO42, GPIO41, GPIO40]
      green: [GPIO39, GPIO0, GPIO45, GPIO48, GPIO47, GPIO21]
      blue: [GPIO14, GPIO38, GPIO18, GPIO17, GPIO10]

Touch and backlight work unchanged from the waveshare5 profile (GT911 reset on CH422G line 1, backlight on line 2, panel reset on line 3).

Happy to test a proper waveshare5b profile if you add one. Thanks for Tessera, it's exactly what I was looking for.

Discussion 0

Add a comment

Start the conversation

Share an example, ask a question or explain how you would use this.

Add your thoughts, a screenshot or a useful link.

Markdown & basic HTML
Paste or drop images · URLs on their own line become previews0 / 10,000
Create your account to join in

We need a verified email address to reach you about your contribution. Your address stays private.

Continue with GitHub

Your draft stays in this tab. Return here after verification.