Page 1 of 2

ESP32-C3 from LCSC faulty?

Posted: Mon Jul 17, 2023 9:06 pm
by ReubenH
Hi all,

We have designed a few PCB's recently using Easy Eda.
We typically get the board manufactured and pick and placed at JLCPCB (They use LCSC stock for the PNP)

I was unable to flash the microcontroller over USB like I would normally be able to so I went through a great troubleshooting list as we have never had this issue before

After a great deal of bodges (increasing 3v3 capacitance, removing any unrelated device, playing with some USB capacitance) I ended up replacing the ESP with one previously purchased from Mouser

The device immediately was able to be programmed and all was well in the world
Unfortunately there is a good 8 hours gone and during that process we redesigned one PCB to use an ESP32-S3.

Attached I have pictures of the "New" chip from mouser and the "Old" chip that was pick and placed
Unfortunately there were many hundereds spend on these PCB's
There are two of one type and five of another. All exhibit the same problem and are able to be fixed by microcontroller replacement

My question is if its possible there is a faulty batch of chips that LCSC is PNPing right now?
What if there is a minor hardware revision that is not allowing programming

My test method is simply flashing a blink sketch onto the board using Arduino IDE (Platformio the same)
The flashing program will give an error of some description such as "communication port not found" or "device not recognized" or "timeout"

I still have several of these boards that have the "old" microcontroller on them, how do we go about diagnosing what is going on here

Thanks,
Reuben

Re: ESP32-C3 from LCSC faulty?

Posted: Tue Jul 18, 2023 1:05 am
by ESP_Sprite
If anything, your schematic is faulty; BOOT on the ESP32C3 is GPIO9, not GPIO0. Can you force that low on one of the 'broken' boards on powerup/reset and see if you can program them then? Additionally, you probably want to have GPIO2 and GPIO8 to be high on bootup, see the 'strapping' section of the datasheet for more information. (Generally, if you design a PCB, please make sure to properly read the datasheet and the relevant sections of the hardware design guidelines, that will help you to get your board running the first time)

Re: ESP32-C3 from LCSC faulty?

Posted: Tue Jul 18, 2023 3:00 am
by ReubenH
The boot pin is definitely in the wrong location however I have experimented a significant amount with getting the actual boot pin (9) low to get into bootloader mode
It does show up as a different device on device manager (I think) however it will not take a flash.

There is another PCB we made that has the boot pin in the correct location but still no joy (Actually that was the first batch of unflashable parts)

Re: ESP32-C3 from LCSC faulty?

Posted: Tue Jul 18, 2023 3:23 am
by ReubenH
That was a mistake on my part with that board however I have attempted to put it in bootloader mode using IO9
This did not fix the issue, although it did behave differently in device manager
Another board (attached schematic) also has the same issues

I am certain there is some form of hardware issue on the micro that is not related to the PCB as swapping the microcontroller worked fine.

We always follow the design recommendations

With some PCBs we left the boot button off as we never had to use it, even for first flash

Re: ESP32-C3 from LCSC faulty?

Posted: Tue Jul 18, 2023 10:01 am
by ESP_Sprite
And the additional thing I mentioned of having GPIO2 and 8 high on bootup? Also, what's your 3.3V power supply like, as in how is it generated?

Re: ESP32-C3 from LCSC faulty?

Posted: Wed Jul 19, 2023 8:34 pm
by ReubenH
I have measured GPIO 2 and found it to be low (but it may come to bite us later if the microcontroller boots during CANRX)
GPIO 8 is an output with a 10k pull down

The power supply is a simple LDO
I have scoped this rail and there is no oddities
Note there is substantially more capacitance on the rail than indicated in the screenshot blow

Re: ESP32-C3 from LCSC faulty?

Posted: Thu Jul 20, 2023 1:41 am
by ESP_Sprite
That LDO is far from enough to drive an ESP32-C3: the datasheet says "If you use a single power supply, the recommended output current is 500 mA or more." and yours can only provide 100mA. It's pretty likely your ESP32 is browning out.

Re: ESP32-C3 from LCSC faulty?

Posted: Thu Jul 20, 2023 11:24 pm
by ReubenH
Running the device from a bench top power supply still yeilds no fix

I have since bodged in an alternative power supply as attached below

Scoping 3v3 shows no issues
As I said in an earlier post, replacing the microcontroller fixed the issue
We still have 4x boards that have not powered up as yet and will have the same dead microcontroller issue
Replacing the micro with one from stock (mouser) does repair the board

Re: ESP32-C3 from LCSC faulty?

Posted: Fri Jul 21, 2023 1:59 am
by ESP_Sprite
Well, to be honest, I'm not saying it can't happen but I find it pretty unlikely that LCSC stocks multiple faulty ESP32 modules; they're usually a reliable outfit in my experience, hence me trying to find other reasons why your PCB may not work. (And note that e.g. the power supply thing would have bitten you later on, even if the modules turned on without it fixed.) If you're willing to still try to see if the issue is the modules, another thing to check might be to de- and resolder the 'faulty' modules: it may not be the modules that are faulty, but the soldering process, and replacing the module fixed it purely because they're soldered anew.

Re: ESP32-C3 from LCSC faulty?

Posted: Wed Oct 11, 2023 3:06 pm
by hristesp
Hi all,

I don't mean to add to any necessary hysteria, but I ordered 30 PCBs from PCBWay of a design we have always had PCBs of who confirmed they ordered the device's ESP32-C3-Mini modules from LCSC, and I have had the same issues. For added context, my flashing method is below:

- We flash over USB directly, the USB d+ and d- pins go straight to the module, we use no USB-UART chip on board
- Our new PCBs when plugged in are still discoverable as /dev/ttyACM1
- I use the ESP IDF toolchain for flashing, which in turn uses ESPTOOL
- When flashing is attempted, I am returned with "Errno 32: Broken Pipe". The issue is identical for other interfacing operations such as attempting to read the module's MAC address
- GPIO8 is pulled down via a 3.3kR resistor, GPIO9 is left disconnected, GPIO0 is pulled down by a switch via a 330R resistor. People on this thread may disagree with this arrangement but to echo OP, this has always been in our design and has never been an issue for us
- The serial numbers on our modules are the same as those on OP's

I am in contact with Espressif, and am yet to swap out modules, but will update if I find anything significant