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
| Feature | Common ESP32-S3 SuperMini |
|---|---|
| MCU | ESP32-S3FH4R2 on many current boards |
| CPU | Dual-core Xtensa LX7 |
| Maximum clock | 240 MHz |
| Internal SRAM | 512 KB |
| Flash | 4 MB embedded flash |
| PSRAM | 2 MB embedded quad-SPI PSRAM |
| Wi-Fi | 2.4 GHz 802.11 b/g/n |
| Bluetooth | Bluetooth LE 5 |
| USB | Native USB Serial/JTAG + USB OTG capability |
| Typical size | About 22.5 × 18 mm |
| Onboard RGB LED | Usually WS2812 on GPIO48 |
| Programming | USB-C, native USB |
| Battery pads | Present 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 label | ESP32-S3 GPIO | Notes |
|---|---|---|
| TX | GPIO43 | UART0 TX / boot console |
| RX | GPIO44 | UART0 RX |
| IO1 | GPIO1 | ADC-capable, good general GPIO |
| IO2 | GPIO2 | ADC-capable, good general GPIO |
| IO3 | GPIO3 | Strapping pin |
| IO4–IO8 | GPIO4–8 | ADC-capable general GPIOs |
| IO9–IO14 | GPIO9–14 | General GPIO; alternate FSPI functions |
| IO15–IO18 | GPIO15–18 | General GPIO |
| IO21 | GPIO21 | General GPIO |
| IO33–IO38 | GPIO33–38 | Usable on the common quad-PSRAM FH4R2 board; verify other S3 variants |
| IO39–IO42 | GPIO39–42 | Default external JTAG pins |
| IO45 | GPIO45 | Strapping pin: VDD_SPI voltage |
| IO46 | GPIO46 | Strapping pin: boot/ROM messages |
| IO47 | GPIO47 | General GPIO on common 3.3 V configurations |
| IO48 | GPIO48 | Usually 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.
| GPIO | Boot function | Practical advice |
|---|---|---|
| GPIO0 | Boot/download mode | Normally connected to BOOT button; avoid permanent loading |
| GPIO3 | JTAG signal-source selection | Use only if external hardware is high-impedance at reset |
| GPIO45 | VDD_SPI voltage selection | Avoid as a first-choice GPIO |
| GPIO46 | Boot mode / ROM print configuration | Avoid 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.
- Hold BOOT.
- Press and release RESET/EN.
- Release BOOT.
- Wait for the USB download device to appear.
- Upload a simple recovery sketch.
- 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
| Symptom | Likely cause / first check |
|---|---|
| PSRAM reports 0 MB | Enable QSPI/quad PSRAM and confirm FH4R2 chip |
| Board boot-loops with PSRAM enabled | OPI/octual selected instead of quad |
| USB disappeared after upload | Bad USB/TinyUSB firmware; use BOOT + RESET recovery |
| Board does not boot after adding hardware | Check GPIO3, GPIO45 and GPIO46 strap loading |
| RGB LED does not respond | Clone uses different LED wiring; verify GPIO48 |
| GPIO33–37 behave strangely | Verify exact S3 memory variant; octal PSRAM can consume them |
| Serial logs missing | USB CDC setting or UART43/44 repurposed |
| Only 4 MB flash detected | Normal for common FH4R2 board |
| Only 2 MB PSRAM detected | Normal for common FH4R2 board |
| Pinout online does not match board | SuperMini is generic; compare silkscreen/revision/chip marking |
Recommended Pin Strategy
| Use | Recommended approach |
|---|---|
| First-choice GPIO | GPIO1, 2, 4–8, 15–18, 21 |
| Extra GPIO on common FH4R2 board | GPIO33–38 after verifying chip/memory configuration |
| UART | GPIO43 TX / GPIO44 RX |
| External JTAG | GPIO39–42 |
| Use with boot caution | GPIO3, GPIO45, GPIO46 |
| Native USB | GPIO19/20 — leave to USB circuitry |
| Onboard RGB | GPIO48 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
- ESP32 SuperMini Boards Compared: C3 vs C6 vs S3 — choosing the right tiny ESP32 board.
- ESP32-S3 Flash and PSRAM: N8R8 vs N16R8 — S3 memory modes and partition settings.
- ESP32-S3 USB Not Detected — native USB and BOOT recovery.
- ESP32-S3 Versions and Development Boards Compared — module and board selection.
- ESP32-C3 SuperMini vs ESP32-C6 SuperMini — the lower-power RISC-V alternatives.
Official and Reference Resources
- Espressif ESP32-S3 Datasheet — official GPIO, USB, strapping and memory restrictions.
- Arduino-ESP32 Tools Menu — flash/PSRAM configuration and FH4R2 example.
- ESPHome ESP32 Platform — current ESP32-S3 variant/framework configuration.
- ESPHome PSRAM Component — current quad/octal configuration requirements.
- ESPHome Devices: Tenstar Robot ESP32-S3 SuperMini — example 4 MB flash / 2 MB PSRAM board.