Flashing Firmware to ESP32C3 Devices with Esptool: A Step-by-Step Guide Using the ANAVI Miracle Emitter and XIAO ESP32C3
If you are into home automation, there is a good chance you have come across the ESP family of microcontrollers by Espressif, including the popular ESP8266 and ESP32 series. In this post, we will take a hands-on look at using Esptool, a powerful Python-based utility for flashing firmware onto ESP devices. This walkthrough is based on a recent video tutorial that demonstrates how to flash precompiled firmware onto the XIAO ESP32C3 module, which is part of the designed by me open source hardware ANAVI Miracle Emitter.
What is Esptool?
Esptool is a command-line utility that helps you:
- Flash firmware to ESP8266 and ESP32 boards, including newer RISC-V based chips like ESP32C3 and ESP32C6
- Read flash contents
- Erase memory
- Update bootloaders or only the firmware
Since it is written in Python and released under the GPL version 2 license, Esptool works on Windows, macOS, and Linux. This tutorial uses Ubuntu 24.04 LTS.
In this case, the memory address is 0x10000, which is where the firmware typically resides after the bootloader. Because this method flashes a smaller file, it is a bit faster than writing both components. To summarize: use correct memory addresses such as 0x0 for both bootloader and firmware and 0x10000 for firmware only.
Why ANAVI Miracle Emitter?
ANAVI Miracle Emitter is open-source both in hardware and software. Designed in KiCad, it is ideal for NeoPixel LED projects and is built around the modern RISC-V ESP32C3 microcontroller. It supports 5V addressable LED strips and provides a compact, flexible development platform for makers and automation enthusiasts. You can find the design files, firmware, and documentation on git and GitHub repositories of ANAVI Technology.