# ESP32 power supply over USB-C: what goes wrong

> Power an ESP32 from USB-C: CC resistors for C-to-C cables, regulator limits, Wi-Fi current peaks, the brownout message and a separate 5 V path for motors.

Source: https://protoship.dev/guides/esp32-usb-c-power

A USB-C port powers an ESP32 board at 5 V as long as three things hold: the port has a 5.1 kΩ pull-down resistor on each CC pin, otherwise a USB-C charger with a C-to-C cable gives no power at all; the cable and 3.3 V regulator handle Wi-Fi transmit peaks of several hundred milliamps; and servos, motors or LED strips get their own 5 V path instead of sharing the board's regulator. When the supply dips, the ESP32 prints `Brownout detector was triggered` and resets.

## How much current an ESP32 needs

| Chip or board | Figure | Source |
| --- | --- | --- |
| ESP32-WROOM-32E, Wi-Fi transmit (802.11b, 1 Mbps, 19.5 dBm) | 239 mA average, 379 mA peak | Espressif datasheet |
| ESP32-WROOM-32E, external supply | at least 0.5 A at 3.0–3.6 V | Espressif datasheet |
| ESP32-S3, Wi-Fi transmit | 340 mA peak; supply at least 500 mA | Espressif ESP32-S3 datasheet |
| Cheap Yellow Display (original) | about 115 mA at 5 V | Seller specification; no Wi-Fi peak given |

The average is not the problem; the peaks are. A thin cable or a weak supply that is fine at idle can sag for the few milliseconds the radio transmits.

## Regulator limits on common boards

- **AMS1117-3.3** Up to 1 A, with a dropout of up to 1.3 V. From 5 V USB that leaves little margin once a diode sits in front of it. Used on many cheap dev boards.
- **Cheap Yellow Display** Two AMS1117-3.3, one for the ESP32 and one for the display; USB 5 V passes a 1N5819 diode first, and VIN on connector P1 passes a P-MOSFET.
- **Arduino Nano ESP32** MP2322GQH buck converter to 3.3 V. USB 4.8–5.5 V, VIN 6–21 V recommended (the cheat sheet says 5–18 V). No 5V pin; VBUS carries 5 V only when the board runs from USB. Arduino does not publish the 3.3 V rail limit we could find.
- **ESP32-S3-DevKitC-1** A 5 V to 3.3 V LDO. Power through USB, the 5V and G pins, or the 3V3 and G pins, never more than one of these at a time. The LDO rating is not given in the user guide.

Espressif's checklist for the ESP32 asks for at least 10 µF plus 0.1 µF at the 3.3 V power entrance, because transmit spikes can otherwise pull the rail down.

## USB-C needs two 5.1 kΩ resistors

A USB-C power source only switches on its 5 V once it sees a sink: a 5.1 kΩ pull-down resistor (Rd) on CC1 and on CC2. A USB-A to USB-C cable has this built in, which is why a board without the resistors still works with one. With a USB-C charger and a C-to-C cable, the same board gets nothing.

The dual-USB Cheap Yellow Display (CYD2USB) is a known example: its USB-C port lacks the CC resistors, so power it with a USB-A to USB-C cable. On your own PCB, place one 5.1 kΩ resistor from each CC pin to ground.

## "Brownout detector was triggered"

The ESP32's brownout detector is on by default. When the supply drops below its threshold, the chip prints this line and resets:

```
Brownout detector was triggered
```

It usually shows up when Wi-Fi starts or a load switches on. Check in this order: a shorter or thicker USB cable, a different power supply, a capacitor near the board's 3.3 V input, and moving any motor, servo or LED strip off the board's supply. Turning the detector off hides the dip without fixing it.

## Give motors and LED strips their own 5 V path

Servos, motors and LED strips draw current in bursts. Fed from the board's 3.3 V regulator, they share a regulator that already has to cover Wi-Fi peaks, and each burst can pull the ESP32 into a brownout. A GPIO pin cannot feed them either: the ESP32-WROOM-32E sources 40 mA and sinks 28 mA at most drive strength. Feed such loads from the 5 V supply directly, before the board's regulator, with a common ground and only the signal wire on the GPIO. On a Nano ESP32, which has no 5V pin, take that 5 V from the supply side, not from the board.

## Batteries

A battery adds a charger, protection and a second power path. If you want a device that just runs, USB-C at 5 V is simpler. [Finish my build](https://protoship.dev/finish) builds devices that run on USB at 5 V; if your build runs on a battery today, we make a USB-C version of it.

## Let your agent check it

`check_project` reads your repo or ESPHome file and reports the power envelope of the board and modules it finds, so a servo on the 3.3 V rail shows up before you build it. Connect the Protoship MCP server once:

```
claude mcp add --transport http protoship https://mcp.protoship.dev
codex mcp add protoship --url https://mcp.protoship.dev
```

An agent without MCP calls `GET https://protoship.dev/api/check?url=…` with the link to your repo or config file.

## Questions

### Why does my ESP32 not power on with a USB-C to USB-C cable?

The board's USB-C port is missing the 5.1 kΩ pull-down resistors on CC1 and CC2, so a USB-C source never switches on its 5 V. Use a USB-A to USB-C cable, which has the resistor built in, or add the two resistors on your own PCB.

### What does "Brownout detector was triggered" mean?

The supply voltage dipped below the brownout threshold and the ESP32 reset itself. Typical causes are a thin cable, a weak supply, missing capacitance or a motor or LED strip on the board's supply.

### Can I power servos from the ESP32's 3.3V pin?

No. The 3.3 V rail comes from the board's regulator, which also has to cover Wi-Fi peaks. Feed servos from the 5 V supply directly with a common ground and connect only the signal wire to a GPIO.

### How much current does an ESP32 need?

Espressif gives the ESP32-WROOM-32E 239 mA average and 379 mA peak while transmitting at 802.11b, and asks for an external supply of at least 0.5 A. For the ESP32-S3 it gives a 340 mA transmit peak and at least 500 mA supply.

[Finish my build](https://protoship.dev/finish#request) [Let your agent check your project](https://protoship.dev/guides/esp32-device-built-by-ai-agent#connect)

## Sources

Read on 4 November 2026.

- [Espressif: ESP32-WROOM-32E datasheet v2.1](https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32e_esp32-wroom-32ue_datasheet_en.pdf)
- [Espressif: ESP32-S3 datasheet](https://www.espressif.com/sites/default/files/documentation/esp32-s3_datasheet_en.pdf)
- [CYD repo: seller specification ESP32-2432S028](https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display/tree/main/OriginalDocumentation/2-Specification)
- [Advanced Monolithic Systems: AMS1117 datasheet](http://www.advanced-monolithic.com/pdf/ds1117.pdf)
- [CYD repo: vendor schematic ESP32-2432S028-MCU](https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display/tree/main/OriginalDocumentation/5-Schematic)
- [Arduino Nano ESP32 datasheet (ABX00083)](https://docs.arduino.cc/resources/datasheets/ABX00083-datasheet.pdf)
- [Arduino: Nano ESP32 cheat sheet](https://docs.arduino.cc/tutorials/nano-esp32/cheat-sheet/)
- [Espressif: ESP32-S3-DevKitC-1 v1.1 user guide](https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s3/esp32-s3-devkitc-1/user_guide_v1.1.html)
- [Espressif: ESP32 schematic checklist](https://docs.espressif.com/projects/esp-hardware-design-guidelines/en/latest/esp32/schematic-checklist.html)
- [Texas Instruments: USB Type-C connection detection (Rd on CC)](https://www.ti.com/document-viewer/lit/html/SLVSE24C/detecting-a-connection-slvscr16609)
- [CYD repo: cyd.md (CYD2USB, colour fix, CC resistors)](https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display/blob/main/cyd.md)
- [ESP-IDF: fatal errors (brownout)](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/fatal-errors.html)
- [Protoship: Finish my build](https://protoship.dev/finish)
