This is a guide how to upload new firmware using Arduino IDE. Sonoff is a ESP8266 based WiFi wireless switch that can connect to appliance of different types and brands. This is a smart switch to control any device on 110v and 230v.

See this project here: SONOFF - ESP8266 update firmware with Arduino IDE

Step 1: Components

  • SONOFF - WiFi Wireless Smart Switch
  • PL2303 - USB to UART Converter
  • USB cable
  • Several wires
  • Switch

Step 2: Arduino IDE Setup

At the beginning we need the Arduino IDE, If you do not have it then you can download from this site Arduino IDE download To be able to program ESP8266 in the Arduino environment, we need to install the additional platform ESP8266 to the Arduino environment.

Our option settings in In the Arduino IDE should look like this:

  • Flash Mode: DIO
  • Flash Frequency: 40MHz
  • Upload Using: Serial
  • CPU Frequency: 80MHz
  • Flash Size: 1M (64K SPIFFS)
  • Debug Port: Disabled
  • Debug Level: None
  • Reset Method: ck
  • Upload Speed: 115200
  • Port: Your COM port connected to sonoff

Step 3: Connection of USB Converter to ESP8266

PL2303 pinESP8266 pin

Step 4: Flashing a Custom Firmware to SONOFF

Do not connect AC power during the flash cable connection.
To flash the new software to our SONOFF, we have to start Sonoff in flash mode. Follow this steps process:Connection of USB converter to SONOFFHold down the SONOFF buttonToggle the switch to apply power to the Sonoff circuitThen, we can release the SONOFF buttonAfter SONOFF is in flash mode, we can upload new software.This program is very simple, so it is great for first flashing.

#define LED_PIN 13

void setup() {




void loop() {

digitalWrite(LED_PIN, HIGH);


digitalWrite(LED_PIN, LOW);




ESP8266 and multiple temperature sensors DS18b20 with HTTP server

About This Instructable




Bio: Software, electronics, do-it-yourself
More by adachsoft:DIY USB Charger for Your Phone - LM2596 DIY WIFI RC Car With ESP8266 and Arduino IDE Control Any Devices Using Raspberry PI and PCF8574, Relay Module 
Add instructable to: