Launcher

August 8, 2026 ยท View on GitHub

Application launcher for M5Stack, Lilygo, CYD, Marauder, and ESP32 devices.

Join our Discord community

How to Install

  • Use the Flasher: Launcher Flasher.
  • Use M5Burner, or
  • Download the .bin file from Releases for your device and use https://web.esphome.io/ or esptool.py to flash the file Launcher-{YourDevice}.bin to your device.

How to Use

  • Turn your device on
  • Press M5/Sel (Enter) on the Launcher start screen to get into Launcher
  • Choose OTA to install new binaries from online services (M5Burner or GitHub links)
  • After installation, when you turn on the device, the installed program will launch if you don't press anything.

My SD Card doesn't work!

  • Make sure your SD card is SDHC (not SDXC)
  • Use a maximum size of 32GB (I use 8 or 16GB)
  • Format it as FAT32 (use Rufus to format your SD card)
  • Ensure the partition scheme is MBR, not GPT

With Launcher you'll be able to:

OTA - OTA Update

  • Install binaries from online repositories (M5Burner or GitHub links) without needing a USB cable
  • Install binaries from a WebUI that you can start from the WUI option, using binaries you have on your computer or smartphone
  • Install binaries from your SD card

SD - SD Card Management

- Create new folders, - Delete files and folders, - Rename files, - Copy and paste files, - Install binaries

WUI - Web User Interface

- Manage files on the SD Card - Install binaries wirelessly using the OTA Update option - Edit text files - Edit NVS information (UiFlow2 data, Launcher settings, and others) - Deploy installations from the file list

CFG - Configurations (Customization)

- Charge Mode - Change brightness - Change dim time - Change UI color - Avoid/Ask SPIFFS (change whether Launcher asks to install the SPIFFS file system; only Orca One uses this feature) - Change rotation - All files/Only Bins (see all files or only .bins - default) - Change partition scheme (allows installing large apps or UiFlow2, for example) - List of partitions - Clear the FAT partition - Save SPIFFS (save a copy of the SPIFFS partition to restore when needed) - Restore SPIFFS

PMan - Partition Manager

- View current partition scheme - Create partitions - Delete partitions - Format partitions - Back up data partitions (SPIFFS or FAT) - Restore data partitions (SPIFFS or FAT) - Resize partitions

Tips

* Having an SD card gives you a better experience, but it is not required. [SD Card Hat for M5StickCs](https://www.thingiverse.com/thing:6459069) * You can learn more about how it works on the [Launcher Wiki](https://github.com/bmorcelli/Launcher/wiki/Explaining-the-project). * Where/how do I find binaries to launch? -> [Obtaining binaries to launch](https://github.com/bmorcelli/Launcher/wiki/Obtaining-binaries-to-launch) * Now you can download binaries from [HERE!](https://bmorcelli.github.io/Launcher/catalog.html)

Known Issues

  • UiFlow 1 doesn't work with Launcher. It uses an old MicroPython distro, which uses an old ESP-IDF distro with lots of secrets that I couldn't figure out.

To-Do list

Things that need to be done in future updates

  • LVGL UI (?)
  • Move to ESP-IDF Platform
  • Optimize Settings functions to save flash
  • Optimize Storage functions to save Flash

Latest Changelog

  • 2.8.1:

  • 2.8.0:

    • Port to Xueersi-XiaoMiao
    • Lilygo T-Watch-Ultra now has OTA installing
    • Shortcut system for Keyboard devices: Devices with Keyboard can bind a binary to a key, and install it with the press of one key from Main menu
    • Fastboot for Keyboard and Touchscreen devices: On bootscreen you can press a key or touch the screen to fast boot into an installed firmware
    • Added Serial interface: type "help" on serial to check available commands, you can configure Wifi from there, useful for devices like StickCPlus2 and others without keyboard or touchscreen: e.g. "wifi add MyNetworkSSID MyN37w0rkPWD", calibrate touchscreen, mirror X/Y axis or swap XY axis.
    • Downloaded firmware update list. Now launcher can check the firmware you downloaded, stored at {dwn_path}/downloaded.json and check if there are new versions of these firmwares, and it can download all new files directly to your SDCard if you hit [Update All].
    • Multi-part binary download: Firmware composed by multiple files (bootloader.bin, partitions.bin, firmware.bin and data.bin) available on LauncherHub are now downloaded and merged at runtime. It fetches data, one by one, and saves them into on single file to be flashed from the SDCard.
    • New Data partition Backup system: Now it saves the relationship between backup and binary on /bkp/backupData.json and restores it when reinstalling. App icon will display backup data, and PMan too. Needs SD Card to use this feature.
    • WebUI now shows partitioning info and allows partition management.
    • Added support to M5 CardKB2, CardKB 1.1 and Tab5 keyboard. Support was added to M5 devices using grove I2C Port A for: StickC, StickCPlus 1.1, StickCPlus2, StickS3, Tab5, CoreS3, Core2 and Core, Thanks to @cddigi
    • Fixed unheld traffic on TSL 1.3 networks with proper error handling, thanks to @anton-vinogradov
    • Data partitions are now created with the label set in the partition table, and added compatibility to xiaozhi-esp32, that needs more SPIFFS storage, thanks to @QQSHI13
    • Firmware containing valid data partitions now have their data partition copied as is. Empty partitions are created with minimum size of 0x70000 (448kb) or filling the flash if passes the threshold size.
    • FAT labeled "sys" and "system" are now copied entirely, and the other partitions (FAT or LittleFS) are properly copied and resized to avoid being re-formatted, it gives compatibility to UiFlow, Tactility and some other firmware.
    • E-paper displays now show "Powered Off" when turned off by launcher.
    • Optimized RAM, reducing Heap fragmentation
    • Fix M5Stack PaperS3 touchscreen https://github.com/bmorcelli/Launcher/issues/338
    • Fix WebUI OTA installation
    • Added "dev" option to Reset Config and wifi credentials
  • 2.7.2:

    • Adjusted boot logic, now it works as it was before.
    • Fixed devices that share TFT and Touch SPI bus (NM-CYD-C5 and others), that were unable to install firmware from SD Card.
    • Fixed devices that share TFT with SD Card being unable to download firmware from OTA.
  • 2.7.1:

    • Fixed Launcher auto updater process.
  • 2.7.0:

    • Improved navigation on devices with 5 buttons and keyboards; now you can navigate up and down on the main menu
    • Improved main menu for small screens (T-Dongle, StickC)
    • Custom Partition Manager "PMan" (no more hardcoded partitions on Cardputer)
    • Automatic partition maker, firmware sanity checker, and flash optimizer.
    • Ability to install more than one firmware at a time
    • Encrypted WiFi passwords within config.conf and NVS
    • Remodeled WebUI, adding the ability to edit text files and NVS fields saved in memory
    • Changed items on CFG for better understanding
    • Optimized WiFi/WebUI functions to save Flash
    • Enabled OTA for CYD-3248S035C and CYD-3248S035R
    • Port to M5-DinMeter
    • Port to Arduino Nesso N1
    • Port to Reaper Board

Older Changelogs

  • 2.6.10:

    • Fixed navigation on 3-button devices that were triggering EscPress when pressing Next or Prev buttons.
  • 2.6.9:

    • Port to NM-CYD-C5
    • Port to 3248W535C
    • Port to Waveshare-ESP32-S3-LCD-1.47
    • Port to T-Dongle-C5 (tft)
    • Port to T-Display S3 AMOLED Plus
    • Fix issue where brightness wasn't being saved
    • Fix issue where custom "downloads" folder wasn't being used
    • Fix issue where some firmware downloads weren't working due to prohibited characters in firmware names
    • Fixed SD card not mounting on T-Watch Ultra and adjusted UI for rounded edges on the main menu and file listings
    • Enabled WASD navigation for Lilygo T-LoraPager, T-Deck, T-Deck Plus, and T-Deck Pro
    • Added touch calibration for XPT2046-driven devices (resistive touchscreens, like CYD, Marauder, Phantom, and T-HMI). It will be prompted when no calibration data is found (first boot), or can be started from CFG > Calibrate Touch or by sending "calibrate" over Serial.
    • Added an "OFF" option to the main screen to turn off the device (DeepSleep when PMIC is not available).
    • Centralized main libraries using git submodules, so it doesn't download many copies of the same library to the .pio/libdeps/**/ folder
    • Speed up workflow using GitHub cache for framework and libs
  • 2.6.8:

  • 2.6.7:

    • Re-established Tab5 SD card on SPI for WiFi compatibility and refactored the reboot process to power cycle the SD card, resetting the SD card communication bus.
    • Tab5 now has a Mass Storage interface!
    • Fixed M5Stack Paper S3 USB Mass Storage issue https://github.com/bmorcelli/Launcher/issues/287 and OTA will show only S3 firmware.
    • Added app offset parameter to allow Launcher to be updated in Tab5, and firmware that is placed at different factory/app0 addresses.
    • Set StickC and CPlus devices to see only ESP32 firmware on OTA, excluding ESP32-S3 (StickS3) firmware
    • Adjusted firmware binaries that are not merged to have a partition table, allowing a SPIFFS partition to be attached to them. This binary will be valid ONLY for Launcher; it can't be flashed alone because it doesn't have a valid bootloader and partition table. https://github.com/bmorcelli/Launcher/issues/289
  • 2.6.6:

  • 2.6.5:

    • M5-Tab5 using SDMMC driver for compatibility with other firmware
    • Added the ability to order by "Latest update"
    • Port to OpenSourceSRDLabs WaveSentry and WaveSentry Pro
    • Battery ADC measurement fix for Cardputer, Tdeck, StickCPlus2, T-Display S3, T-HMI
  • 2.6.4:

    • Fixed CYD 3243S035R touchscreen rotation
    • Fixed Marauder V7 screen issues
    • Enhanced M5-PaperS3 display, using Sprites now for better drawing resolution
    • Fixed M5Stack Cardputer ADV keyboard not adding '*' and '('
    • Add new partition scheme for Cardputer Game Station, allowing 4.5MB game ROMs
    • Port to M5-Paper
    • Port to Arduino Nesso N1, not building yet
  • 2.6.3:

    • Fixed Marauder keyboard
    • Changed from EEPROM to NVS to save configs and WiFi credentials Issue 232
    • Port to M5-PaperS3
    • Fixed SelPress leaking into main menu
    • T-Embed (all) and T-LoraPager Encoder enhancement
    • WebUi session enhancement and fixes
  • 2.6.2:

    • Fixed T-Embed CC1101 OTA Link
    • Changed SD file listings for speed(PR 230) Issue 229 thanks @geo-tp and @emericklaw
  • 2.6.1:

    • Fixed T-Deck Plus touchscreen (added new env for it)
    • Fixed M5Stack CoreS3 SD Card not mounting
    • Add Delete from Favorites option
  • 2.6.0:

    • Pulling data from my new API, integrating all device lists with the M5Burner API, and counting downloads in the M5Burner database.
    • OTA Pagination (pages of 100 firmware ordered by download-default)
    • New Device: M5Stack Tab5.
    • New Device: Lilygo T-HMI
    • New Feature: Backup SPIFFS/FAT now prompts to merge data into a chosen binary, so you can install firmware and data by choosing SPIFFS Yes during install, and backup binaries now have incremental names.
    • New Feature: Added filter and ordering to the firmware list.
    • New Feature: Added a Starred firmware list (controlled by me; support the project to have your firmware added to the starred list.).
    • New Feature: Added "Favorite" (requires SD card), where you can add firmware from the OTA list or manually add binary links from your local server or elsewhere.
    • config.conf changes:
...
    "favorite": [
      { // Example of firmware added into Favorites through OTA function
        "name": "Evil-Cardputer-7h30th3r0n3",
        "fid": "2128851a0c98a4c1d15ac1a327b49812",
        "link": ""
      },
      { // Example of my custom link file added by manually editing this file
        "name": "Launcher Beta link",
        "fid": "", // leave it blank
        "link": "https://github.com/bmorcelli/Launcher/releases/download/beta/Launcher-m5stack-cardputer.bin"
      },
      {
        "name": "Bruce Beta link",
        "fid": "",
        "link": "https://github.com/pr3y/Bruce/releases/download/betaRelease/Bruce-m5stack-cardputer.bin"
      },
    ],
    "c0:4e:30:13:8d:f4": 1, // Rotation is now bound to hardware MAC
...