This guide takes the NZN ESP32-C3 SuperMini from a new board to a reliable first upload in Arduino IDE. It uses the board's real GPIO8 LED, explains the USB CDC setting, and gives a repeatable BOOT and RST recovery sequence for a missing port or failed connection.
In this guide
Before you connect the board
You need Arduino IDE 2.x, a USB-C cable that carries data, and the ESP32-C3 SuperMini. A charge-only cable can power the board but will never create a computer port, so changing drivers or board settings will not fix it.
Use 3.3V logic. ESP32-C3 GPIO pins are not 5V tolerant. Do not feed a 5V signal into a GPIO pin, even when the board itself is powered through USB.
Set up Arduino IDE
- Install Arduino IDE 2.x. Download the current desktop release from Arduino if it is not already installed.
-
Add the ESP32 board package. Open Boards Manager, search for
esp32, and install esp32 by Espressif Systems. - Select the board. Choose Tools > Board > esp32 > ESP32C3 Dev Module.
- Enable native USB serial. Set Tools > USB CDC On Boot > Enabled.
- Connect with a data cable. Plug the board directly into the computer, then choose the new port from Tools > Port.
The port name is operating-system dependent. Windows normally shows a COM number. If no new port appears, test another known data cable and another USB port before changing software settings.
Keep the first setup simple. Disconnect external circuits while proving the USB connection. A device attached to a strapping pin can change how the ESP32-C3 starts.
Upload the first Blink sketch
The NZN board's user LED is on GPIO8 and is wired active-low. Many generic Blink examples assume a different pin or active-high LED, so they can upload correctly while appearing to do nothing. Use this exact sketch for the first test:
const int ledPin = 8;
void setup() {
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH); // LED off
}
void loop() {
digitalWrite(ledPin, LOW); // LED on
delay(500);
digitalWrite(ledPin, HIGH); // LED off
delay(500);
}
- Click Verify. Wait for the sketch to compile without errors.
- Click Upload. Arduino IDE will compile again, connect to the board and write the program.
- Wait for completion. A successful upload ends with a reset message and no red error block.
- Tap RST once if needed. On the first native-USB upload, the program may not begin until the board is manually reset.
- Watch the LED. It should turn on and off every half second.
If the upload succeeds but the LED stays still, confirm that the code uses GPIO8 and that LOW is the on state. Do not change to a random board definition to chase the LED.
Check USB serial output
Once Blink works, add serial output to prove the USB CDC connection in both directions. With USB CDC On Boot enabled, the ESP32-C3's native USB connection can provide the upload port and Serial Monitor connection.
const int ledPin = 8;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(115200);
delay(1000);
Serial.println("ESP32-C3 SuperMini ready");
}
void loop() {
digitalWrite(ledPin, LOW);
Serial.println("LED on");
delay(500);
digitalWrite(ledPin, HIGH);
Serial.println("LED off");
delay(500);
}
Open Serial Monitor at 115200 baud. You should see the ready line after reset, followed by alternating LED messages. If Serial Monitor is blank, close and reopen it after the upload, confirm the selected port, and tap RST once.
Recover a missing port or failed upload
A sketch can interfere with USB startup or leave the board apparently absent. The ESP32-C3 has a ROM download mode that cannot be erased. Use the two buttons to enter it deliberately:
- Unplug USB-C. Leave Arduino IDE open with ESP32C3 Dev Module selected.
- Hold BOOT and RST together. Keep both buttons held down.
- Reconnect the USB data cable. Plug the board back into the computer while both buttons are held.
- Release both buttons. The board should now appear in USB download mode.
- Select the port again. Its COM number can differ from the normal sketch port.
- Upload a known-good sketch. Use the Blink example above.
- Tap RST after upload. This leaves download mode and starts the new sketch.
If the plug-in sequence does not produce a port, use the documented alternative with USB connected: hold BOOT, press and release RST, then release BOOT.
There is no separate bootloader file to install. The download loader is built into the ESP32-C3 chip. The BOOT and RST sequence selects it at reset.
If recovery still shows no port, remove all external wiring and repeat with a different proven data cable. Also try a direct computer port instead of an unpowered hub. Only investigate operating-system drivers after the cable, USB port and button sequence have been ruled out.
Choose safe pins for your project
The ESP32-C3 SuperMini exposes 13 GPIO pins, but not every pin is equally convenient during startup. GPIO2, GPIO8 and GPIO9 are strapping pins whose levels are sampled at reset. GPIO9 is also used by the BOOT button, and GPIO8 carries the onboard LED.
| Pin or feature | Practical guidance |
|---|---|
| GPIO8 | Onboard active-low LED and a startup strapping pin. Use it for the first Blink test, but account for both roles in a project. |
| GPIO9 | BOOT button and download-mode strapping pin. Avoid external circuits that force it low at reset. |
| GPIO2 | Another startup strapping pin. Check attached hardware if boot behaviour changes. |
| GPIO4 and GPIO5 | Convenient general-purpose choices for a small I2C project when configured explicitly in code. |
| 3V3 | Use for compatible 3.3V modules. Check the current required by the complete circuit. |
| 5V | USB supply rail, not a 5V logic level. Keep GPIO signals within 3.3V limits. |
For development, avoid attaching pull-down resistors, switches or powered peripherals to GPIO2, GPIO8 or GPIO9 until your basic upload cycle is reliable. If a project suddenly becomes difficult to program, disconnect those loads and test again.
Troubleshooting
| Symptom | What to check |
|---|---|
| No port appears | Use a known data cable, try a direct USB port, remove external wiring, then use the BOOT and RST recovery sequence. |
| Upload waits at Connecting | Unplug USB-C, hold BOOT and RST together, reconnect USB, release both, reselect the port and upload again. If needed, use the BOOT-held RST alternative. |
| Upload succeeds but nothing runs | Tap RST once. Confirm USB CDC On Boot is enabled and the sketch uses GPIO8 with LOW as the LED-on state. |
| LED appears inverted | This is expected. The onboard LED is active-low: LOW is on and HIGH is off. |
| Serial Monitor is blank | Set 115200 baud, reopen the monitor after upload, choose the current port and tap RST. |
| Board worked until hardware was added | Disconnect circuits on GPIO2, GPIO8 and GPIO9, then reset. One of the startup strap levels may be wrong. |
| Sketch says the board is unsupported | Update the Espressif ESP32 board package and verify that ESP32C3 Dev Module is selected. |
Frequently asked questions
Which board should I select in Arduino IDE?
Select ESP32C3 Dev Module from the Espressif ESP32 board package. This matches the ESP32-C3 chip and exposes the settings needed for native USB.
Why does Arduino IDE say the upload completed, but Blink does not start?
Tap RST once. The first upload through native USB can leave the board waiting for a reset. Also confirm the sketch targets GPIO8 and treats LOW as on.
Can I permanently lock myself out with a bad sketch?
No. Unplug USB-C, hold BOOT and RST together, reconnect the data cable, then release both and upload a known-good sketch through the ROM download mode. If needed, use the alternative sequence: hold BOOT, tap RST, then release BOOT. Removing external wiring first makes recovery more reliable.
Does the board need a separate USB-to-serial driver?
The ESP32-C3 uses its native USB peripheral for this workflow, so there is no separate USB-to-UART chip on the path described here. A data cable and the USB CDC setting are the first things to check.
Can I use the 5V pin with a sensor?
You may power a suitable module from the 5V rail when the current requirement is appropriate, but its signal must still be safe for 3.3V GPIO. Use a level shifter or divider where required.
Reference material checked: the standard BOOT-held reset sequence, USB CDC setting and startup-pin behaviour were checked against current Espressif Arduino and esptool documentation. The plug-in recovery sequence was checked on NZN stock. GPIO8 LED behaviour and the exact controls were checked against NZN stock photography and the product's verified Quick Start records.
Espressif USB CDC guide | ESP32-C3 boot mode selection | ESP32-C3 strapping-pin guidance
Start with one known-good upload
Once Blink and Serial Monitor both work with no external wiring, add one part of your project at a time. That gives you a reliable baseline whenever a cable, pin or peripheral causes trouble.
View the ESP32-C3 SuperMini
