ESP32-S3 SuperMini Pinout, Safe GPIOs, USB and PSRAM

ESP32-S3 SuperMini pinout guide covering safe GPIOs, strapping pins, native USB, onboard RGB LED, 4MB flash, 2MB QSPI PSRAM, Arduino settings, ESPHome setup and upload recovery.

The ESP32-S3 SuperMini is one of the smallest high-performance ESP32 boards you can buy, but it is also one of the easiest to configure incorrectly. The common version uses an ESP32-S3FH4R2 with dual 240 MHz cores, 4 MB embedded flash and 2 MB embedded PSRAM, yet many sellers barely mention the PSRAM and generic Arduino settings often leave it disabled.

The other trap is the name. ESP32-S3 SuperMini” is not an official Espressif board standard. Several factories produce similar boards, and flash/PSRAM, LED wiring, battery circuitry and even exposed pads can vary. This guide focuses on the common SuperMini/HW-747-style board using the ESP32-S3FH4R2, while showing you how to verify your own board before relying on the pinout.

For the broader family comparison, see our ESP32 SuperMini C3 vs C6 vs S3 comparison.

ESP32-S3 SuperMini Specifications

FeatureCommon ESP32-S3 SuperMini
MCUESP32-S3FH4R2 on many current boards
CPUDual-core Xtensa LX7
Maximum clock240 MHz
Internal SRAM512 KB
Flash4 MB embedded flash
PSRAM2 MB embedded quad-SPI PSRAM
Wi-Fi2.4 GHz 802.11 b/g/n
BluetoothBluetooth LE 5
USBNative USB Serial/JTAG + USB OTG capability
Typical sizeAbout 22.5 × 18 mm
Onboard RGB LEDUsually WS2812 on GPIO48
ProgrammingUSB-C, native USB
Battery padsPresent on some common HW-747-style versions

The exact chip marking matters. If your board says something other than ESP32-S3FH4R2, do not assume the same PSRAM mode or memory size.

How to Read ESP32-S3FH4R2

Espressif’s part number tells you exactly what is inside:

ESP32-S3 F H 4 R2
             │ │
             │ └─ 2 MB PSRAM
             └─── 4 MB flash

Espressif documents the R2 configuration as 2 MB quad-SPI PSRAM. That is why the correct Arduino memory setting is QSPI PSRAM rather than OPI/Octal PSRAM.

This distinction matters. Selecting octal PSRAM on a 2 MB R2 device can make PSRAM fail to initialise or cause boot problems.

Common SuperMini Pinout

The common board exposes a large number of castellated/header pins despite its tiny footprint. Typical accessible pins include:

Board labelESP32-S3 GPIONotes
TXGPIO43UART0 TX / boot console
RXGPIO44UART0 RX
IO1GPIO1ADC-capable, good general GPIO
IO2GPIO2ADC-capable, good general GPIO
IO3GPIO3Strapping pin
IO4–IO8GPIO4–8ADC-capable general GPIOs
IO9–IO14GPIO9–14General GPIO; alternate FSPI functions
IO15–IO18GPIO15–18General GPIO
IO21GPIO21General GPIO
IO33–IO38GPIO33–38Usable on the common quad-PSRAM FH4R2 board; verify other S3 variants
IO39–IO42GPIO39–42Default external JTAG pins
IO45GPIO45Strapping pin: VDD_SPI voltage
IO46GPIO46Strapping pin: boot/ROM messages
IO47GPIO47General GPIO on common 3.3 V configurations
IO48GPIO48Usually shared with onboard WS2812 RGB LED

Because SuperMini is a generic third-party format, always compare the silkscreen and chip marking on your board with this table before designing a carrier PCB.

Safest GPIOs to Start With

On the common ESP32-S3FH4R2 SuperMini, these are good first choices for ordinary digital sensors, switches and outputs:

GPIO1
GPIO2
GPIO4
GPIO5
GPIO6
GPIO7
GPIO8
GPIO15
GPIO16
GPIO17
GPIO18
GPIO21

GPIO33–38 are also usable on the common quad-PSRAM FH4R2 configuration, but this advice must not be copied blindly to every ESP32-S3 board. Espressif uses GPIO33–37 as extra memory data/DQS lines on octal-PSRAM configurations such as 8 MB PSRAM variants.

If you want the most portable wiring between different S3 boards, use GPIO1, 2, 4–8, 15–18 and 21 first.

The Four ESP32-S3 Strapping Pins

Espressif defines four S3 strapping pins:

GPIO0
GPIO3
GPIO45
GPIO46

They are sampled during reset and can operate as normal GPIOs afterwards, but external circuitry must not force the wrong level during boot.

GPIOBoot functionPractical advice
GPIO0Boot/download modeNormally connected to BOOT button; avoid permanent loading
GPIO3JTAG signal-source selectionUse only if external hardware is high-impedance at reset
GPIO45VDD_SPI voltage selectionAvoid as a first-choice GPIO
GPIO46Boot mode / ROM print configurationAvoid strong external pulls during reset

GPIO45 deserves particular respect because it participates in the flash/PSRAM supply-voltage selection. A random pull-up on this pin can produce exactly the sort of boot failure that looks like “bad PSRAM settings”.

GPIO19 and GPIO20 Are Native USB

At ESP32-S3 chip level:

GPIO19 = USB D-
GPIO20 = USB D+

The common SuperMini routes these to the USB-C connector, so they are not normal free header GPIOs.

Espressif’s S3 contains two USB controllers:

  • USB Serial/JTAG for flashing, CDC serial and JTAG.
  • USB OTG for programmable USB device/host functions.

They share the same internal USB PHY, so firmware using USB OTG/TinyUSB can change how the connector behaves compared with ordinary Serial/JTAG programming.

If USB disappears after a bad upload, see our ESP32-S3 USB Not Detected: Boot Mode and Upload Recovery guide.

BOOT Recovery

A bad sketch does not normally brick the S3. The ROM bootloader remains available.

  1. Hold BOOT.
  2. Press and release RESET/EN.
  3. Release BOOT.
  4. Wait for the USB download device to appear.
  5. Upload a simple recovery sketch.
  6. Press RESET once after flashing if the board remains in download mode.

At chip level, GPIO0 low with GPIO46 low selects the S3 joint download boot mode. The board’s BOOT/reset circuit handles this for normal use.

Onboard RGB LED

Most common S3 SuperMini boards include a WS2812/NeoPixel-style RGB LED on GPIO48.

That means GPIO48 is not truly “unused” even if it appears on the pinout. You can still use it deliberately, but the onboard LED is electrically sharing the signal.

A simple Arduino test with Adafruit NeoPixel is:

#include <Adafruit_NeoPixel.h>

#define RGB_PIN 48

Adafruit_NeoPixel pixel(1, RGB_PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  pixel.begin();
  pixel.setBrightness(30);
  pixel.setPixelColor(0, pixel.Color(0, 40, 0));
  pixel.show();
}

void loop() {
}

If your LED does not respond on GPIO48, verify your exact board revision. This is one of the features generic SuperMini manufacturers sometimes change.

UART0 Pins

The exposed TX/RX pads normally map to:

TX = GPIO43
RX = GPIO44

These are the ESP32-S3 default UART0 pins. Native USB means you can usually keep them available for an external UART device while still using USB-C for programming and logs.

If you rely on UART0 recovery or boot logging, avoid permanently repurposing them.

JTAG Pins

GPIO39–42 are the default external JTAG pins:

GPIO39 = MTCK
GPIO40 = MTDO
GPIO41 = MTDI
GPIO42 = MTMS

They can be used as ordinary GPIO if external JTAG is not required. For most hobby projects that is completely fine because USB Serial/JTAG provides a separate integrated debug path.

Why GPIO33–37 Depend on PSRAM Type

Espressif’s S3 memory architecture is the reason generic “safe GPIO” lists can be dangerous.

For 2 MB quad-SPI PSRAM such as the ESP32-S3FH4R2, the extra octal data lines are not used. GPIO33–37 can therefore remain available on boards that physically expose them.

With 8 MB or 16 MB octal PSRAM, GPIO33–37 are used as the extra PSRAM data lines and DQS. On those boards they are not available for your sensors.

This is why you should not copy an S3 DevKitC N8R8 pinout onto an S3 SuperMini FH4R2—or the reverse.

Enable the Hidden 2 MB PSRAM in Arduino IDE

For the common ESP32-S3FH4R2 SuperMini, select:

Board: ESP32S3 Dev Module
USB CDC On Boot: Enabled
Flash Size: 4MB
Flash Mode: QIO
PSRAM: QSPI PSRAM
CPU Frequency: 240MHz

The crucial line is:

PSRAM: QSPI PSRAM

Do not select OPI PSRAM just because many ESP32-S3 WROOM boards use 8 MB octal PSRAM. The common SuperMini’s R2 memory is 2 MB quad-SPI.

Espressif’s Arduino documentation explicitly uses ESP32-S3FH4R2 as the example of an S3 with 4 MB embedded flash and 2 MB QSPI PSRAM.

Check PSRAM from Arduino

void setup() {
  Serial.begin(115200);
  delay(1000);

  Serial.printf("Flash: %u MB\n",
                ESP.getFlashChipSize() / (1024 * 1024));

  Serial.printf("PSRAM: %u MB\n",
                ESP.getPsramSize() / (1024 * 1024));

  Serial.printf("Free PSRAM: %u bytes\n",
                ESP.getFreePsram());
}

void loop() {
}

On the common FH4R2 board you should see approximately:

Flash: 4 MB
PSRAM: 2 MB

If PSRAM reports zero, first check the chip marking and Arduino PSRAM mode before assuming the board is defective.

ESPHome Configuration

Current ESPHome recommends selecting the chip variant rather than relying on a third-party SuperMini board ID:

esphome:
  name: s3-supermini
  friendly_name: S3 SuperMini

esp32:
  variant: esp32s3
  flash_size: 4MB
  framework:
    type: esp-idf

logger:

api:

ota:
  - platform: esphome

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

Since ESPHome 2026.1, ESP-IDF is the default and recommended framework for ESP32-S3.

ESPHome PSRAM Configuration

Current ESPHome requires the S3 PSRAM mode to be specified explicitly.

For the common 2 MB ESP32-S3FH4R2 SuperMini:

psram:
  mode: quad
  speed: 80MHz

ESPHome’s current documentation says 2 MB S3 PSRAM is typically quad mode, while 8/16 MB PSRAM is typically octal. It also warns that selecting the wrong mode means PSRAM will not work.

This explicit configuration is particularly important in newer ESPHome releases because PSRAM is no longer something you should assume will silently initialise itself for camera/display components.

ESPHome RGB LED Example

light:
  - platform: esp32_rmt_led_strip
    id: onboard_rgb
    name: "SuperMini RGB LED"
    pin: GPIO48
    num_leds: 1
    rgb_order: GRB
    chipset: WS2812

If this fails, verify the actual LED GPIO on your board. GPIO48 is common, not guaranteed across every unnamed SuperMini clone.

ESPHome Safe GPIO Example

A conservative I²C example uses GPIO5 and GPIO6 rather than any strapping or USB pins:

i2c:
  sda: GPIO5
  scl: GPIO6
  scan: true

sensor:
  - platform: bme280_i2c
    address: 0x76
    temperature:
      name: "Temperature"
    pressure:
      name: "Pressure"
    humidity:
      name: "Humidity"
    update_interval: 30s

The ESP32 GPIO matrix means I²C, SPI and UART can be routed to many pins; you do not need to copy one fixed “default” pin assignment from another S3 board.

PlatformIO Settings for the Common FH4R2 Board

A typical PlatformIO Arduino configuration is:

[env:s3-supermini]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino

board_upload.flash_size = 4MB
board_build.flash_mode = qio
board_build.psram_type = qio
board_build.arduino.memory_type = qio_qspi

build_flags =
  -DBOARD_HAS_PSRAM
  -DARDUINO_USB_MODE=1
  -DARDUINO_USB_CDC_ON_BOOT=1

monitor_speed = 115200

The exact PlatformIO board target is only a starting profile because SuperMini is not an official Espressif DevKit. The memory overrides are what make the configuration match the common FH4R2 hardware.

Battery Pads: Verify Before Use

Some common S3 SuperMini/HW-747 boards include B+ and B− pads and onboard charging circuitry. Other boards sold under the same “SuperMini” name may differ.

Before soldering a lithium cell:

  • Check the board silkscreen for B+ and B−.
  • Verify the actual charging IC/component layout.
  • Confirm polarity with the seller schematic or a multimeter.
  • Do not assume another SuperMini revision uses the same battery circuit.

This is one area where a generic board name is not sufficient documentation.

Why the S3 SuperMini Is More Useful Than C3/C6 for Displays

The S3 SuperMini combines:

  • Dual 240 MHz cores.
  • 2 MB PSRAM on common FH4R2 boards.
  • USB OTG.
  • LCD/camera-oriented S3 peripherals.
  • Vector instructions.

Even 2 MB PSRAM makes a substantial difference for frame buffers, LVGL widgets, JPEG decoding, audio buffering and larger web interfaces.

For Thread/Zigbee, however, the C6 SuperMini remains the better choice because S3 does not contain an IEEE 802.15.4 radio.

Common Problems

SymptomLikely cause / first check
PSRAM reports 0 MBEnable QSPI/quad PSRAM and confirm FH4R2 chip
Board boot-loops with PSRAM enabledOPI/octual selected instead of quad
USB disappeared after uploadBad USB/TinyUSB firmware; use BOOT + RESET recovery
Board does not boot after adding hardwareCheck GPIO3, GPIO45 and GPIO46 strap loading
RGB LED does not respondClone uses different LED wiring; verify GPIO48
GPIO33–37 behave strangelyVerify exact S3 memory variant; octal PSRAM can consume them
Serial logs missingUSB CDC setting or UART43/44 repurposed
Only 4 MB flash detectedNormal for common FH4R2 board
Only 2 MB PSRAM detectedNormal for common FH4R2 board
Pinout online does not match boardSuperMini is generic; compare silkscreen/revision/chip marking

Recommended Pin Strategy

UseRecommended approach
First-choice GPIOGPIO1, 2, 4–8, 15–18, 21
Extra GPIO on common FH4R2 boardGPIO33–38 after verifying chip/memory configuration
UARTGPIO43 TX / GPIO44 RX
External JTAGGPIO39–42
Use with boot cautionGPIO3, GPIO45, GPIO46
Native USBGPIO19/20 — leave to USB circuitry
Onboard RGBGPIO48 on common boards

Final Recommendation

The common ESP32-S3 SuperMini is much better than its cheap product listings suggest. If it really contains an ESP32-S3FH4R2, you get 4 MB flash and 2 MB quad-SPI PSRAM in a board barely larger than a postage stamp.

The most important rules are:

  • Verify the actual chip marking.
  • Use QSPI/quad PSRAM for FH4R2.
  • Keep GPIO19/20 for native USB.
  • Avoid loading GPIO3/45/46 during reset.
  • Remember GPIO48 normally drives the RGB LED.
  • Do not assume another S3 board’s GPIO33–37 rules apply to your memory configuration.

Configured correctly, the S3 SuperMini is a very capable small-board platform for displays, USB projects, audio, cameras and memory-heavy ESPHome/Arduino builds.

Related ESP32-S3 and SuperMini Guides

Official and Reference Resources

Share your love