How to change the firmware

There are three different ways to change or upgrade the firmware on your Arduino UNO WiFi:
- burn the firmware using Arduino IDE (for all O.S. via OTA );
- burn the firmware using ESP recovery (for all O.S. via Serial);
-
 burn the firmware using ESP  Flash Download tool for Windows user (Only Windows via Serial).
All these ways are shown in below paragraphs.


Burn the Firmware using the Arduino IDE

If you want burn the firmware using the file into Arduino IDE, then follow these steps: 
Note:
This procedure is reccomended for all Operating System and it is usable only via OTA.

1) Download the Arduino IDE 1.7.10 or later. Click here
2) Launch the Arduino IDE. 
3) Plug the Arduino UNO WiFi to PC. 
4) Select the board: Arduino UNO WiFi from Tools>Board menu. 

Board menu 

5) Select the Port from Tools>Ports>Network ports menu. 

Network ports menu 

6) Select the Programmer from Tools>Programmer>ESP8266 Over The Air menu. 

Programmer menu 

7) Click on Burn Bootloader from Tools menu. 

Burn Bootloader


There are other procedures to burn the firmware. They are shown below paragraphs.

Burn the firmware using EspRecovery:

This procedure is reccomended for all Operating System and it is usable only via Serial.
1) First you must upload the EspRecovery sketch on your Arduino UNO WiFi: 
- Plug in the Arduino UNO WiFi to PC. 
- Open the Arduino.org IDE, you can download it here
- Select the correspondent port and board. 
- Upload the ESPRecovery sketch from File>Examples>Arduino UNO WiFI> Tools menu  of Arduino IDE:
ESPRecovery

2) Enter the board in bootloader mode
- Unplug the Arduino UNO WiFi. 
- Plug again the board to PC pressing the ESP B/L button. 

ESP B/L Button on Arduino UNO WiFi 

Bootloader mode
3) Open your terminal as Administrator. 
4) Download the ESPtool, you can download from here or you can use the command:

sudo pip install esptool

5) Test the esptool, for example, inserting the below command to read the MAC address: 
- python esptool.py -p your port -b baudrate read_mac 
- Set the baudrate at 9600
For linux user, for example, the port will be /dev/ttyACM0:

 

sudo python esptool.py -p /dev/ttyACM0 -b 9600  read_mac
 

For Mac user, for example, the port will be /dev/tty.usbmodem1411:

 
sudo python esptool.py -p /dev/tty.usbmodem1411 -b 9600 read_mac
 

For Windows user:
for example in case that the tools is in  \Users\XXXX\Desktop\esptool\esptool\ folder and the COM is 30:

python \User\XXXX\Desktop\esptool\esptool\esptool.py -p COM30 -b 9600  read_mac
esptool test 

6) If it will appear on terminal your MAC, then continue the procedure:

 

Connecting...
MAC: 18:fe:34:10:e2:85
  

7) Use this command to write the firmware but PAY ATTENTION to set the correct path and insert your correspondent port:

sudo python esptool.py -p /dev/ttyACM0 -b 9600 write_flash -ff 80m -fm qio -fs 32m 0x00000 20151223/boot_v1.4.bin_rep 0x1000 20151223/user1.bin 0x3FC000 20151223/esp_init_data_default.bin_rep 0x3FE000 20151223/blank.bin
For Windows user:
for example in case that the tools is in  \Users\XXXX\Desktop\esptool\esptool\ folder and the COM is 30:

C:\WINDOWS\system32>python \Users\xxxx\Desktop\esptool\esptool\esptool.py -p COM30 -b 9600 write_flash -ff 80m -fm qio -fs 32m 0x00000 C:\Users\xxxxx\Desktop\esptool\esptool\20151223/boot_v1.4.bin_rep 0x1000 C:\Users\xxxxx\Desktop\esptool\esptool\20151223/user1.bin 0x3FC000 C:\Users\xxxxx\Desktop\esptool\esptool\20151223/esp_init_data_default.bin_rep 0x3FE000 C:\Users\xxxxx\Desktop\esptool\esptool\20151223/blank.bin
 

8) Wait some minutes that the process ends.

Note:
You can find the updated user1.bin file directly into Arduino IDE, here the path: arduino-1.7.x\hardware\arduino\avr\firmwares\esp8266\unowifi\firmware_arduino_esp8266_20xx_xx_xx_file1.bin

Burn the firmware using ESP Flash download tool:

If instead you are a Windows user and you want to upgrade the firmware using a baudrate higher than 9600 then follow the below procedure:
Note:
This method allows to burn the firmware quickly (baudrate to 115200) but it needs an USB2Serial and some welding.

1) First you must upload the Blink sketch on your Arduino UNO WiFi: 
- Plug the Arduino UNO WiFi to PC. 
- Open the Arduino.org IDE, you can download it here
- Select the correspondent port and board. 
- Upload the Blink sketch from File>Examples>Basics menu. 

Blink sketch    

2) Create a jumper between TP_GPIOESP test point and Ground ,as shown in the below image: 

Jumper between TP_GPIOESP test point and Ground 

3) Connect the board to the USB2Serial
- Using some jumpers follow these connections: 
USB2Serial   Arduino UNO WiFi 
      RX                         RX 
      TX                         TX 
      GND                      GND 
- Connect the USB2Serial convertor to PC. 

4) Enter the board in bootloader mode
- Unplug the Arduino UNO WiFi. 
- Plug again the board to PC pressing the ESP B/L button. 

ESP B/L button on Arduino UNO WiFi   

Bootloader mode   

4) Open the ESP FLASH DOWNLOAD TOOL, you can download it from here. 
- Extract it;
- Click on flash_download_tool_v1.2_150512.exe.

ESP FLASH DOWNLOAD TOOL   

5) Setting the the esptool
- Select the first row and insert the boot.bin_rep file and set the address: 0x00000.
- Select the second row and insert the user1.bin file and set the address: 0x40000
- Select the third row and insert the esp_init_data_default.bin_rep fileand set the address: 0x7C000
- Select the quarter row and insert the blank.bin file and set the address: 0x7E000, as shown in the picture. 

Note:
You can find the updated user1.bin file directly into Arduino IDE, here the path: arduino-1.7.x\hardware\arduino\avr\firmwares\esp8266\unowifi\firmware_arduino_esp8266_20xx_xx_xx_file1.bin

ESP Flash Download tool settings   

- Select the correspondent USB2Serial COM
- Setting the baudrate to 115200

6) Execute the Firmware writing. 
- Click on START 
- Wait the completation, it will appear the written "Finish", as shown in the below image. 

Operation completed   

7) Now remove the jumper between TP_GPIOESP and Ground.