ESP32 stops working for no apparent reason in field

Hi,

I am using ESP32 Wroom in a product. After a month of operation the devices stops working. We find that the device does not boot. If I try to flash ESP32, I am getting the error following. The devices were purchased from a reputed online vendor.

esptool.py v2.3.1
Connecting.....................................................
A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header

I am flashing from Command prompt with following command.
C:\Project\SLC>"C:\Project\SLC"\esptool.exe --chip esp32 --port com27 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0xe000 "C:\Project\SLC"\boot_app0.bin 0x1000 "C:\Project\SLC"\bootloader_qio_80m.bin 0x10000 "C:\Project\SLC"\controller.ino.bin 0x8000 "C:\Project\SLC"\controller.ino.partitions.bin

Replacing ESP32 fixes the problem. I believe its a reliability issue with ESP32, has anybody faced such reliability issues with ESP32 Wroom?

Replacing ESP32 fixes the problem. I believe its a reliability issue with ESP32

Yeah, sure, whatever. Real world experience would have you looking first at your hardware design for the cause, not the commercial product. You are responsible for the power supply and power supplies account for more than half of the problems when implementing a product. The chances the problem is something you did wrong is probably on the order of 99%.

After you’ve exhausted all the possible common errors and have confirmed it’s not your design causing the problem, then you can discuss issues with the commercial part.

If you want a serious discussion, post your design (schematics and code) and photos of the product for review. Until you do that, all you’re asking for is validation of your ill-advised assumption which will not help solve the problem.

Hardware failure occurring in the field after some period of successful operation points to a problem with the hardware design - spikes on the powersupply most likely, leading to the ESP32 being damaged.

I am using LM2596 voltage regulator. It converts to 3.3v output for any input.

Kalyan92:
I am using LM2596 voltage regulator. It converts to 3.3v output for any input.

Frankly, you should be supply 5V to the ESP and let the ESP's 3.3V regulator do its thing.

I am using ESP32 Wroom. It required only 3.3v

Please find below schematic and PCB images.

Have you ever measured the ripple of your 3v3 supply under all load conditions? I see a small aluminum electrolytic cap where you should have a tantalum or an electrolytic selected for low ESR. Your supply could be loosing regulation or have very high ripple or worse, both.

Also, given that the LM2596 is a older design 3 amp regulator, L1 at 68uh might be too high of an inductance and you may well be operating below the minimum required load.

Your LM2596 pc layout has a very high impedance path in the ground connection (pin 3) by way of excessive thermal isolation provided. Those three tiny width traces to connecting the body to the ground plane are waaay too small.

WattsThat pointed out many issues with the buck converter design.

And you don't have a big enough input cap before the regulator. In fact I see basically no capacitors across the 12v rail. Add like a 100uF one near the buck converter, I'd say.

Noise on capacitorless input rail. combined with a poor design of the Buck converter as noted above is a recipe for poor power regulation, including potentially spikes that could damage the ESP32.

WattsThat:
Have you ever measured the ripple of your 3v3 supply under all load conditions?

I will measure the ripple on the faulty units and get back.

WattsThat:
I see a small aluminum electrolytic cap where you should have a tantalum or an electrolytic selected for low ESR. Your supply could be loosing regulation or have very high ripple or worse, both.

The reason why a small cap was used on the 3V3 line is that switching regulators dont like higher caps, what do you think is the minimum cap value needed, given that usually ESP32 needs ~100mA when wifi is off and jumps to about ~350mA when wifi is on.

WattsThat:
Also, given that the LM2596 is a older design 3 amp regulator, L1 at 68uh might be too high of an inductance and you may well be operating below the minimum required load.

The current consumption is variable and L1 depends on it, so, a value on the higher side was chosen, what do you think is a better value of L1? BTW, which are newer/better regulators?

WattsThat:
Your LM2596 pc layout has a very high impedance path in the ground connection (pin 3) by way of excessive thermal isolation provided. Those three tiny width traces to connecting the body to the ground plane are waaay too small.

LM2596 was not found to get hot so the thermal pad was not found necessary.
The ground connection is via pin 5 which has a sufficient width for low impedance with ground plane.

DrAzzy:
And you don't have a big enough input cap before the regulator. In fact I see basically no capacitors across the 12v rail. Add like a 100uF one near the buck converter, I'd say.

Noise on capacitorless input rail. combined with a poor design of the Buck converter as noted above is a recipe for poor power regulation, including potentially spikes that could damage the ESP32.

The 12V is an SMPS which internally has 1000uF and maybe some ceramics too, so no other cap was put on this board.

Well, sure, but are there wires between the power supply and that board?

The ground connection is via pin 5 which has a sufficient width for low impedance with ground plane.

What datasheet are you reading? Pin 5 is the on/off pin, pin 3 is ground.

WattsThat:
What datasheet are you reading? Pin 5 is the on/off pin, pin 3 is ground.

Thanks for pointing out, WattsThat. The ground pins routes to ground plane is problematic.

Have you ever measured the ripple of your 3v3 supply under all load conditions?

Most of the time at 3.3v ripple is 50mv, sometimes it goes up to 220mv.

If only the ESP32 was powered by 5V and the 3.3V on board regulator was allowed to do its job of providing 3.3V to the module...

Idahowalker:
If only the ESP32 was powered by 5V and the 3.3V on board regulator was allowed to do its job of providing 3.3V to the module...

I am using only ESP32 module. Please check below PCB image.

I have the same problem with esp 32..i have tried a 5v voltage source without result is any help?

Where is the product installed? In what environment? How is the 12V generated? With what sort of Power Supply?