Introduction: How to Unbrick an ESP8266 – Using ESP-03 As Example

In the past couple of days, I've been sifting through tons of ESP8266 websites trying to make my ESP-03 module work because I couldn't detect its WiFi signal nor could I access it using AT command ever since I received them from the supplier in China. Finally, I've managed to make it works and here is a summary of my steps:

Step 1: Determine the Flash Size.

It's hard to read the marking on the flash chip (the one on the right). By using phone camera as magnifying glass,I could see "W25Q40BV" on top of the chip. Googling it on the net and we could see that it's a 3V serial flash from Winbond with 4M-bit (512K-byte) capacity.

Due to the limitation of the flash size, it's not possible to flash V1.0 or later firmware to it because they require at least 1M-byte of capacity.

Step 2: Connect ESP-03 According to the Below Diagram.

Step 3: Connect ESP-03 to USB – UART Module (using CP2102 As Example).

The TX & RX voltage of CP2102 is at 3.3V and can be directly connected to the TX & RX pins of ESP-8266. The GND pin of CP2102 is to be connected to the GND. The 3.3V pin of CP2102 is not connected.

The ESP8233 module is powered by external 3.3V source (via LM3940-3.3 or LM1117-3.3).

Step 4: Flashing Firmware According to the Instruction at the Below Site.

Step 5: Power Down ESP-03, Remove CP2102 and Unground GPIO0.

Step 6: Open PUTTY and Set the Configuration According to the Photos Below (the COM Port Should Be Changed to the Port Used).

Step 7: Type “AT+GMR” Follow by Ctrl-M Ctrl-J Then Hit Enter to Check the Firmware Version.

Yeah!! Now we have a working ESP-03 that responds to AT command. In addition, the WiFi signal of the module can now be detected using a smartphone, tablet or a computer that supports WiFi.


aachzab made it! (author)2016-03-28

Hi There, I want to ask how about ESP-01 module, kinda weird, I have a code that used to work before second upload, after second upload, it bricked.

But if I re-program with original firmware, it works. :((

Wei-Hsiung Huang made it! (author)Wei-Hsiung Huang2016-03-28

Oops! I accidentally uploaded the same image twice. I haven't done this for ESP-01, but judging from the ESP-01 pin out (see attached image), I think you need to:

1. Connect CH_PD to VCC via a 2.2K resistor;

2. Tie GPIO 0 to Ground before power on (to enable programming mode)

3. GPIO 15 is tied to GND on the board, so connecting GND to Ground at the same time will connect GPIO 15 to Ground.

4. Follow the above instruction (from Step 1 to the end).

Good luck!!

Please do remember to share your finding with the community :-)


ESP01 Pin Out.JPG
m_lanham made it! (author)2016-03-24

Nice, it worked. I'm not sure what the issue was, but the tip to, "Close down the entire XTCOM_UTIL program, and unplug the USB", seemed to be key. What up with that. Other tutorials did not include this important step. Thank you,

Wei-Hsiung Huang made it! (author)Wei-Hsiung Huang2016-03-24

I am glad that it helps :-)

VincentP27 made it! (author)2016-03-23

Excellent. Of course it had to happen to me... I managed to brick an ESP8266 trying things I did not really understand... BUT thanks to you I have been able to unbrick it

Wei-Hsiung Huang made it! (author)Wei-Hsiung Huang2016-03-23

Always my pleasure to help.. :-)

insanity541 made it! (author)2015-11-09

Ahh, this is where I made a mistake. With my ESP03, I was going off of ESP-01 instructions which do not have or mention GPIO15 needing to be connected to GND. Also I hadn't used a 2.2Kohm resistor, which this image shows me I need. Thanks for this instructable!

Wei-Hsiung Huang made it! (author)Wei-Hsiung Huang2015-11-09

I am glad that it helps :-)

About This Instructable



More by Wei-Hsiung Huang:Building a DIY Filament Width Sensor Using Digital CaliperBurning Sketch To Atmega328P-PU On A Breadboard Using Arduino Uno As ProgrammerHow to unbrick an ESP8266 – Using ESP-03 as example
Add instructable to: