I spent most of the weekend trying to figure out why the circuit I made to upload firmware to an ESP32 (datasheet doesn't work. The reference circuit below was taken from EspressIf and I tried to recreate this on my own. This is the manufacturer of the ESP32 chip so it should work. If anyone has a clue what it could be, that would be most helpful because I am at a loss at this moment. reference circuit

My version is just slightly different but doesn't work: my circuit

I checked for shorts and proper connections on most of the key components: bridge IC(datasheet, micro-USB, ESD diodes. But it is not working. I do want to mention that the RXD and TXD lines are each going through a multiplexer that is acting like a switch which is closed to the firmware upload serial connection when Vbus is connected. I can go into detail, but I no longer suspect this is the issue.

Some observations and general info:

  1. 3.3V continuous net which receives power from Vbus is reading 3.3V
  2. Vbus net is reading 5V
  3. DP is reading 3V
  4. DN is reading 0V
  5. Soldering was done with reflow oven and stencil
  6. The error I am seeing with the circuit is when I plug in the device windows says something like "does not recognize device and it may have malfunctioned".

PCB footprint of malfunctioning area pcb footprint

actual photo after reflow soldering. board photo

close-up of bridge circuit after soldering. I have verified that there isn't bridging between the pads by verifying no continuity between all adjacent pins. bridge

close-up of micro-usb. I have attached a stripped micro-usb and verified no continuity between all adjacent pads. I have also verified that there is continuity to each respective diode at the beginning of the circuit. So for example Vbus and D304s continuity has been verified. micro-usb

bridge IC pin close-up

The bridge IC on my board is on the top layer and rotated 90CCW. Here is an image of what that pin out would look like bridge circuit rotated 90CCW to match footprint

Here is a close-up of my board's PCB footprint for the bridge IC. footprint of IC

  • \$\begingroup\$ This isn't related to functionality, but why are you using a four-layer board here? This doesn't look complex enough to mandate it... Your layout is quite messy in general, actually. \$\endgroup\$
    – Hearth
    Jul 12, 2021 at 4:10
  • \$\begingroup\$ No problem, the circuitry in another area of the board is a little dense that's why I went for it. \$\endgroup\$
    – Feynman137
    Jul 12, 2021 at 4:34
  • 1
    \$\begingroup\$ You'd benefit from a cleaner layout, I expect, but that won't solve your problem or anything. I don't know enough about USB to help with your actual problem, though. \$\endgroup\$
    – Hearth
    Jul 12, 2021 at 4:36
  • \$\begingroup\$ I'll work on the layout for the next version \$\endgroup\$
    – Feynman137
    Jul 12, 2021 at 4:40
  • \$\begingroup\$ Please show us a photo of the board. \$\endgroup\$ Jul 12, 2021 at 6:53

1 Answer 1


The issue is likely due to the huge amount of capacitance you've put on the data lines due to your clamp diodes. USB requires very low capacitance zener diodes - those huge 600W clamp diodes you have selected are likely distorting the data waveforms to the degree the USB device cannot enumerate.

If you remove D301 and D302 I suspect it will start working.

  • 1
    \$\begingroup\$ Hmm hadn't thought of this I was just going for ESD protection like the reference circuit... Didn't know these introduce capacitance \$\endgroup\$
    – Feynman137
    Jul 12, 2021 at 16:30
  • 2
    \$\begingroup\$ I removed only D301 and D302 as suggested plugged in the board and port was recognized! \$\endgroup\$
    – Feynman137
    Jul 13, 2021 at 0:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.