ESP32 Firmware

The ESP32 firmware can be compiled in multiple variations to be used on different devices:

The firmware is written and C/C++ and the source code is freely available on GitHub. The Arduino ESP32 projekt and PlatformIO are used as basis.

Preparation

First, PlatformIO and Node.js have to be installed according to their installation manuals. For PlatformIO we recommend using the PlatformIO IDE extension for Visual Studio Code, but you can also use PlatformIO Core instead.

In general you should always use the latest version of PlatformIO and Node.js. For the Node.js package manager npm version 8 or newer is required.

For Windows the Silicon Labs CP210x Universal Windows Driver has to be installed. Linux and macOS have this driver already build in.

Next, download the esp32-firmware repository from GitHub as ZIP file and unpack it or clone the repository using git.

The platformio.ini file is located in the software/ directory. Make sure to open the software/ directory in Visual Studio Code as the PlatformIO project directory and build the prepare environment to prepare the build of other environments. In general this has to be done only once and not before every build of other environments

Firmware Building

Choose the PlatformIO environment corresponding to the firmware variation you want to build:

  • ESP32 Brick: esp32 defined in esp32.ini
  • ESP32 Ethernet Brick: esp32_ethernet defined in esp32_ethernet.ini
  • WARP Charger Smart and Pro: warp defined in warp.ini
  • WARP2 Charger Smart and Pro: warp2 defined in warp2.ini

To build a specific firmware run its corresponding PlatformIO "Build" task. To build a firmware, upload it to a Brick and connect to its serial console all in one step you can run the PlatformIO "Upload and Monitor" task. This requires that the Brick is connected to USB beforehand.

Firmware Structure

The functionality and the web interface of the firmware are put together from modules. The variations of the firmware differ mostly in their list of active modules. This list is specified per environment in the corresponding .ini file using the custom_backend_modules and custom_frontend_modules options.

The tutorial regarding the ESP32 firmware shows step by step how to add a custom module to the firmware.