ESP8266 Firmware Update Guide



ESP8266 modules can be used with a set of AT commands or with other programming environments such as the Arduino IDE.

If you have uploaded an Arduino sketch to your module, you may find that you can no longer just send it AT commands from a terminal or other software.

You may also just want to update the firmware to the latest version.

To do this you will have to re-flash the firmware - read on for details of the process:

CAUTION:
Only do this if you really need to and you are confident about the process. Firmware flashing has the potential to make a module or product inoperable. The information given in this article relates directly to the ESP12F module and gives the basic process for any module. You follow the process at your own risk and we accept no liability for damage or loss as a consequence of attempting firmware flashing.

Resources

To do this, you will need to download the ESP8266 Flash Download Tool and the SDK package containing the firmware files. These can be found by clicking on this link:

Espressif Resources

There are various firmware options - if you are planning to use anything other than the 'nonos' - non operating system - firmware then you probably know what you are looking for already. If you just want to update the module or put it back to it's original state, then download the latest version of the NONOS ESP8266 SDK.

Its also a good idea to download the ESP8266 SDK Getting Started Guide from the documentation section of the resources website page.

Unzip the packages and have a folder ready to put the files you need in.

Look through the folders that have unpacked and you will find 'bin' files' 'documents' and various other sub folders. In the bin\at folder there will be a README file with details of the firmware files you need for your module.

Here I'm focusing on the ESP12F module which we are supplying and I found  the correct bin files by looking at these documents and comparing them with the charts and info in the Getting Started Guide. It's important to not only have the correct files to flash, but also to set the correct memory address for them in the Flash Download Tool.

Using the Flash Download Tool

Double click on it, and you will see that the tool opens a terminal window and then offers some button based options. Choose the one for ESP8266 and then the tab for SPIDownload.

The download tool has a section for the paths of the files you need. Next to each path is a space for the memory address.

Four files are needed, and these are the ones I used for the ESP12F with the address in brackets:

\bin\esp_init_data_default_v08.bin  (0x1fc000)

\bin\boot_v1.6.bin (0x000)

\bin\blank.bin (0x1fb000)

\bin\at\1024+1024\user1.2048.new.5.bin (0x1000)

These are either in the 'bin' folder or the 'at' folder inside it.

As the software is updated, the version numbers may change - the main point is that you need one of each type - data default bin, boot bin, blank bin and at user bin (which needs to have the correct flash memory type - eg 1024+1024).

You can put the files into the slots by clicking on the three dots (...) and then selecting them from your folder, and then the full path to the files will be shown. Put the address in the box to the right of (...) and if the flash tool is feeling happy about everything, the box will turn green when you tick the check box to the left of the file name.

There are some settings to be checked as well.

In the screenshot, the settings for ESP12F are shown - these include QIO for 'Quad Input Output' which refers to the memory setup and this is related to the Flash Size setting of 16Mbit-C1. Set the Crystal Frequency to 26Mhz and the SPI Speed to 80Mhz.

NB Other module versions may require different settings.

TIP
Connect the module (details below) and uncheck the file boxes (so they stop being green).
Then press START and the software will show the details of your module in the DETECTED INFO box.
This helps to establish that everything is working before you start uploading.

Hardware Setup

If you are not sure how to connect the ESP8266 12-F module, then take a look at our other guide here: ESP8266 Guide

The basic connections, pullups and so on must be in place before proceeding and you will of course need a Serial/USB adaptor to connect to a computer.

Connect Rx to Tx and Tx to Rx between the module and the USB adaptor as well as making sure that they have a common ground. You may also need to add an additional power supply for the module - always 3.3v (again with common Ground).

Before flashing the firmware:
Disconnect Pin 0 from anything else, and connect it to Ground.
Press the Reset button.
The module will now have rebooted into programming mode.

Flashing the Firmware

Make sure the BAUD setting is 115200 and select the COM port of your USB/Serial interface.

Take a deep breath and then press START on the Flash Download Tool.

The terminal window will show some activity and a green progress bar will start at the bottom of the Flash Tool window.

When the process is over the Download Panel indicator will change to FINISH

At this point:
Disconnect Pin 0 from Ground and reconnect it to its pullup resistor
Press the Reset button again - the module will now be back in operational mode with its new firmware.

Testing / Checking

Press STOP on the Flash Download Tool (or just close it) and open a terminal window - or the Arduino IDE Serial Monitor.

Press Reset and (maybe after some random characters) you should see 'Ready' in the terminal window.

Make sure the BAUD rate is 115200 and type AT followed by CR/LF and the response should be OK.

Now type AT+GMR and send the command, and you should see something like this:


AT version:1.7.0.0(Aug 16 2018 00:57:04)
SDK version:3.0.0(d49923c)
compile time:Aug 23 2018 16:58:12
Bin version(Wroom 02):v1.7.0
OK

...which is information about the currently loaded firmware.

The module is now ready for use in your latest project or new product.

BAUD Rates:
115200 for connection, upload download, AT commands
74880 for information from the Firmware Boot manager

9600 for most Arduino Serial data within a sketch
eg Serial.begin(9600);  --- if you download a sketch written by someone else, check this if you have problems.

--

Watch our YouTube video on connecting and uploading to the ESP8266 here:

ESP8266 Part 1 Connecting and Setting Up

Part 2 - programming with Arduino is coming soon and Part 3 - Firmware Update will follow.

Before the Winter arrives, I hope to have finished my Tortoise Hibernation monitor based around the ESP8266 12F

Mortimer Rhind-Tutt
Somerset UK

--