LILYGO T-Deck is a pocket device with the ESP32-S3 chip, a BlackBerry-style keyboard, a 2.8″ display, a trackball and a LoRa SX1262 radio. It is used mainly for Meshtastic and MeshCore – messaging without cellular coverage.
Only a Grove connector with UART is exposed. Most pins are taken by the display, keyboard, LoRa and audio – they are listed in the table below.
Specifications
- ESP32-S3: 2 cores up to 240 MHz, 16 MB flash, 8 MB PSRAM
- Wi-Fi, Bluetooth LE, LoRa SX1262 (868 MHz)
- 2.8″ 320 × 240 ST7789 display (SPI), GT911 touch (depending on the unit)
- keyboard with its own ESP32-C3 (I2C 0x55), trackball
- ES7210 microphone, speaker (MAX98357A), microSD slot
- Grove connector (UART0), USB-C (native USB), battery connector
- 100 × 68 × 11 mm
The diagram shows the back of the board. The T-Deck Plus additionally has built-in GPS on the same pins as the Grove connector, so Grove is not free on it.
The peripherals (LoRa, SD card, keyboard, trackball, microphone, backlight) are powered by a rail switched on by GPIO10 – set it to logic 1 right at the start of your program. The Grove connector is powered from the always-on 3.3 V.
Trackball directions according to the LILYGO and Meshtastic examples: up GPIO3, down GPIO15, left GPIO1, right GPIO2 (the image on the LILYGO wiki shows them differently).
Pinout and pin table
Hover over a pin in the diagram or a table row; use the filter to highlight a bus. You can download the pinout as PNG or SVG.
| Pin | Name | Direction | UART | I2C | SPI | ADC | Note |
|---|---|---|---|---|---|---|---|
| Grove (UART) 1 | GND | – | |||||
| Grove (UART) 2 | 3V3 | output | Powered from the VDD3V3 rail, which is always on – unlike the peripherals on the V3V rail (switched by GPIO10). | ||||
| Grove (UART) 3 | GPIO43 | input/output | TX | UART0 TX. After reset the bootloader prints its log here (115200 Bd); with USB CDC On Boot disabled, Arduino Serial goes here too. On the T-Deck Plus the connector is taken by the built-in GPS. | |||
| Grove (UART) 4 | GPIO44 | input/output | RX | UART0 RX. Used by the GPS on the T-Deck Plus. | |||
| J1 – keyboard (ESP32-C3) 1 | V3V | output | Switched 3.3 V rail (enabled by GPIO10) | ||||
| J1 – keyboard (ESP32-C3) 2 | GND | – | |||||
| J1 – keyboard (ESP32-C3) 3 | C3_RST | – | ESP32-C3 keyboard controller reset | ||||
| J1 – keyboard (ESP32-C3) 4 | C3_IO9 | – | Connector J1 is used to flash firmware to the ESP32-C3 keyboard controller (I2C 0x55): connect C3_IO9 to ground, reset (C3_RST) and upload via C3_RX/C3_TX with a 3.3 V USB-UART converter. These pins are not directly connected to the ESP32-S3. | ||||
| J1 – keyboard (ESP32-C3) 5 | C3_RX | – | UART0 RX of the keyboard controller (C3 GPIO20) | ||||
| J1 – keyboard (ESP32-C3) 6 | C3_TX | – | UART0 TX of the keyboard controller (C3 GPIO21) |
Pins used on the board
These chip pins are used by parts on the board and are not broken out:
| Pin | Function on the board |
|---|---|
| GPIO10 | POWER_ON – switches power to the V3V peripherals (LoRa, SD, trackball, keyboard, microphone, backlight); must be logic 1 |
| GPIO0 | Trackball click and BOOT button (strapping pin) |
| GPIO1, 2, 3, 15 | Trackball – left, right, up, down (Hall sensors) |
| GPIO4 | Battery voltage via 100k/100k divider (×2) |
| GPIO18, 8 | I2C SDA, SCL – GT911 touch (0x5D), ESP32-C3 keyboard (0x55), ES7210 microphone (0x40) |
| GPIO46 | Keyboard interrupt (C3_INT) – strapping pin; a pull-up on the C3 side can block download mode |
| GPIO16 | GT911 touch interrupt |
| GPIO40, 41, 38 | SPI SCK, MOSI, MISO – displej, karta SD a LoRa |
| GPIO12, 11 | Displej ST7789 – CS, DC |
| GPIO42 | Display backlight (AW9364, 16 steps set by pulse count, not PWM) |
| GPIO39 | Karta microSD – CS |
| GPIO9, 13, 17, 45 | LoRa SX1262 – CS, BUSY, RESET, DIO1 |
| GPIO5, 7, 6 | Reproduktor MAX98357A (I2S) – WS, BCK, DOUT |
| GPIO14, 21, 47, 48 | Mikrofon ES7210 (I2S) – DOUT, LRCK, SCLK, MCLK |
| GPIO19, 20 | USB D− and D+ (native USB, USB-C) |
| GPIO35–37 | Octal PSRAM modulu |
What to watch out for
- The GPIO are not 5V tolerant.
- Without GPIO10 at logic 1, LoRa, the SD card and the keyboard don’t work.
- The bootloader log is output through the Grove connector (GPIO43) after every reset.
- GPIO46 (keyboard interrupt) can block download mode – holding the trackball (GPIO0) and pressing RST helps, or disconnect the pull-up as described in issue #62.
- SPI is shared by the display, the SD card and LoRa – keep unused CS lines at logic 1.
T-Deck on chiptron.eu/
Projects and guides on chiptron.eu/:
- MeshCore – setup, firmware and a network map of the Czech Republic (T-Deck among the supported hardware)
More pinouts
See all pinouts on the Pinouts page.