OpenSprinkler firmware is unified and can compiled under both Arduino environment and any Linux-based system. The instructions on this page are for the Arduino-based OpenSprinkler (OS 2.3, 3.x) only. If your controller is OpenSprinkler Pi (OSPi), please follow the OSPi firmware instructions to compile and run the firmware code. 

NOTE: from firmware 2.2.0, we have adopted PlatformIO, which makes it easy to compile the OpenSprinkler firmware. To do so:

  • Install VS Code
  • Launch VS Code, search and install the platformio extension.
  • Download and unzip the OpenSprinkler firmware repository, open the folder in VS Code, at the bottom of the screen, click PlatformIO:Build. The firmware repository contains platformio.ini which has all the information needed for PlatformIO to build the firmware.

The build instructions below are for previous versions of OpenSprinkler firmware.

Instructions below are provided for Linux only. If you use Windows or Mac, we strongly recommend you to install VirtualBox so you can run Linux. Compiling the firmware code requires technical skills. Instructions are provided as is, we will not be able to help you with compilation issues, nor can we help you with modifying the code.

Firmware Compilation Instructions for OpenSprinkler 3.x (ESP8266-based)

  1. Download or git clone OpenSprinkler Firmware Code.
  2. Install ESP8266 Core for Arduino. Specifically, in Linux, open terminal and run (the current firmware is compiled with ESP8266 core 2.7.4):
    cd ~
    git clone esp8266_2.7.4
    cd esp8266_2.7.4

    git checkout tags/2.7.4

    git submodule update --init
    cd tools
  3. Install necessary libraries, including SSD1306 (4.2.1), RCSwitch (2.6.4), pubsubclient (2.8), and EthernetENC (master branch) (note that the latest firmware 2.1.9(9) no longer uses UIPEthernet, instead, it uses the newer EthernetENC library which has several major bug fixes). Download and unzip or git clone these into ~/Arduino/libraries folder. Depending on whether you downloaded or git cloned them, you may have to change the folder names to match the directory names in the makefile below. For example, the capitalization of folder names may be different, and in Linux folder names are case sensitive.
  4. The easiest way to compile is to use the makefile provided in the firmware code folder:
    make -f make.lin32
    this makefile assumes the ESP8266 core and the additional libraries are in the path as described above. In case you installed esp8266 core into a different folder, or in case the library folder names don't match what's in the makefile, open make.lin32 and modify ESP_ROOT variable and/or library folder names accordingly. Similarly, if you installed the additional libraries in a different path, modify the makefile accordingly. The makefile will compile the program into your system's temporary folder, as a bin file (e.g. /tmp/mainArduino/mainArduino.bin).
  5. Now you can upload the firmware using the OTA firmware update instructions.

Firmware Compilation Instructions for OpenSprinkler 2.3 (ATmega1284p)

  1. Download Arduino Software (we have only tested version 1.8.15, but more recent versions should also work).
  2. Run Arduino, and install the following libraries and atmega1284 core:
    • Sketch->Include Libraries->Manage Libraries, search and install pubsubclient (2.8), EthernetENC (master branch), and SdFat (1.0.7) libraries.
    • Follow MightyCore instructions to install the atmega1284 core (basically, copy a link to the Additional Board Manager URLs, then install the board in Board Manager). We have only tested version 2.0.5 of mightycore.

  3. Download or git clone the OpenSprinkler Firmware Code.
  4. The easiest way to compile is to use the makefile provided in the firmware code folder:
    make -f make.os23
    if your mightcore version is not 2.0.5, modify the path in the make file accordingly. The program will be compiled into the build-1284 subfolder under the firmware code folder, as a .hex file.
  5. Now you can upload the firmware using the OS 2.3 firmware update instructions.