Skip to content

Add LILYGO T4-S3 curated board - #1815

Merged
bdraco merged 1 commit into
mainfrom
board-lilygo-t4-s3
Jul 3, 2026
Merged

Add LILYGO T4-S3 curated board#1815
bdraco merged 1 commit into
mainfrom
board-lilygo-t4-s3

Conversation

@bdraco

@bdraco bdraco commented Jul 3, 2026

Copy link
Copy Markdown
Member

What does this implement/fix?

Adds a curated board manifest for the LILYGO T4-S3, an ESP32-S3 board with a 2.41" 450x600 RM690B0 AMOLED panel on a quad-SPI bus. It features the quad SPI bus, the mipi_spi display (model T4-S3), and the BOOT button, with a one-click Display bundle.

The panel is self-emissive, so there is no backlight output; GPIO9 enables the panel power rail and is supplied by the model. The board's CST226SE touch panel and PMU share an I2C bus (GPIO6/7), left free to assign. enable_pin is intentionally not locked in the manifest because it is an ensure_list field, so the frontend seeds it as a list and a scalar lock would reject the add; the model fills it.

Pins were verified against three sources: the esphome mipi_spi model, the LILYGO AMOLED-Series library board struct, and the dobodu RM690B0 T4-S3 micropython driver; all agree the QSPI bus is clk 15, data 14/10/16/12, with cs 11, reset 13, enable 9, and no DC pin. A generated Display bundle config passes esphome config, and validate_definitions reports 552 boards OK.

Related issue or feature (if applicable):

  • N/A

Types of changes

  • New feature (non-breaking change which adds functionality) — new-feature

Frontend coordination

  • No frontend change needed

Checklist

  • The code change is tested and works locally.
  • Pre-commit hooks pass (ruff, codespell, yaml/json/python checks).
  • Tests have been added or updated under tests/ where applicable.
  • components.index.json / definitions/components/*.json have not been hand-edited (regenerate via script/sync_components.py if a sync is needed).
  • Architecture-level changes are reflected in docs/ARCHITECTURE.md and/or docs/API.md.

ESP32-S3 board with a 2.41" 450x600 RM690B0 AMOLED panel on a quad-SPI bus.
Features the quad SPI bus, the mipi_spi display (model T4-S3), and the BOOT
button. The panel is self-emissive so there is no backlight; GPIO9 (panel
power enable) is supplied by the model. The CST226SE touch panel and PMU share
an I2C bus (GPIO6/7) and are left free to assign.

cs_pin and reset_pin are locked; enable_pin is left to the model because it is
an ensure_list field, so the frontend seeds it as a list and a scalar lock
would reject the add.

Pins verified against the esphome mipi_spi model, the LILYGO AMOLED-Series
library board struct, and the dobodu RM690B0 T4-S3 micropython driver.
@github-actions github-actions Bot added the new-feature New feature label Jul 3, 2026
@codspeed-hq

codspeed-hq Bot commented Jul 3, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 27 untouched benchmarks


Comparing board-lilygo-t4-s3 (98af62d) with main (8e41425)

Open in CodSpeed

@codecov

codecov Bot commented Jul 3, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 99.54%. Comparing base (8e41425) to head (98af62d).

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main    #1815   +/-   ##
=======================================
  Coverage   99.54%   99.54%           
=======================================
  Files         230      230           
  Lines       18393    18393           
=======================================
  Hits        18310    18310           
  Misses         83       83           
Flag Coverage Δ
py3.12 99.52% <ø> (ø)
py3.14 99.54% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@bdraco
bdraco marked this pull request as ready for review July 3, 2026 20:42
Copilot AI review requested due to automatic review settings July 3, 2026 20:42
@esphbot

esphbot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

PR Review — Add LILYGO T4-S3 curated board

Clean, low-risk curated-board addition that mirrors the established AMOLED-board pattern. Merge-ready.

Specific things verified as correct:

  • display.mipi_spi model T4-S3 is a real option in the generated catalog (display.mipi_spi.json model enum), so the display config validates.

  • Manifest structure is byte-for-byte parallel to the recently-merged lilygo-t-display-s3-amoled board — same lane pattern (lcd_spi QSPI + lcd_display mipi_spi + boot_button), same display_setup bundle.

  • data_pins order [14,10,16,12] matches the pin notes (data0/data1/data2/data3), consistent with the sibling board's [data0..data3] ordering.

  • Generated board_bodies/lilygo-t4-s3.json is minified with alphabetically-sorted keys and locked_pins derived exactly as the existing AMOLED board's body (clk_pin-only for the SPI bus, cs/reset for the display) — confirming it is sync-script output, not hand-edited.

  • Omitting dc_pin is valid given the prior Make display.mipi_spi dc_pin optional commit (c46fd59) already on main.

  • Leaving GPIO9 (enable_pin) unlocked-in-manifest but marked occupied_by: lcd_display matches the sibling board's GPIO38 power-enable treatment; the ensure_list rationale in the description is sound.

  • No correctness, security, or maintainability issues found.

  • Index files (boards.index.json, featured_components.index.json) updated with the new entry, consistent with the generated bodies.



Checklist

  • Display model is a valid catalog option
  • Generated JSON body regenerated, not hand-edited
  • Manifest structure consistent with existing curated boards
  • Pin assignments internally consistent (notes vs data_pins order)

Automated review by Kōan (Claude) HEAD=98af62d 1 min 37s

@esphbot esphbot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No blocking issues found.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new curated board definition for the LILYGO T4-S3 to the board catalog, enabling the dashboard to offer a one-click “Display (full setup)” bundle with the correct QSPI + display.mipi_spi model wiring and pin occupancy for this ESP32-S3 AMOLED board.

Changes:

  • Introduces a new curated board manifest defining metadata, pin availability/occupancy, and featured components/bundle for the LILYGO T4-S3.
  • Adds the generated board body JSON consumed by the runtime board catalog for the new board.

Reviewed changes

Copilot reviewed 2 out of 4 changed files in this pull request and generated no comments.

File Description
esphome_device_builder/definitions/boards/lilygo-t4-s3/manifest.yaml New curated manifest defining the board, pin map, featured components, and display bundle.
esphome_device_builder/definitions/board_bodies/lilygo-t4-s3.json Generated board body JSON for runtime consumption matching the new manifest.

@bdraco
bdraco merged commit 4df4b62 into main Jul 3, 2026
23 checks passed
@bdraco
bdraco deleted the board-lilygo-t4-s3 branch July 3, 2026 20:45
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 5, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

new-feature New feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants