LILYGO TTGO T8 ESP32-S2 Board
Support for LILYGO TTGO T8 ESP32-S2 Board @author Gunar Schorcht gunar@schorcht.net
\section esp32s2_lilygo_ttgo_t8 LILYGO TTGO T8 ESP32-S2
Table of Contents
Overview
The Espressif LILYGO TTGO T8 ESP32-S2 (also known as LilyGo T-Display S2) is a ESP32-S2 board with an OLED Display and a TF Card slot.

The board has following main features:
| Feature | Support |
|---|---|
| ESP32-S2 SoC | yes |
| 4 MB Flash | yes |
| 8 MB QSPI RAM | yes |
| SD Card slot | yes |
| 32.768KHz Crystal | yes |
| OLED display ST77789 | yes |
Hardware
This section describes
- the MCU,
- the default board configuration,
- the board pinout.
MCU
Most features of the board are provided by the ESP32-S2 SoC. For detailed information about the ESP32-S2 SoC variant (family) and ESP32x SoCs, see section esp32_mcu_esp32 “ESP32 SoC Series”.
Board Configuration
The LILYGO TTGO T8 ESP32-S2 board uses the SPI_DEV(0) (FSPI) for the
OLED Display. The GPIOs of SPI_DEV(0) are therefore not broken out.
SPI_DEV(1) is used for the SD Card slot. These GPIOs are broken out and
can also be used by other devices.
The LILYGO TTGO T8 ESP32-S2 has a USB-to-UART bridge on board. The USB D-/D+
signals of the USB-C connector are connected via DIP switches either to this
USB-to-UART bridge (default) or to GPIO19/GPIO20 of the ESP32-S2. To use the
USB OTG interface of the ESP32-S2, the USB D-/D+ signals must be connected to
GPIO19 and GPIO20, see section esp32s2_lilygo_ttgo_t8_pinout “Pinout”.
To use the USB OTG interface also for the console in this case, either the
stdio_cdc_acm or the stdio_tinyusb_cdc_acm module must be enabled.
This is automatically the case if the USBUS or tinyUSB stack is used.
The LILYGO TTGO T8 ESP32-S2 has a 32.768 kHz crystal on the board, which is connected to GPIO15 and GPIO16 via DIP switches (default). The crystal can be switched off via the DIP switches so that GPIO15 and GPIO16 become available at the headers, see section esp32s2_lilygo_ttgo_t8_pinout “Pinout”.
The following table shows the default board configuration, which is sorted according to the defined functionality of GPIOs. This configuration can be overridden by esp32_application_specific_configurations “application-specific configurations”.
For detailed information about the peripheral configurations of ESP32-S2 boards, see section esp32_peripherals “Common Peripherals”.
Board Pinout
The following figure shows the pinout as configured by the board definition.

The corresponding board schematics can be found here
Flashing the Device
Flashing RIOT is quite easy. The board has an USB-C connector which is either connected to the USB-to-UART bridge (default) with a built-in reset/boot/flash logic or to the USB signals of the ESP32-S2 SoC. The flash method depends on the configuration of the DIP switches, see section esp32s2_lilygo_ttgo_t8_pinout “Pinout”.
USB-C connector is connected to the USB-to-UART bridge (default)
Just connect the board to your host computer and type using the programming port:
BOARD=esp32s2-liligo-ttgo-t8 make flash ...For detailed information about ESP32-S2 as well as configuring and compiling RIOT for ESP32-S2 boards, see esp32_riot.
USB-C connector is connected to the USB signals of the ESP32-S2 SoC
In this configuration the integrated USB-to-JTAG bridge can be used to flash
the board. The USB-to-JTAG bridge is automatically activated in the download
mode of the bootloader, provided that the eFuses JTAG_SEL_ENABLE and
DIS_USB_JTAG are not burned (see also section
esp32_jtag_interface_esp32s2 “JTAG Interface” strapping pin GPIO3).
For this purpose, connect the board to your host computer and enter the following command using the programming port:
USEMODULE=esp32s2-lilygo-ttgo-t8-usb BOARD=esp32s2-liligo-ttgo-t8 make flash ...If RIOT is already on the device, it should automatically reset the device and enter the bootloader download mode. If
- RIOT is not already on the device or
- automatic reset does not work or
- the device is stuck in some other mode,
the download mode has to be forced before by pressing the Reset (RST) button while holding the BOOT (BOT) button.