LilyGo T-Watch S3

A smartwatch development platform based on ESP32-S3, suitable for wearable applications and prototyping.

Micro-USB Native USB
LilyGo T-Watch S3 board
51.5 × 42 mm
ESP32-S3
MCU
240MHz
clock
16MB
flash
512KB
SRAM
-
GPIO
BLE 5.0+ WiFi
radio
On this page

Pinout

4 pins
View:
LilyGo T-Watch S3 pinout diagram
PinGPIOLabelsStatusCapabilitiesNotes
1-5VVBUSusb-USB VBUS (5V) on the Micro-USB port. Charging and programming only; LilyGo states it has no external power supply function, so it cannot source 5V out.
2-GNDground-Ground, available on the Micro-USB port.
320D+USB_D+usb-Native USB D+ on the Micro-USB port (ESP32-S3 built-in USB, fixed to GPIO20).
419D-USB_D-usb-Native USB D- on the Micro-USB port (ESP32-S3 built-in USB, fixed to GPIO19).

Only if you know the tricks

wired to flash or USB - expect a fight
PinLabelWhat to knowRole
D+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
D-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
These are recommendations, not hard rules - with the right pull-ups, timing and boot-state awareness most pins can be made to work. When in doubt, start green.
Pinout notes The LilyGo T-Watch S3 pinout brings out 4 pins - 0 usable GPIO alongside the GND power rails.

The LilyGo T-Watch S3 pinout brings out 4 pins - 0 usable GPIO alongside the GND power rails.

Getting started

flash your first firmware in ~2 minutes
Tool:
1
Connect over USB
Native USB - shows up as a port right away, no driver needed. Not detected? Hold BOOT while plugging in.
2
Match & flash
Set the Tools options shown, then click Upload.
3
Verify it runs
GPIO8 toggles - wire an LED and resistor to it, or change the pin to your board's own LED.
Set these in Tools · leave everything else at default
Arduino IDE 2.x - Tools Copy
Board: "ESP32S3 Dev Module"
USB CDC On Boot: "Enabled"
Flash Size: "16MB (128Mb)"
Flash Mode: "DIO"
PSRAM: "OPI PSRAM"
Partition Scheme: "16M Flash (3MB APP/9.9MB FATFS)" (default)
Upload Speed: "921600"
▸ every other Tools option - leave at default
Board: ESP32S3 Dev Module
USB CDC On Boot: Enabled
Flash Size: 16MB (128Mb)
Flash Mode: DIO
PSRAM: OPI PSRAM
Partition Scheme: 16M Flash (3MB APP/9.9MB FATFS)
Upload Speed: 921600
Find it: Tools ▸ Board ▸ ESP32 Arduino ▸ ESP32S3 Dev Module
blink.ino Copy
// toggle GPIO8 - wire an LED and resistor to it
void setup() {
  pinMode(8, OUTPUT);
}
void loop() {
  digitalWrite(8, HIGH); delay(500);
  digitalWrite(8, LOW);  delay(500);
}
board to selectesp32-s3-devkitc-1⧉ copy
platformio.ini Copy
[env:lilygo_t_watch_s3]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
monitor_speed = 115200
upload_speed = 921600
board_build.arduino.memory_type = qio_opi
build_flags = -DBOARD_HAS_PSRAM
Find it: PlatformIO Home ▸ Boards, search esp32-s3-devkitc-1 - or type it after board =.
board to selectesp32-s3-devkitc-1⧉ copy
device.yaml Copy
esp32:
  board: esp32-s3-devkitc-1
  variant: esp32s3
  framework:
    type: esp-idf
psram:
  mode: octal
  speed: 80MHz

# blink - GPIO8
output:
  - platform: gpio
    pin: 8
    id: led_out
light:
  - platform: binary
    name: "LED"
    output: led_out
Find it: search ESPHome's board list for esp32-s3-devkitc-1 (same ids as PlatformIO).
esptool doesn't pick board settings - a prebuilt .bin already has them baked in. This is just the raw flash command.
terminal Copy
esptool.py --chip esp32s3 --port /dev/ttyACM0 \
  --baud 921600 write_flash 0x0 firmware.bin
--port = your /dev/tty* (macOS/Linux) or COMx (Windows).
Build details: sketch space 3145728 B · data 327680 B · DIO

Specifications

ESP32-S3 · 51.5 × 42 mm · vs other ESP32 chips →
Compute
MCU
ESP32-S3
Clock
240 MHz
SRAM · Flash
512 KB · 16MB · 8MB (OPI) PSRAM
Radio
Wi-Fi
802.11 b/g/n
Bluetooth
5.0 LE
Antenna
PCB
I/O
GPIO · ADC
- · Two 12-bit, 20 Channels
UART · I²C · SPI
3 · 2 · 2
PWM
8 channels
Power
USB
Micro-USB
Serial
Native (CDC)
Boot address
0x0
Electrical
Input
5V USB
Consumption
-
Regulator
-
Display
Screen
IPS LCD · 1.54" · 240x240
Driver
ST7789V
Touch
FT6336
Flashing
Upload · OTA
esptool_py · esp_ota
Flash · Boot mode
DIO · QIO
Sketch · Data
3 MB · 320 KB
42 mm51.5 mm
51.5 × 42 mm
The LilyGo T-Watch S3 uses esptool_py for firmware uploads, esp_ota for over-the-air (OTA) updates. Flash mode is DIO with QIO boot mode. The maximum sketch size is 3 MB with 320 KB available for data.

About this board

At its core is the ESP32-S3 - a dual-core Xtensa with vector extensions suited to AI workloads.

Expect to pay about $42.98 - above the ~$29 typical for ESP32-S3 boards.

Onboard you'll find 8MB (OPI) PSRAM, an IPS LCD 1.54" 240x240 display with touch, LoRa (SX1262), a microphone (SPM1423), a speaker, an amplifier (MAX98357A), a PCF8563 RTC, a motion sensor (BMA423) and battery charging (AXP2101).

It flashes over native USB - no serial-converter driver needed, which isn't a given among ESP32-S3 boards.


The LilyGo T-Watch S3 is an ESP32-S3-powered smartwatch development kit designed for wearable applications. It features a 1.54-inch IPS LCD touch screen, a built-in rechargeable battery, and a variety of sensors, making it perfect for smart wearable projects.

With integrated WiFi 802.11 b/g/n and Bluetooth 5 (LE), it enables seamless wireless connectivity for IoT applications.

Equipped with 8MB PSRAM and 16MB Flash, the T-Watch S3 is ideal for running complex applications, including graphical interfaces and real-time monitoring.

  • DRV2605 haptic motor driver with vibration feedback
  • Built-in rechargeable Li-Po battery
  • LoRa frequency variants available (433 / 868 / 915 MHz)

Where to buy

prices are typical street prices
LilyGo T-Watch S3
LilyGo T-Watch S3
$42.98per unit, typical

Resources

Similar boards