Summary
I'd like to contribute support for the LilyGO T-Deck Max (the e-paper T-Deck variant — vendor repo Xinyuan-LilyGO/T-Deck-MAX, ESP32-S3 / 16 MB / 8 MB PSRAM). It's been brought up on real hardware against the current Devices/ devicetree HAL and boots cleanly to the launcher with display, keyboard, touch, and power working. Per the CONTRIBUTING.md, I'm opening this to discuss before sending a PR.
Hardware
| Function |
Part |
Bus / notes |
| MCU |
ESP32-S3, 16 MB flash, 8 MB PSRAM |
— |
| Display |
GDEQ031T10 e-paper, 240×320, 1bpp |
SPI2 (shared) |
| Touch |
Hynitron CST66xx @ 0x1A |
I2C0 (vendor docs mislabel it CST328) |
| Keyboard |
TCA8418 4×10 matrix @ 0x34 |
I2C0, backlight + INT |
| Power |
SY6970 charger @ 0x6A + BQ27220 fuel gauge @ 0x55 |
I2C0 |
| IO expander |
XL9555 |
gates touch/keyboard reset + LoRa power |
| Storage |
microSD (SpiSdCardDevice) |
shares SPI2 with EPD |
| Radio |
Semtech SX1262 LoRa |
shares SPI2 (planned as a separate follow-up) |
Status (verified on hardware)
Working & confirmed on-device:
- Boot to launcher, stable (no panic/WDT)
- E-paper display incl. windowed partial refresh + ghost-gate (ported from GxEPD2 waveforms), mono theme
- CST66xx touch (navigation + tap-to-activate)
- TCA8418 keyboard (nav + typing)
- Power: battery metrics (BQ27220) + power-off / ship-mode (SY6970)
WIP / not yet solid:
- SD card mount on the shared SPI bus (intermittent)
- Intermittent crash shortly after Wi-Fi connect (still diagnosing; appears core/network, not board)
Possible upstream bug found during bring-up (happy to file separately): leaving the Files app can hang the loader — files::View::deinit calls lv_obj_remove_event_cb on an already-freed dir_entry_list, spinning loader_dispatch until the task WDT fires. Reproducible direction; not board-specific.
Plan
To keep PRs single-purpose, I'll contribute incrementally:
- Base board first — display + keyboard + touch (the minimum to boot and interact).
- Power, then the SX1262 radio, then remaining fixes — each as its own follow-up PR.
This introduces one new reusable driver, plus one promoted to shared use:
Drivers/GDEQ031T10 — generic UC8253-based e-paper driver with partial refresh.
Drivers/CST66xx — the Hynitron CST66xx touch protocol (4-byte register addressing) as a shared component, so other boards using this part can reuse it.
Device id lilygo-tdeckmax, display name "T-Deck Max" (deliberately distinct from the color "T-Deck"/"T-Deck Pro").
The work is on a branch and builds against current main (ESP-IDF 5.5.2). Open to any convention preferences before I open the base-board PR.
Summary
I'd like to contribute support for the LilyGO T-Deck Max (the e-paper T-Deck variant — vendor repo
Xinyuan-LilyGO/T-Deck-MAX, ESP32-S3 / 16 MB / 8 MB PSRAM). It's been brought up on real hardware against the currentDevices/devicetree HAL and boots cleanly to the launcher with display, keyboard, touch, and power working. Per the CONTRIBUTING.md, I'm opening this to discuss before sending a PR.Hardware
Status (verified on hardware)
Working & confirmed on-device:
WIP / not yet solid:
Possible upstream bug found during bring-up (happy to file separately): leaving the Files app can hang the loader —
files::View::deinitcallslv_obj_remove_event_cbon an already-freeddir_entry_list, spinningloader_dispatchuntil the task WDT fires. Reproducible direction; not board-specific.Plan
To keep PRs single-purpose, I'll contribute incrementally:
This introduces one new reusable driver, plus one promoted to shared use:
Drivers/GDEQ031T10— generic UC8253-based e-paper driver with partial refresh.Drivers/CST66xx— the Hynitron CST66xx touch protocol (4-byte register addressing) as a shared component, so other boards using this part can reuse it.Device id
lilygo-tdeckmax, display name "T-Deck Max" (deliberately distinct from the color "T-Deck"/"T-Deck Pro").The work is on a branch and builds against current
main(ESP-IDF 5.5.2). Open to any convention preferences before I open the base-board PR.