Trouble Enumerating Custom ESP32 C3 PCB
Posted: Mon Jun 01, 2026 8:56 pm
Hey everyone,
I’m designing a custom PCB using the ESP32-C3-MINI-1 N4 module, and I’ve hit a brick wall trying to get the native USB to enumerate. I’ve ruled out software and basic logic, so I’m trying to understand why my laptop cannot detect any programmable device connected to it at all.
The Setup:
MCU: ESP32-C3-MINI-1 N4
Series Termination Resistors: 27 Ohm
USB C Cable: Verified that it works with an Esp32 C3 Supermini
3.3V: Power Supply to Esp32 also Verified with Multimeter
The Boot Sequence: For my boot I need to configure these strapping pins (GPIO 2 High, GPIO 8 High, GPIO 9 Low, and Temporarily Grounding the Enable Pin to Reset)
I have short circuited GPIO 2 and 8 with power with jumpers and GPIO 9 is already connected to a switch that connects to Gnd. So I press the switch and then ground the enable pin with an open pad on the En trace.
Information from Terminal:
I have also looked at the Terminal to check the USB related logs to track down the problem and this is some stuff I have found with AI (don't know much about this myself).
1. Detection of CC and power sinking is working fine whenever I plug in the USB
2. Malformed Handshake: Only once when I plugged the USB after flipping the orientation it seemed to go farther into the process. Below is AI's description of the issue:
(The Malformed Handshake): Initially, when I plugged it into my Mac and pulsed EN, it threw an XHCI error in the kernel logs: AppleT8103USBXHCICommandRing::setAddress: completed with result code 4 followed by failed to create device (0xe00002bc). This told me the chip booted, turned on its internal 1.5k D+ pull-up, but the analog packets during the SET_ADDRESS phase were completely mangled. Notably, this only happened in one cable orientation.
I am using the Arduino IDE for detection but so far it has not detected anything at all as a programmable device on the port. All the potential problems I could think of I have worked through. Even removed my ESD diode on the data lines but that didn't make any difference. Any suggestions on this would be hugely helpful
Attaching the schematic and PCB below:
A few caveats: U12 is not soldered, so GPIO 2 is free to be connected to power directly. My stack up is as follows: Signal, Ground (complete uninterrupted), Power, Signal
All images you need are here: https://drive.google.com/drive/folders/ ... drive_link
I’m designing a custom PCB using the ESP32-C3-MINI-1 N4 module, and I’ve hit a brick wall trying to get the native USB to enumerate. I’ve ruled out software and basic logic, so I’m trying to understand why my laptop cannot detect any programmable device connected to it at all.
The Setup:
MCU: ESP32-C3-MINI-1 N4
Series Termination Resistors: 27 Ohm
USB C Cable: Verified that it works with an Esp32 C3 Supermini
3.3V: Power Supply to Esp32 also Verified with Multimeter
The Boot Sequence: For my boot I need to configure these strapping pins (GPIO 2 High, GPIO 8 High, GPIO 9 Low, and Temporarily Grounding the Enable Pin to Reset)
I have short circuited GPIO 2 and 8 with power with jumpers and GPIO 9 is already connected to a switch that connects to Gnd. So I press the switch and then ground the enable pin with an open pad on the En trace.
Information from Terminal:
I have also looked at the Terminal to check the USB related logs to track down the problem and this is some stuff I have found with AI (don't know much about this myself).
1. Detection of CC and power sinking is working fine whenever I plug in the USB
2. Malformed Handshake: Only once when I plugged the USB after flipping the orientation it seemed to go farther into the process. Below is AI's description of the issue:
(The Malformed Handshake): Initially, when I plugged it into my Mac and pulsed EN, it threw an XHCI error in the kernel logs: AppleT8103USBXHCICommandRing::setAddress: completed with result code 4 followed by failed to create device (0xe00002bc). This told me the chip booted, turned on its internal 1.5k D+ pull-up, but the analog packets during the SET_ADDRESS phase were completely mangled. Notably, this only happened in one cable orientation.
I am using the Arduino IDE for detection but so far it has not detected anything at all as a programmable device on the port. All the potential problems I could think of I have worked through. Even removed my ESD diode on the data lines but that didn't make any difference. Any suggestions on this would be hugely helpful
Attaching the schematic and PCB below:
A few caveats: U12 is not soldered, so GPIO 2 is free to be connected to power directly. My stack up is as follows: Signal, Ground (complete uninterrupted), Power, Signal
All images you need are here: https://drive.google.com/drive/folders/ ... drive_link