I’ve just attempted to cloud-update my ESP8266-12 module from AI Thinker and something went wrong. The blue LED on my module started blinking and the module would not respond to any commands. When I connected to it via a serial adapter, all I could see was gibberish.
I suspected there was a partial firmware update that left it corrupted and the module was stuck in the
bootloader, resetting itself over and over. Using
cu with the bootloader’s magic baud rate (76800) confirmed
$ sudo cu -l /dev/tty.usbserial-A6028AYX -s 76800 wdt reset load 0x40100000, len 25052, room 16 tail 12 chksum 0x0b ho 0 tail 12 room 4 load 0x3ffe8000, len 3312, room 12 tail 4 chksum 0x53 load 0x3ffe8cf0, len 6576, room 4 tail 12 chksum 0x0d csum 0x0d Fatal exception (0): epc1=0x402411b4, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000 ets Jan 8 2013,rst cause:4, boot mode:(3,6)
Fortunately, the bootloader appeared to be intact, which means we could attempt a restore. First, you need to get ahold of esptool, which is a python script that interacts with the module and can reflash the firmware.
Next, you’ll need to download the firmware you’d like to flash – in my case I’ve downloaded it from the Electrodragon Wiki.
After you have both pieces, you’ll need to wire the module for reflashing:
GPIO15 <-> GND GPIO2 <-> VCC GPIO0 <-> GND
It is advisable to connect these through a 10k Ohm resistor. Once that is done, you’ll need to reset the module and issue the following command.
./esptool.py --baud 76800 --port /dev/tty.usbserial-A6028AYX write_flash \ 0x00000 AI-v0.9.5.0\ AT\ Firmware.bin Connecting... Erasing flash... Writing at 0x0007ec00... (100 %) Leaving...
After approximately 30 seconds you’ll have a module that is as good as new.