I'm working on a board based on the ESP32-C3 WROOM module. On the board I designed and had manufactured, I have GPIO18 to USB-DN and GPIO19 do USB-DP. As far as I know this should be correct. When connecting the device, it shows up in the Window 10 device manager as an "Unknown USB Device (Device Descriptor Request Failed)". Inspecting the details of the device in Device Manager shows the message:
The ESP32 otherwise functions fine. It can be programmed OK through the UART on RX/TX. All GPIO's work, including 18 & 19 when they're configured as regular inputs or outputs. All other peripherals insofar as I've tested them, work fine as well, including WiFi. The WROOM modules run perfectly fine and very stable, suggesting it's not a power supply issue.Windows has stopped this device because it has reported problems. (Code 43)
A request for the USB device descriptor failed.
I've tried several WROOM modules from two different shipments/suppliers and they all exhibit the same behavior. The problem exists in brand new devices that I have not downloaded any firmware into, as well as devices I've programmed through UART.
I've made several test setups with wires soldered directly to the WROOM module; the behavior is always identical.
I've included 22R resistors in USB-D+/D- and I've left them out: no difference. I've included TVS diodes on D+/D- and removed them: no difference.
On the original board I made, the USB D+/D- are short (ca. 20mm) traces, 0.2mm width, running parallel, mostly surrounded by GND pours and they are of equal length. As said, sloppy flying wire setups show the exact same behavior. Other USB devices I've made in the past work just fine (CP2102, CH340 etc.)
I've tried several USB ports on my computer, distributed across three different hardware USB bridges (two on-board and one PCIe addon card). The problem always remains the same. All other USB devices connected to the same ports function perfectly.
I have spent quite some time searching for solutions to this problem online, and have found a few instances of same problem. E.g.:
https://esp32.com/viewtopic.php?t=5513 (no solution ever materialized; poster missing-in-action)
https://www.reddit.com/r/esp32/comments ... _problems/ ('solution' offered is not consistent with Espressif's documentation and examples shown elsewhere where the ESP32-C3 should enumerate as a regular USB-UART bridge)
viewtopic.php?t=35665 (misconfiguration of the GPIO's is not the problem in my case; it also occurs with virgin/factory-fresh devices, and the problem also occurs in 'joint download boot' mode).
The most basic test setup I'm using is:
* EN pulled up to 3V3 with 10k and decoupled to GND with 1uF, with a microswitch used as RST button.
* GPIO2 + GPIO8 pulled up with 10k to 3V3.
* GPIO9 pulled up to 3V3 with 10k and a microswitch as 'BOOT' button to GND.
* 3V3 from an AMS1117 (fed by 5V USB VBUS). Decoupled on both 5V and 3V3 side with 4u7 ceramic cap.
I have a feeling I'm overlooking something very basic/fundamental, but for the life of me, I can't figure out what it is. Any suggestions of things I can try would be welcome.