Arduino IDE - seurat-atreides/Sonoff-Tasmota GitHub Wiki

How to setup and configure Arduino IDE for Tasmota compilation and upload.

If you did not used Arduino IDE until now, use Platformio or VSC for building Tasmota fimware. For these IDEs Setup is much easier and Tasmota project is already configured for.

Download Arduino IDE

I prefer a dedicated standalone version of the IDE allowing easy ESP8266 file manipulation and library management. This can be achieved by downloading the Arduino IDE ZIP file for non admin install.

Install Arduino IDE

  • Windows: Unzip the installation file to a known folder.
  • Mac: Move the .app file into your Applications folder.

IMPORTANT: For Windows users, before executing arduino.exe add an empty folder called portable in the known folder.

Install ESP8266 board software

  • Open Arduino IDE and select FilePreferences (ArduinoPreferences on Mac) and add the following text for field Additional Boards Manager URLs: http://arduino.esp8266.com/stable/package_esp8266com_index.json and select OK.
  • Open ToolsBoards...Boards Manager... and scroll down and click on esp8266 by ESP8266 Community. Click the Install button to download and install the latest ESP8266 board software. Select Close.

Download Tasmota

Copy files

ESP8266 Board version 2.3.0

  • If not available copy from the Tasmota release Source code folder arduino\version 2.3.0\tools\sdk\ld file eagle.flash.1m0.ld to Arduino IDE folder portable\packages\esp8266\hardware\esp8266\2.3.0\tools\sdk\ld.
  • Replace in Arduino IDE folder portable\packages\esp8266\hardware\esp8266\2.3.0 file boards.txt with the Tasmota Source code file arduino\version 2.3.0\boards.txt.

ESP8266 Board version 2.4.2

Remove default compile options for floating point printf and scanf which are not being used by Tasmota and save 15k code space.

  • Replace in Arduino IDE folder portable\packages\esp8266\hardware\esp8266\2.4.2 file platform.txt with the Tasmota Source code file arduino\version 2.4.2\platform.txt.

ESP8266 Board version 2.5.2

Remove default compile options for floating point printf and scanf which are not being used by Tasmota and save 15k code space.

  • Use Setting Disable Exceptions in Arduino IDE / Tools
  • Replace in Arduino IDE folder portable\packages\esp8266\hardware\esp8266\2.5.2 file platform.txt with the Tasmota Source code file arduino\version 2.5.1\platform.txt.

For all versions

  • Copy all files from the Tasmota release Source code folder lib into your sketchbook\libraries folder.
  • About the issue of missing header files and/or libraries while compiling that users had, it is possible that the library folder is in the wrong place. That issue can be happen if you installed your Arduino IDE in a virtual environment. This came up after some tests (6) of an installation in VM-Ware Workstation 14 Pro - 14.1.1 build-7528167 with not all current updates from VM-Ware. The library folder was placed in /portable/libraries and not in /portable/sketchbook/libraries. We can't say why that happens but there is the possibilty. So please check it when you get compile errors with missing header files and/or libaries. After updating VM-Ware and a new installation of Arduino IDE 1.8.8 the issue was gone. The installation of Arduino IDE 1.8.8 on windows 7 pro were 100% ok without any issue.
  • Copy the Tasmota release Source code folder sonoff to your sketchbook.
  • Note: your sketchbook location can be found in the Arduino IDE preferences, default on the Mac is ~/Documents/Arduino.

Configure Arduino IDE

  • Select Tools and verify the following settings for All Tasmota devices.

ESP8266 Board version 2.3.0:

ESP8266 Board version 2.4.2:

ESP8266 Board version 2.5.2:

Optional: Prepare for OTA upload

Tasmota release Source code provides scripts to be installed in the Arduino IDE and your webserver to copy the compiled binary to your webserver. This webserver can then provide the firmware via OTA to the device.

  • If not available install PHP on your webserver and copy the Tasmota release Source code folder api to the root of your webserver.
  • If not already done in the previous steps replace in Arduino IDE folder portable\packages\esp8266\hardware\esp8266\2.3.0 file boards.txt with the Tasmota Source code file arduino\version 2.3.0\boards.txt.
  • Replace in Arduino IDE folder portable\packages\esp8266\hardware\esp8266\2.3.0 file platform.txt with the Tasmota Source code file arduino\version 2.3.0\platform.txt.
  • Copy from the Tasmota release Source code folder arduino file espupload.py to Arduino IDE folder portable\packages\esp8266\hardware\esp8266\2.3.0\tools and change in the script HOST_ADDR to point to your webserver ip address.

After restarting your Arduino IDE you now have an extra option for Tools - Upload Using: "OTA_upload".

Compile Tasmota

Open Arduino IDE and select file sonoff.ino from your sketchbook\sonoff folder.

  • Compile Tasmota with Sketch - Verify/Compile.

Upload Tasmota to device

Arduino IDE uses the serial interface to upload the firmware to your device. On Windows these interfaces are named COM1, COM2 etc. On Linux these interfaces are called /dev/ttyUSB0, /dev/ttyUSB1 etc.

In the following commands I use COM5 as an example.

Before using Arduino IDE upload make sure you know to which serial interface name your device is connected to.

Put device in firmware upload mode

When performing a firmware upload do not connect the device to AC but use the power supply provided by your (FTDI type) serial interface.

  • Put the device in firmware upload mode by grounding pin GPIO00 while applying power.

Grounding pin GPIO00 can often be achieved by pressing button 1 on the Sonoff device or using a wire between GPIO00 and Gnd if the button is not available. Deviations may apply.

  • Connect the serial interface of your PC to the device while GPIO00 to Gnd.

Perform serial upload

  • Make the correct serial interface selection in the Arduino IDE via Tools - Port: "COM5".
  • Upload the compiled firmware with Sketch - Upload.

NOTE: For a proper device initialization after first firmware upload power down and power up the device.

Optional: Upload Tasmota to OTA server

If a webserver is available you can upload the compiled firmware using optional scripts and prepare it for OTA download by any Tasmota device using the MQTT upgrade 1 or upgrade 5.1.2 command.

  • Make sure that Tools - Upload Using: "OTA_upload" is selected.
  • Upload the compiled firmware to the OTA server with Sketch - Upload.