esp32.diy

Launcher: Multi-Firmware Switcher for ESP32 Boards

Oct 11, 2026 · 5 min read

Intermediate 2.2k stars 268 forks C++ MIT Updated 2026-10-09

Launcher running on an M5Stack device, showing the main menu with OTA, SD, WUI, CFG and PMan options.

TL;DR Launcher is a bootloader-level app switcher for ESP32 boards that lets you install, manage, and boot multiple firmware images over Wi-Fi or from an SD card. Flash it once and you will never need a USB cable to change firmware again.
What you need
  • M5Stack Core
  • M5Stack Core2
  • M5Stack CoreS3
  • M5Stack StickC
  • M5Stack StickCPlus
  • M5Stack StickCPlus2
  • M5Stack StickS3
  • M5Stack Tab5
  • M5-Paper
  • M5-Paper Mono
  • M5-Paper Color
  • Lilygo T-Deck Pro
  • Lilygo T-Watch Ultra
  • Lilygo T-Display S3 Amoled Plus
  • Lilygo T-Display P4
  • Lilygo T-Display C5
  • SeeedStudio XIAO ESP32C5
  • SeeedStudio XIAO ESP32S3 Plus
  • SeeedStudio XIAO 1.47in Touch Display ESP32-S3
  • SeeedStudio reTerminal D1001 8in
  • SeeedStudio reTerminal E1001
  • SeeedStudio SenseCAP Indicator
  • SeeedStudio Wio Tracker L2
  • SeeedStudio ReTerminal Sticky
  • Waveshare ESP32-S3 2.06in AMOLED Touch Watch
  • Waveshare ESP32-C5-LCD-1.47
  • Waveshare ESP32-C6-LCD-1.47
  • Waveshare ESP32-C6-LCD-1.3
  • Elecrow ThinkNode M9
  • Elecrow Crowpanel Advance ESP32-S3 5.0in
  • Elecrow Crowpanel Advance ESP32-P4 7.0in
  • XTeink X3
  • XTeink X4 Pro
  • Cheap Yellow Display (CYD)
  • ESP32-S3 ES3C28P 2.8in
  • ESP32 E32R40T 4in
  • Marauder devices
  • SDHC SD card (max 32 GB)
BoardsM5Stack, Lilygo, SeeedStudio, Waveshare, CYD, Marauder and more
LanguageC++
Build systemPlatformIO
LicenseMIT
Latest release2.9.1 (2026-09-04)
DifficultyIntermediate

What You Will Build

Launcher turns any supported ESP32 board into a multi-firmware hub. Instead of reaching for a USB cable every time you want to try a different app, Launcher lets you install, boot, and switch firmware images directly on the device — over Wi-Fi, from an SD card, or through a browser-based Web UI.

Once Launcher is flashed, it lives in its own partition at the start of your device's flash memory. On power-on, a brief boot screen appears. Hold the Select button to enter the Launcher menu; press nothing and the last-installed firmware boots automatically. That single workflow covers the full lifecycle of firmware development and experimentation on ESP32 hardware without ever touching a cable.

Animated walkthrough of Launcher navigation and firmware installation flow.\2
Animated walkthrough of Launcher navigation and firmware installation flow.

What You Need

Hardware

Any board from the supported list works. At the time of writing that includes the entire M5Stack family (Core, Core2, CoreS3, StickC, StickCPlus, StickCPlus2, StickS3, Tab5, Paper, Paper Mono, Paper Color), Lilygo T-Deck Pro, T-Watch Ultra, T-Display S3 Amoled Plus, T-Display P4, and T-Display C5, SeeedStudio XIAO ESP32C5, XIAO ESP32S3 Plus, reTerminal D1001, reTerminal E1001, SenseCAP Indicator, Wio Tracker L2, Waveshare AMOLED watches and LCD boards, Elecrow Crowpanel and ThinkNode devices, XTeink X3 and X4 Pro, the Cheap Yellow Display (CYD), and several Marauder-compatible boards. Check the Releases page for the full and current list.

Optional but recommended: An SDHC SD card, 32 GB or smaller, formatted as FAT32 with an MBR partition scheme. The SD card enables file management, binary downloads, and partition backups. Launcher works without one, but the experience is richer with it.

Software

Choose whichever flashing method suits you:

Typical use cases

Firmware Switching Without a Cable

Install and boot different ESP32 firmware images over Wi-Fi or from an SD card. No USB cable, no laptop required after the first flash.

OTA Firmware Management

Pull binaries directly from M5Burner's catalog or any GitHub release URL, with multi-part binary merging handled automatically at download time.

On-Device Partition Management

Create, resize, back up, and restore flash partitions without external tools — useful when switching between apps that need different partition layouts.

Broad Board Compatibility

Supports dozens of ESP32 boards out of the box, from M5Stack sticks to Waveshare AMOLED watches and e-ink terminals, with a single prebuilt binary per device.

How Launcher Works

Launcher occupies a dedicated partition at the beginning of flash. When the device powers on, it checks for a button press during the boot window. If detected, it drops into the Launcher menu. If not, it jumps straight to whatever firmware was last installed in the app partition — behaving like a transparent pass-through to the end user.

From the menu, four core areas handle the main workflows:

A serial interface is also available: connect via USB serial, type help, and you can configure Wi-Fi, calibrate a touchscreen, or mirror display axes — handy for devices that lack a keyboard or touchscreen.

Flashing Launcher onto Your Board

Pick the method that fits your setup. All three produce the same result.

Method 1 — Online Flasher (easiest, no install)

Visit https://bmorcelli.github.io/Launcher/, select your board from the list, connect the device via USB, and click Flash. The site handles everything in-browser.

Method 2 — M5Burner

Open M5Burner, search for Launcher, select the entry matching your device, and click Burn.

Method 3 — Manual flash

Download the .bin file from the Releases page for your device. The file is named Launcher-{YourDevice}.bin. You can then flash it using https://web.esphome.io/ in your browser, or use esptool.py from the command line. Refer to the repository for full details on either approach.

Preparing your SD card (optional)

If you want SD card support:

  1. Use an SDHC card, 32 GB or smaller.
  2. Format it as FAT32. The README recommends Rufus for this.
  3. Make sure the partition scheme is MBR, not GPT.
  4. Insert the card before powering on.

First boot

  1. Power on the device.
  2. Press Sel (or Enter, depending on your board) when the Launcher boot screen appears.
  3. Navigate to OTA to pull firmware from the online catalog or a URL, or browse your SD card with SD to install a local .bin.
  4. Open CFG to adjust brightness, dim timeout, display rotation, and UI color to your liking.

Extending Launcher and Known Limitations

Things worth exploring after the initial setup:

Known limitations:

Verdict

Launcher solves a real friction point in ESP32 development and deployment: the constant need to reflash whenever you switch firmware. The online flasher keeps the entry barrier low, and the OTA, SD, and Web UI options cover virtually every scenario from field updates to local development. The main caveat is the UiFlow 1 incompatibility and the e-ink display refresh limitation, but for the breadth of supported hardware and the quality-of-life improvement it delivers, Launcher is one of the most practical utility projects in the ESP32 ecosystem.

Sources

github.combmorcelli/Launcher — repository & README bmorcelli.github.ioOfficial website

Facts in this article come from the project's public README and GitHub metadata at the time of writing. Images belong to their respective owners and link back to the original source.