Waveshare ESP32-S3-DEV-KIT-NxR8 Wi-Fi Development Board – Pinout Diagram & Arduino Reference

Complete pinout reference for the Waveshare ESP32-S3-DEV-KIT-NXR8 ESP32-S3 Wi-Fi development board including Arduino pin and interface references.

ESP32-S3-DEV-KIT-NXR8 Pinout Featured Image by CIRCUITSTATE Electronics
Waveshare ESP32-S3-DEV-KIT-NxR8 Pinout Diagram & Reference

After the enormous success of the ESP32 microcontroller, Espressif released an upgraded version of it called the ESP32-S3. The new ESP32-S3 overcomes many shortcomings of the legacy ESP32. Today, there are hundreds of boards designs based around the ESP32-S3 in the market as well as in the open-source community. In this post we are going to share a beautiful vector pinout diagram for the ESP32-S3-DEV-KIT-NxR8 development board from Waveshare. The board is designed after the official ESP32-S3_DevKitC-1 from Espressif. So the pinouts you see here also applies to that. If you are new to the ESP32 Wi-Fi and Bluetooth SoC, we have a great tutorial to get you started.

Gettgin Started with Espressif ESP32 WiFi BLE SoC Using DOIT-ESP32-DevKit-V1 CIRCUITSTATE Electronics Featured Image

Getting Started with Espressif ESP32 Wi-Fi & Bluetooth SoC using DOIT-ESP32-DevKit-V1 Development Board

Learn how to use Espressif ESP32 SoC for Wi-Fi and Bluetooth development using DOIT ESP32 DevKit V1 development board. Use Arduino, ESP-IDF, PlatformIO and VS Code for software development.

Pinout Diagram

Filename: Waveshare-ESP32-S3-DEV-KIT-NXR8-Pinout-R0.1-CIRCUITSTATE-Electronics-1.pdf
Latest Revision: R0.1, 21-06-2025
Designed by: Vishnu Mohanan
License: CC-BY-SA 4.0

Pinouts are based on the latest documentation from Espressif. While we try our best to be accurate and up-to-date here, we can not guarantee correctness. Please also cross check the pin assignments with that from the official documentation. If you found any errors here, please let us know in the comments and will update our designs.

PNG

ESP32-S3-DEV-KIT-NxR8-Pinout Diagram revision R0.1 by CIRCUITSTATE Electronics
Click for a high-resolution image

The ESP32-S3-DEV-KIT-NxR8 from Waveshare comes in two variants and 4 SKUs.

  1. ESP32-S3-DEV-KIT-N8R8 – Uses ESP32-S3-WROOM-1 module with 8 MB Flash memory and 8 MB PSRAM.
  2. ESP32-S3-DEV-KIT-N16R8 – Uses ESP32-S3-WROOM-1 module with 16 MB Flash memory and 8 MB PSRAM.
  3. Both of the above with and without soldered pin headers.

Our pinout is applicable for all of these. Since these boards did not come with an official pin numbering, there is no consensus over where to start counting from. So to make it easier for you to identify the pins by simply counting, we have numbered each row of pins on either side from 1 to 22. But you should not rely on the pin numbering alone to identify the pins. Always use the GPIO number to identify the pins and their functions.

Following are the notes added to the pinout diagram.

  • GPIOs 22~25 are not available from the chip.
  • TX0 and RX0 can be accessed as Serial0 in Arduino.
  • USB-CDC can be accessed as Serial in Arduino.
  • Both Serial and Serial0 can be used for programming.
  • All GPIO pins support PWM and interrupts.
  • Built-in RGB LED is connected to GPIO38.
  • Arduino pin references are as per ESP32-S3_DevKitC-1 definition.
  • All touch input pins can be used as T1~T14 in Arduino.
  • Most peripheral functions can be assigned to any GPIO pins, thanks to the IO MUX.

PDF

PDF preview may not load on mobile devices. Click the link to open an interactive preview, or download it directly.

Pinout Reference

Power & Control

There are two positive power supply input pins and one control pin on the DOIT ESP32 DevKit V1.

Pin NameFunction
5VThe input of the 3.3V positive voltage regulator. Supply voltage in the range of 4 to 12V.
3.3VOutput from the voltage regulator. You can also supply 3.3V to this pin if you have one. But do not supply both 5V and 3.3V together.
GNDGround (Negative) supply pins.
RSTThis is the reset pin. Connecting this pin to GND will reset the ESP32-S3. This pin is normally pulled-up. The RESET button on the board will pull it LOW when you press it.
ESP32 power supply and reset pins

GPIO

There are 45 GPIO pins available on the ESP32-S3 chip. For comparison, the legacy ESP32 only had 34 GPIO pins. The GPIO pins are named from 0 to 48. But doesn’t that make the count 49? No, because GPIOs 22, 23, 24, and 25 are not accessible. So you will not find these pins in the table below. Also, not all of these pins are broken from the module or the board. But it is good to have a reference to know what is what. Below is the default ESP32-S3 GPIO function matrix taken from the official documentation. Note that many of the peripheral functions can be mapped to any of the GPIO pins using the GPIO Mux block of the ESP32.

#PinGPIO NameF0TypeF1TypeF2TypeF3TypeF4Type
5GPIO0GPIO0I/O/TGPIO0I/O/T
6GPIO1GPIO1I/O/TGPIO1I/O/T
7GPIO2GPIO2I/O/TGPIO2I/O/T
8GPIO3GPIO3I/O/TGPIO3I/O/T
9GPIO4GPIO4I/O/TGPIO4I/O/T
10GPIO5GPIO5I/O/TGPIO5I/O/T
11GPIO6GPIO6I/O/TGPI06I/O/T
12GPIO7GPIO7I/O/TGPIO7I/O/T
13GPIO8GPIO8I/O/TGPIO8I/O/TSUBSPICS1O/T
14GPIO9GPIO9I/O/TGPIO9I/O/TSUBSPIHDI1/O/TFSPIHDI1/O/T
15GPIO10GPIO10I/O/TGPIO10I/O/TFSPIIO4I1/O/TSUBSPICS0O/TFSPICS0I1/O/T
16GPIO11GPIO11I/O/TGPIO11I/O/TFSPIIO5I1/O/TSUBSPIDI1/O/TFSPIDI1/O/T
17GPIO12GPIO12I/O/TGPIO12I/O/TFSPIIO6I1/O/TSUBSPICLKO/TFSPICLKI1/O/T
18GPIO13GPIO13I/O/TGPIO13I/O/TFSPIIO7I1/O/TSUBSPIQI1/O/TFSPIQI1/O/T
19GPIO14GPIO14I/O/TGPIO14I/O/TFSPIDQSO/TSUBSPIWPI1/O/TFSPIWPI1/O/T
21GPIO15GPIO15I/O/TGPIO15I/O/TU0RTSO
22GPIO16GPIO16I/O/TGPIO16I/O/TU0CTSI1
23GPIO17GPIO17I/O/TGPIO17I/O/TU1TXDO
24GPIO18GPIO18I/O/TGPIO18I/O/TU1RXDI1CLK_OUT3O
25GPIO19GPIO19I/O/TGPIO19I/O/TU1RTSOCLK_OUT2O
26GPIO20GPIO20I/O/TGPIO20I/O/TU1CTSI1CLK_OUT1O
27GPIO21GPIO21I/O/TGPIO21I/O/T
28GPIO26SPICS1O/TGPIO26I/O/T
30GPIO27SPIHDI1/O/TGPIO27I/O/T
31GPIO28SPIWPI1/O/TGPIO28I/O/T
32GPIO29SPICS0O/TGPIO29I/O/T
33GPIO30SPICLKO/TGPIO30I/O/T
34GPIO31SPIQI1/O/TGPIO31I/O/T
35GPIO32SPIDI1/O/TGPIO32I/O/T
38GPIO33GPIO33I/O/TGPIO33I/O/TFSPIHDI1/O/TSUBSPIHDI1/O/TSPIIO4I1/O/T
39GPIO34GPIO34I/O/TGPIO34I/O/TFSPICS0I1/O/TSUBSPICS0O/TSPIIO5I1/O/T
40GPIO35GPIO35I/O/TGPIO35I/O/TFSPIDI1/O/TSUBSPIDI1/O/TSPIIO6I1/O/T
41GPIO36GPIO36I/O/TGPIO36I/O/TFSPICLKI1/O/TSUBSPICLKO/TSPIIO7I1/O/T
42GPIO37GPIO37I/O/TGPIO37I/O/TFSPIQI1/O/TSUBSPIQI1/O/TSPIDQSIO/O/T
43GPIO38GPIO38I/O/TGPIO38I/O/TFSPIWPI1/O/TSUBSPIWPI1/O/T
44GPIO39MTCKI1GPIO39I/O/TCLK_OUT3OSUBSPICS1O/T
45GPIO40MTDOO/TGPIO40I/O/TCLK_OUT2O
47GPIO41MTDII1GPIO41I/O/TCLK_OUT1O
48GPIO42MTMSI1GPIO42I/O/T
49GPIO43U0TXDOGPIO43I/O/TCLK_OUT1O
50GPIO44U0RXDI1GPIO44I/O/TCLK_OUT2O
51GPIO45GPIO45I/O/TGPIO45I/O/T
52GPIO46GPIO46I/O/TGPIO46I/O/T
37GPIO47SPI CLK_P_DIFFO/TGPIO47I/O/TSUBSPI CLK_P_DIFFO/T
36GPIO48SPI CLK_N_DIFFO/TGPIO48I/O/TSUBSPI CLK_N_DIFFO/T
ESP32-S3 GPIO function matrix

Each IO MUX function (Fn, n = 0 ~ 4) is associated with a type. The description of type is as follows:

  • I – input. O – output. T – high impedance.
  • I1 – input; if the pin is assigned a function other than Fn, the input signal of Fn is always 1.
  • I0 – input; if the pin is assigned a function other than Fn, the input signal of Fn is always 0.

Following is the consolidated pinout table of the ESP32-S3 taken from the official datasheet.

ESP32-S3-Consolidated-Pinout-Table-CIRCUITSTATE-Electronics-1
ESP32-S3 consolidated pinout table

In the Arduino environment, you can invoke the GPIO pins just using their respective numbers from 0 to 48. Below is the list of pins you can use safely.

Strapping

Every ESP32-S3 chip has a bootloader inside the Read-Only-Memory (ROM) which is a program that monitors the state of the chip when you power it on. The bootloader can check for different inputs and put the chip into different operating modes. The pins monitored by the bootloader are called strapping pins. There are four strapping pins in the ESP32-S3. These strapping pins exhibit other behaviours during the booting process. So you should be careful not to interfere with the pins. Following is the list of strapping pins and their default states. It is recommended to not use these in normal situations.

Strapping PinDefault ConfigurationBit Value
GPIO0Weak pull-up1
GPIO3Floating
GPIO45Weak pull-down0
GPIO46Weak pull-down0
ESP32-S3 strapping pin default states

Chip Boot Mode Control

GPIO0 and GPIO46 together control the boot mode of the ESP32-S3. This tell the microcontroller where to load the firmware from.

Boot ModeGPIO0GPIO46
SPI Boot1Any
Joint Download Boot00
ESP32-S3 boot mode control table

SPI Boot is the default mode since GPIO0 pin is pulled-up by default. This means, the firmware will be loaded from the SPI Flash memory by default. Joint Download Boot mode supports the following download methods:

  • USB Download Boot:
    – USB-Serial-JTAG Download Boot
    – USB-OTG Download Boot
  • UART Download Boot

VDD_SPI Voltage Control

The GPIO45 controls the VDD_SPI voltage for the SPI Flash interface. This allows you to use flash chips with different operating voltages. The state of EFUSE_VDD_SPI_FORCE and EFUSE_VDD_SPI_TIEH efuses also determines the voltage configuration. Please check the section 3.2 VDD_SPI Voltage Control in the ESP32-S3 datasheet for more information.

VDD_SPI Power SourceVoltageEFUSE_VDD_SPI_FORCEGPI045EFUSE_VDD_SPI_TIEH
VDD3P3_RTC via RSPI3.3 V00Ignored
Flash Voltage Regulator1.8 V1
Flash Voltage Regulator1.8 V1Ignored0
VDD3P3_RTC via RSPI3.3 V1

ROM Messages Printing Control

During boot process the messages by the ROM code can be printed to:

  • (Default) UART0 and USB Serial/JTAG controller
  • USB Serial/JTAG controller
  • UART0

The ROM messages printing to UART or USB Serial/JTAG controller can be respectively disabled by configuring
registers and eFuse. In the default configuration, GPIO46 is pulled-down and the boot messages are enabled. To disable the messages, simply pull the pin HIGH. For more information, please see the ESP32-S3 Technical Reference Manual > Chapter Chip Boot Control.

JTAG Signal Source Control

GPIO3 controls the source of JTAG signals during the early boot process. This GPIO is used together with
EFUSE_DIS_PAD_JTAG, EFUSE_DIS_USB_JTAG, and EFUSE_STRAP_JTAG_SEL. Since the default state of the pin is floating, you can configure this manually to select the JTAG source. For more information, please see the ESP32-S3 Technical Reference Manual > Chapter Chip Boot Control.

JTAG Signal SourceEFUSE_DIS_PAD_JTAGEFUSE_DIS_USB_JTAGEFUSE_STRAP_JTAG_SELGPI03
USB Serial/
JTAG Controller
000Ignored
0011
10IgnoredIgnored
JTAG Pins0010
01IgnoredIgnored
JTAG is disabled11IgnoredIgnored

Pull-Up & Pull-Down

All GPIO pins support internal pull-up and pull-down configurations, as well as a high-impedance state. This makes the pin tristate compatible.

LED

The onboard WS2812B RGB LED is connected to GPIO38. Since this is serial RGB LED, you will need to use a compatible library to drive it. You can use the Adafruit Neopixel library for this.

USB

ESP32-S3 has a single USB transceiver that conforms to the USB 2.0 standard. It can support both Host and Device modes and therefore also supports USB-On-The-Go (USB-OTG). The maximum data rate is 12 Mbps. The USB pins of the ESP32-S3 are connected to the CH334F 4-port hub IC in the ESP32-S3-DEV-KIT-NxR8. When you connect the board to the computer, an interface with the name USB JTAG/serial debug unit will show up. This is the native USB interface.

GPIOUSB
GPIO20D+
GPIO19D-
ESP32-S3 USB data pins

UART

ESP32 has three UARTs inside (asynchronous only) with hardware and software flow control. The UARTs are named UART0, UART1, and UART2. In the ESP32-S3-DEV-KIT-NxR8, the UART0 is connected to the CH343P USB-UART chip, which in turn is connected to the CH334F 4-port USB hub IC. Therefore both the native USB interface as well as the UART0 port will be available through a single USB-C receptacle. Both the UART0 and the USB-CDC can be used for debugging and programming.

In the Arduino framework, you can access the UART0 as Serial0 and the native USB as Serial. Remapping of the UART pins can be done by passing the new pins to the begin() function. UART1 is mapped to Serial1 while UART2 to Serial2 but without any explicit pin assignments. All UART functions can be assigned to any GPIO pin. The default ones are listed below.

Arduino InstanceUARTRX PinTX PinCTSRTS
Serial0UART044 (RX0)43 (TX0)1615
Serial1UART118 (RX1)17 (TX1)2019
Serial2UART2NANA
ESP32-S3 Arduino Serial UART pins

SPI

There are four SPI peripheral blocks inside the ESP32-S3. SPI0 and SPI1 have special functions including communicating with the flash memory and therefore we don’t use them. SPI2 (GP-SPI2) and SPI3 (GP-SPI3) are general-purpose SPI interfaces called FSPI and HSPI respectively. Similar to the UART, SPI functions can be mapped to any GPIO pin. Below we have the default pins and their respective Arduino instances. Only one SPI is defined in the Arduino framework, but you can easily add the second one.

Arduino InstanceSPICOPICIPOSCKCS
SPI2FSPI
SPI3HSPI11131210
ESP32-S3 Arduino SPI pins

For some reason, the Arduino environment and the ESP32 HAL driver assign HSPI’s default pins to VSPI.

ADC

Analog to Digital Converters (ADC) are used to convert analog voltages to discrete digital values. There are two 12-bit SAR ADCs available in the ESP32-S3 with 20 input channels. Following is the list of ADC channels and their Arduino instances.

Arduino PinADC ChannelGPIOUsable?
A0ADC1_01YES
A1ADC1_12YES
A2ADC1_23YES
A3ADC1_34YES
A4ADC1_45YES
A5ADC1_56YES
A6ADC1_67YES
A7ADC1_78YES
A8ADC1_89YES
A9ADC1_910YES
A10ADC2_011YES
A11ADC2_112YES
A12ADC2_213YES
A13ADC2_314YES
A14ADC2_415YES
A15ADC2_516YES
A16ADC2_617YES
A17ADC2_718YES
A18ADC2_819NO (USB D-)
A19ADC2_920NO (USB D+)
ESP32-S3 Arduino ADC pins

Touch Sensor

There are 14 capacitive touch channels in the ESP3-S3.

Arduino PinTouch ChannelGPIOUsable?
T1TOUCH11YES
T2TOUCH22YES
T3TOUCH33YES
T4TOUCH44YES
T5TOUCH55YES
T6TOUCH66YES
T7TOUCH77YES
T8TOUCH88YES
T9TOUCH99YES
T10TOUCH1010YES
T11TOUCH1111YES
T12TOUCH1212YES
T13TOUCH1313YES
T14TOUCH1414YES
ESP32-S3 Arduino Touch Sensor pins

I2C

There are two I2C peripherals inside the ESP32-S3. I2C is also called as Two Wire Interface (TWI). Similar to UART and SPI, I2C pins can also be mapped to any GPIO pin. There are two I2C interfaces defined for Arduino; Wire (I2C0) and Wire1 (I2C1) but only Wire has the pins defined. You need to manually set the pins for Wire1.

Arduino InstanceI2CSDASCL
WireI2C089
Wire1I2C1
ESP32 Arduino I2C pins

PWM

ESP32 supports up to 8 independent PWM (Pulse Width Modulation) channels with 14-bit precision. PWM outputs can be mapped to any GPIO pin that supports output mode.

I2S

Inter-Integrated Sound (I2S) is a digital audio interface supported by the ESP32. I2S pin functions can also be mapped to any GPIO pins.

CAN/TWAI

Controller Area Network (CAN) or Two Wire Automotive Interface (TWAI) is a two-wire communication interface that mainly finds application in the automotive industry. CAN functions can be mapped to any GPIO pins. We have a complete tutorial for using CAN interface with ESP32.

Featured image of CAN bus tutorial for ESP32 microcontroller board using Arduino

What is CAN Bus & How to use CAN Interface with ESP32 and Arduino

Learn the basics of CAN bus interface and learn how to make two ESP32 boards communicate through CAN bus using Arduino and with the help of TJA1051 CAN transceivers (CJMCU-1051).

JTAG

JTAG (Joint Test Action Group) is a standard interface used for programming and debugging microcontrollers. ESP32 supports JTAG programming and debugging. JTAG has four main signals and an optional reset line. You can use supported debuggers like the ESP-Prog to debug your ESP chips.

Pin NameGPIOFunction
MTDI41Test Data In
MTCK39Test Clock
MTMS42Test Mode Select
MTDO40Test Data Out
ESP32-S3 JTAG pins

If you want to learn more about ESP32 debugging through the JTAG interface using the ESP-Prog, we have a complete tutorial for you.

Debugging ESP32 Arduino and ESP-IDF Projects using ESP-Prog and PlatformIO CIRCUITSTATE Electronics Featured Image

Debugging ESP32 Arduino & ESP-IDF Projects using ESP-Prog and PlatformIO

Learn how to use the official Espressif ESP-Prog to debug your ESP32 Arduino and ESP-IDF projects with the help of PlatformIO.

External Interrupts

ESP32-S3 supports external interrupts on all GPIO pins. The interrupt types can be level-triggered, edge-triggered, or state change.

  1. ESP32-S3 – Product Page
  2. ESP32-S3 Technical Reference Manual [PDF]
  3. ESP32-S3 Datasheet [PDF]
  4. ESP32-S3 – ESP-IDF Programming Guide
  5. ESP32-S3 Bootloader and Strapping Pins
  6. Introduction to the ESP-Prog Board
  7. Waveshare ESP32-S3-DEV-KIT-N8R8 – Wiki
  8. Waveshare ESP32-S3-DEV-KIT-N8R8 – Product Page
Share to your friends
Vishnu Mohanan

Vishnu Mohanan

Founder and CEO at CIRCUITSTATE Electronics

Articles: 101

Leave a Reply

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

The reCAPTCHA verification period has expired. Please reload the page.