====== ESP8266 - Upgrading the Firmware ====== Before using the ESP8266 module, the firmware needs to be updated to provide wider router support. The instructions shown below are based on my experiences whilst upgrading my ESP8266 modules to firmware version 0.9.2.2 ===== Preparation ===== Connect your ESP8266 module as follows: * Vcc = 3.3V (needs around 300-400mA peak) * Gnd = -ve ground * CH_PD = Chip enable so always +ve * RST = Leave floating or ground to reset * GPIO0 = Normally floating but this needs to be grounded when you start the update. * UTXD = Tx data connect to Txd on FTDI/Serial interface * URXD = Rx data connect to Rx of FTDI/Serial interface You also need to download the new firmware and update tool from ElectroDragon: [[http://goo.gl/uHM6aO]] The firmware tool is called XTCOM UTIL.zip Before you start the update, make sure your ESP8266 is working normally as follows: - Connect-up as above but leave GPIO0 floating. - Access the serial interface with a terminal program such as PuTTY or Termite. - Set the terminal s/w baud rate to either 57600 or 115200 (depends on whether you have an early or later model). The CoolComponents models are 115200. - Power-up the ESP8266 and you should see some readable text indicating that it's ready. If you get nonsense try changing the baud rate. - If all is well, try some AT commands. - Try AT+RST which should re-start the module. - Try AT+GMR which should give the firmware version. -** NB:** When entering AT commands there are no spaces and you cannot use backspace to correct errors as each character is sent as it is typed! If all is well, you can move on to the firmware update. ===== Firmware Update ===== ==== Windows ==== Here are the steps required to update the firmware: {{ :esp1.jpg?200|}} {{ :esp2.jpg?200|}} - Put the ESP8266 into firmware update mode by grounding GPIO0 and re-cycling the power. - Launch XTCOM_UTIL. - In the Tools menu choose Config Device and set the Com port and set the baud rate to the value you used during testing (57600 or 115200). Click Open then Connect but **don't close this panel**. - From the API TEST(A) menu choose Flash Image Download and browse to the downloaded firmware .bin file - Click DownLoad to start the update - the progress bar will confirm it's under way. - That's it! ==== Linux or OS X ==== - Ensure that you have python and the pyserial module installed - Put the ESP8266 into firmware update mode by grounding GPIO0 and re-cycling the power. - Get the esptool from [[https://github.com/themadinventor/esptool|github]] - In esptool.py change the device from ttyUSB0 to what ever your usb-serial is - Run ./esptool.py write_flash 0x000000 New_Firmware.bin (changing New_Firmware.bin to the downloaded firmware file) - The script will write the firmware to the device. ===== Testing ===== On completion of the update, disconnect GPIO0 from ground and re-cycle the power. You can now use the serial connection to try a few AT commands. **NB:** Following the update, the default serial baud rate changes to 9600 and AT commands require a CR+LF combination to signal completion. Some terminal programs (PuTTY) refuse to send the CR+LF combination so you need to press Enter followed by CTRL-j. An alternative terminal that does handle CR+LF is Termite: [[http://www.compuphase.com/software_termite.htm]]. **NB:** When entering AT commands with PuTTY you cannot use backspace to make corrections as each character is sent as it is typed. To connect to your local WiFi network use the following commands: * To set the correct mode: AT+CWMODE=1 * To connect to your network: AT+CWJAP="ssid","password" * To get the IP address: AT+CIFSR * To get the ssid of the connected router: AT+CWJAP? ===== Setup an ESP8266 Based Gateway ===== Chris Stubbs has done the pioneering work and produced software to control the ESP8266 from an Arduino based board. The details can be found [[ideas:esp8266|here]] and all you need to do to get on the air is to create updated wifiConfig and NodeConfig files with your WiFi and node details. **NB:** When connecting the Moteino or other Arduino board to the ESP8266 the Tx and Rx lines need to be reversed, i.e.Tx on Arduino goes to Rx on Moteino and vice-versa. ===== Next Steps ===== It should be possible to use the SoC processor in the ESP8266 to control the RFM69 directly thereby eliminating the need for the Arduino but that code hasn't been written yet.