
LilyGo T-Deck is a development board based on the ESP32S3 microcontroller using XTENSA architecture.
This board features a maximum CPU frequency of 240 MHz and 16MB flash memory.
About LilyGo T-Deck
π The LilyGo T-Deck is a versatile development device featuring an ESP32-S3FN16R8 dual-core processor with integrated Wi-Fi and Bluetooth 5 (LE). It boasts a 2.8-inch IPS LCD (320x240) touch screen, a mini keyboard, and a trackball, making it ideal for portable applications. β‘
π‘ With support for LoRa transceiver (SX1262) at various frequencies (433/868/915 MHz), it enables long-range communication for IoT projects. The device comes with 16MB Flash and 8MB PSRAM, providing ample memory for complex applications.
πΎ Additional features include a microphone, speaker, and optional GPS module, enhancing its functionality for diverse use cases.
Where to Buy LilyGo T-Deck
Prices are subject to change. We earn from qualifying purchases as an Amazon Associate.
π Technical Specifications
Complete technical specification details for LilyGo T-Deck
π₯οΈ Display
π°οΈ Connectivity
π§ Microcontroller
β¨ Features & Pins
LilyGo T-Deck Pinout Diagram
Complete pin reference for LilyGo T-Deck

The LilyGo T-Deck pinout offers multiple GPIOs with various functionalities:
IO1 to IO3: GPIO, Touch, ADC
IO10 to IO13: SPI interface (CS, D, CLK, Q)
IO16: ADC
IO17 and IO18: UART (TX, RX)
IO38 to IO48: LCD data lines and control signals
Additionally, power pins like 3V3, 5V, and GND are available for peripheral connections.
β Safe Pins to Use
These pins are safe for general GPIO usage without boot or system conflicts
π‘ Why Are These Pins Safe?
β οΈ Pins to Avoid or Use with Caution
Reserved for critical functions. Misuse may cause boot failures, programming issues, or system conflicts.
Boot behavior & flash voltage
Low-level debugging interface
USB Serial/JTAG communication
Memory & PSRAM connections
Debugging & firmware uploads
| PIN | Label | Why Avoid | Type |
|---|---|---|---|
| IO3 | GPIO3 | Sampled at reset to select JTAG interface (USB Serial/JTAG controller vs. external pins). Improper use can disable external JTAG or alter debug interface. | π οΈ Strapping |
| IO10 | FSPICS0 | Used to select the external flash chip. It is required for flash access and cannot be repurposed without losing flash connectivity | β‘ Flash |
| IO11 | FSPID | Used as a data line for flash (and in-package PSRAM). It should not be used as GPIO when the flash/PSRAM is in use. | β‘ Flash |
| IO12 | FSPICLK | Drives the flash (and PSRAM) clock. This critical signal must be reserved for memory and not used as general GPIO. | β‘ Flash |
| IO13 | FSPIQ | Used as a data line for flash/PSRAM transfers. Not available for other uses when flash/PSRAM is connected. | β‘ Flash |
| IO38 | FSPIWP | On flash-equipped chips, this pin is tied to the flashβs WP# (or D3) line. It should be avoided for other use, as itβs needed for flash operations. | β‘ Flash |
| IO39 | MTCK (GPIO39) | Default JTAG debugging TCK pin. If JTAG is needed, this pin must be free; it may also be used internally for PSRAM chip select on certain modules, so avoid repurposing it. | πͺ Other |
| IO40 | MTDO (GPIO40) | Default JTAG TDO output for debugging. Using it as GPIO will interfere with JTAG debugging functionality. | πͺ Other |
| IO41 | MTDI (GPIO41) | Default JTAG TDI input for debugging. Should be reserved for JTAG or left unused if JTAG is to remain available. | πͺ Other |
| IO42 | MTMS (GPIO42) | Default JTAG TMS signal for debugging. Using this pin for other purposes will disable the JTAG interface (unless JTAG is rerouted to USB). | πͺ Other |
| IO45 | GPIO45 | Determines flash/PSRAM power voltage (3.3 V vs 1.8 V) at boot. Must match hardware configuration; using as GPIO can upset flash supply setting. | π οΈ Strapping |
| IO46 | GPIO46 | Must be at a defined level during reset (with GPIO0) to select normal or download boot and UART/USB print mode. This pin is input-only (no output drive), so it should be left for its intended strapping function. | π οΈ Strapping |
| IO47 | SPICLK_P | Used only on variants with Octal SPI interface (e.g. ESP32-S3R16V) as part of the differential clock pair. On such chips it operates at 1.8 V and is reserved for the high-speed octal SPI clock, not for general GPIO use. | β‘ Flash |
| IO48 | SPICLK_N | Used only on variants with Octal SPI interface, as the negative leg of the differential clock&. On such chips it operates at 1.8 V; it should be avoided for GPIO to prevent conflicts with the octal flash/PSRAM clock. | β‘ Flash |
| IO9 | FSPIHD | Connected to external flash (data/hold signal) on most modules. Not recommended for use as GPIO, since it must remain dedicated to flash communication. | β‘ Flash |
| IO14 | FSPIWP | Connected to external flash (data/write-protect signal). Not recommended as GPIO because itβs reserved for flash operations. | β‘ Flash |
| IO20 | USB_D+ | By default connected to the on-chip USB Serial/JTAG controller. Using it as general GPIO without reconfiguring IO MUX will interfere with USB functionality. | π USB |
Useful Links
Datasheets and resources for LilyGo T-Deck
LilyGo T-Deck Custom Pin Mapping
Pin configuration and GPIO mapping for LilyGo T-Deck
| Pin | Function | ESP Pin | I/O Type | Description |
|---|---|---|---|---|
| 1 | 3V3 | 3.3V | POWER OUTPUT | 3.3V power output |
| 2 | GND | GND | POWER GROUND | Ground connection |
| 3 | 5V | 5V | POWER INPUT | 5V power input for the board |
| 4 | IO1 | GPIO1 | BIDIRECTIONAL | GPIO, Touch, ADC |
| 5 | IO2 | GPIO2 | BIDIRECTIONAL | GPIO, Touch, ADC |
| 6 | IO3 | GPIO3 | BIDIRECTIONAL | GPIO, Touch, ADC |
| 7 | IO10 | SPI_CS | BIDIRECTIONAL | GPIO, SPI Chip Select |
| 8 | IO11 | SPI_D | BIDIRECTIONAL | GPIO, SPI Data |
| 9 | IO12 | SPI_CLK | BIDIRECTIONAL | GPIO, SPI Clock |
| 10 | IO13 | SPI_Q | BIDIRECTIONAL | GPIO, SPI Q |
| 11 | IO16 | ADC2_CH5 | BIDIRECTIONAL | GPIO, ADC |
| 12 | IO17 | U1_TXD | BIDIRECTIONAL | GPIO, UART TX |
| 13 | IO18 | U1_RXD | BIDIRECTIONAL | GPIO, UART RX |
| 14 | IO21 | GPIO21 | BIDIRECTIONAL | GPIO |
| 15 | IO38 | LCD_BL | OUTPUT | GPIO, LCD Backlight |
| 16 | IO39 | LCD_D0 | OUTPUT | GPIO, LCD Data 0 |
| 17 | IO40 | LCD_D1 | OUTPUT | GPIO, LCD Data 1 |
| 18 | IO41 | LCD_D2 | OUTPUT | GPIO, LCD Data 2 |
| 19 | IO42 | LCD_D3 | OUTPUT | GPIO, LCD Data 3 |
| 20 | IO45 | LCD_D4 | OUTPUT | GPIO, LCD Data 4 |
| 21 | IO46 | LCD_D5 | OUTPUT | GPIO, LCD Data 5 |
| 22 | IO47 | LCD_D6 | OUTPUT | GPIO, LCD Data 6 |
| 23 | IO48 | LCD_D7 | OUTPUT | GPIO, LCD Data 7 |
| 24 | IO5 | LCD_RES | OUTPUT | GPIO, LCD Reset |
| 25 | IO6 | LCD_CS | OUTPUT | GPIO, LCD Chip Select |
| 26 | IO7 | LCD_DC | OUTPUT | GPIO, LCD Data/Command |
| 27 | IO8 | LCD_WR | OUTPUT | GPIO, LCD Write |
| 28 | IO9 | LCD_RD | OUTPUT | GPIO, LCD Read |
| 29 | IO15 | LCD_POWER_ON | OUTPUT | GPIO, LCD Power Enable |
| 30 | IO4 | LCD_BAT_VOLT | INPUT | GPIO, Battery Voltage Sense |
| 31 | IO14 | BUTTON | INPUT | User Button |
| 32 | IO20 | MIC | INPUT | Microphone Input |
| 33 | IO22 | SPEAKER | OUTPUT | Speaker Output |
| 34 | IO23 | LOADER | OUTPUT | Flash Loader |
| 35 | IO24 | KEYBOARD | INPUT | Keyboard Input |
| 36 | IO25 | TRACKBALL | INPUT | Trackball Sensor |
| 37 | IO26 | GPS_RX | INPUT | GPS Module RX |
| 38 | IO27 | GPS_TX | OUTPUT | GPS Module TX |
| 39 | IO28 | LORA_CS | OUTPUT | LoRa Chip Select |
| 40 | IO29 | LORA_RST | OUTPUT | LoRa Reset |
| 41 | IO30 | LORA_IRQ | INPUT | LoRa Interrupt Request |
| 42 | IO31 | EXPANSION | BIDIRECTIONAL | Expansion GPIO |
| 43 | IO32 | EXTRA | BIDIRECTIONAL | Extra GPIO |
Pin Mappings
Complete pinout and GPIO mapping for LilyGo T-Deck
| Pin | Analog | Touch | PWM | Other |
|---|---|---|---|---|
| 0 | BUTTON_1 | |||
| 1 | A0 | T1 | PWM | |
| 2 | A1 | T2 | PWM | |
| 3 | A2 | T3 | PWM | |
| 4 | PWM | BAT_VOLT | ||
| 10 | A9 | T10 | PWM | SS |
| 11 | A10 | T11 | PWM | MOSI |
| 12 | A11 | T12 | PWM | SCK |
| 13 | A12 | T13 | PWM | MISO |
| 17 | A16 | PWM | SCL | |
| 18 | A17 | PWM | SDA | |
| 43 | PWM | TX | ||
| 44 | PWM | RX |
Default Tools & Configuration
Build and upload settings for LilyGo T-Deck
| Setting | Value |
|---|---|
| Bootloader tool | esptool_py |
| Uploader tool | esptool_py |
| Network uploader tool | esp_ota |
| Bootloader address | 0x0 |
| Flash mode | dio |
| Boot mode | qio |
| PSRAM type | opi |
| Maximum upload size | 3072 KB (3145728 bytes) |
| Maximum data size | 320 KB (327680 bytes) |
The LilyGo T-Deck uses esptool_py for uploads , esp_ota for OTA updates, and esptool_py bootloader at 0x0.
Flash mode: dio | Boot mode: qio | PSRAM: opi
Max sketch size: 3072 KB | Max data size: 320 KB
Similar Boards
Other development boards with ESP32S3 microcontroller

LilyGo T-Deck Plus
LilyGo T-Deck Plus development board is based on esp32s3 microcontroller and uses xtensa architecture.

LilyGo T-Embed CC1101
LilyGo T-Embed CC1101 development board is based on esp32s3 microcontroller and uses xtensa architecture.

TTGO T7 V1.4 Mini32
TTGO T7 V1.4 Mini32 development board is based on esp32 microcontroller and uses xtensa architecture.
