bmorcelli/Launcher

Firmware Launcher for ESP32 boards like: M5Stack, Lilygo, Marauder and CYD devices.

2,115

stars

853

commits

C++

primary language

Sep 14, 2026

updated

bmorcelli.github.io/Launcher/

README

Launcher

Application launcher for M5Stack, Lilygo, SeeedStudio, Waveshare, CYD, Marauder, and many other 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 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
  • Although exFAT and bigger SDCards are supported since 2.8.0, smaller ones are recommended.

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

Latest Changelog

  • 2.10.0:

    • Port to SeeedStudio XIAO ESP32C5 on Headless environment
    • Port to SeeedStudio XIAO ESP32S3 Plus on Headless environment
    • Port to SeeedStudio reTerminal D1001 8"
    • Port to SeeedStudio reTerminal E1001 Monochrome e-Paper Display
    • Port to SeeedStudio SenseCAP Indicator
    • BETA: XTeink X4 Pro Validated UC8xxx display.
    • Added Option to control bootscreen time (from 1 to 5 seconds).
    • Added Option to disable starting Launcher from DeepSleep. Some e-ink firmwares (CrossInk, CrossPoint etc..) use agressive deepsleep controls to save energy, and by default it used to trigger Launcher bootscreen, adding time to the device/firmware recovery. Now you can Disable this behaviour and trigger Launcher only on Power On reason. Use it with care, and in devices with exposed RST button, otherwise getting back to Launcher can be impossible on some devices
    • Added Option to start Launcher when a button is pressed during a restart. This is a siruation where you will only see the Launcher bootscreen if you Turn on/Restart/recover from deepsleep the device if that configured button is pressed. Combined with the previous option it makes Launcher stealthy, and will only show up if you want. Boot Button can't be configured for this function, and it is available only on devices with GPIO driven buttons available (Touchscreen/keyboard/encoder only devices will not have this option)
    • FIXED Lilygo T-Watch Ultra and Lilygo T-Display S3 Amoled Plus touchscreen
    • FIXED M5Stack Tab5 OTA function randomly crashing.
    • Changed M4Stack Paper Mono display backend.
  • 2.9.1:

    • Fix M5-Paper Mono rendering and touch issues.
    • Fix SeeedStudio ReTerminal Sticky back from Deepsleep issue, allowing CrossPoint and other firmware to reboot.
    • Fix Lilygo T-Deck Pro touchscreen issue.
  • 2.9.0:

    • Port to M5-Paper
    • Port to M5-Paper Mono
    • Port to M5-Paper Color - Different workflow, Prints on scren but works only through WebUI. Display takes long time to render, making navigation almost impossible for Launcher.
    • Port to T-Display P4
    • Port to T-Display C5
    • Port to ESP32-S3 ES3C28P 2.8" aka Cheap Black Display, thanks to @AlexeOnTheShip
    • Port to Elecrow Crowpanel Advance ESP32-S3 5.0in
    • Port to Elecrow Crowpanel Advance ESP32-P4 7.0in
    • Port to ESP32 E32R40T 4"
    • Port to SeeedStudio ReTerminal Sticky, thaks to @limengdu
    • Port to Waveshare-ESP32-C5-LCD-1.47
    • Port to Waveshare-ESP32-C6-LCD-1.47
    • Port to Waveshare-ESP32-C6-LCD-1.3
    • Port to XTeink X3
    • BETA: Port to XTeink X4 Pro - Need validating touchscreen and display
    • ATENTION: Arduino Nesso N1 and M5Stack StickS3 Navigation has changed, Front button short press to move Next and Long press to Select, Side button short press to mode Previous an long press to Escape.. on Keyboard, holding Escape will change the moviment from Left/Up to Right/Down, so typing will be easier to handle (after you master it).
    • Added option to opt-out from Automatically connect to a known Network.
    • Added possibility to create new files using the WebUI.
    • Changed brightness control, now it uses a slider bar with 5% steps.
    • Moved display drivers handling to DisplayDrivers lib, using its superclass to handle all display drivers used by Launcher. This removed tft.h/tft_inits.h and the Arduino_GFX DSI patch scripts from the project.
    • Reorganized boards files to make porting easier. It now needs only 2 files and add it to CI/CD. Per-board JSON files were replaced by one per chip family (esp32, esp32s2, esp32s3, esp32c3, esp32c5, esp32c6, esp32p4), and envs that only differ by pinout were merged (m5stack-plus, lilygo-t-embed-all, xteink-x3-x4).
    • Removed phy_init partition and increased NVS to 0x5000
    • Centralized NVS code handlers, and added a nimble compatibility layer between firmwares. Now older and newer versions of nimble_bonds are saved per device (it happens only when using BLE to connect to a device, creating bound data) and it is switched and restored when changing firmware in runtime. relate to this issue
    • Devices are now described by HAS_2_BUTTONS/HAS_6_BUTTONS and long-press navigation, replacing the old per-board button workarounds.
    • Fixed original M5Paper display and SD bus, thanks to @Decentricity
    • Fixed Marauder v6.1 hypersensitive touch and SPI noise, thanks to @H4W9
    • Fixed T-Display P4 install from SD Card and the SD/display bus conflict
    • CI/CD now cancels superseded runs, retries flaky PlatformIO builds and caches the PlatformIO core; added a clang-format script and .gitattributes to keep the source formatted.
  • 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

Older Changelogs

  • 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
  • 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
...

Contributors

bmorcelli

768 commits

dj1ch

22 commits

H4W9

9 commits

Unixware

6 commits

bmorcelli/Launcher

Firmware Launcher for ESP32 boards like: M5Stack, Lilygo, Marauder and CYD devices.

2,115

stars

853

commits

C++

primary language

Sep 14, 2026

updated

bmorcelli.github.io/Launcher/

README

Launcher

Application launcher for M5Stack, Lilygo, SeeedStudio, Waveshare, CYD, Marauder, and many other 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 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
  • Although exFAT and bigger SDCards are supported since 2.8.0, smaller ones are recommended.

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

Latest Changelog

  • 2.10.0:

    • Port to SeeedStudio XIAO ESP32C5 on Headless environment
    • Port to SeeedStudio XIAO ESP32S3 Plus on Headless environment
    • Port to SeeedStudio reTerminal D1001 8"
    • Port to SeeedStudio reTerminal E1001 Monochrome e-Paper Display
    • Port to SeeedStudio SenseCAP Indicator
    • BETA: XTeink X4 Pro Validated UC8xxx display.
    • Added Option to control bootscreen time (from 1 to 5 seconds).
    • Added Option to disable starting Launcher from DeepSleep. Some e-ink firmwares (CrossInk, CrossPoint etc..) use agressive deepsleep controls to save energy, and by default it used to trigger Launcher bootscreen, adding time to the device/firmware recovery. Now you can Disable this behaviour and trigger Launcher only on Power On reason. Use it with care, and in devices with exposed RST button, otherwise getting back to Launcher can be impossible on some devices
    • Added Option to start Launcher when a button is pressed during a restart. This is a siruation where you will only see the Launcher bootscreen if you Turn on/Restart/recover from deepsleep the device if that configured button is pressed. Combined with the previous option it makes Launcher stealthy, and will only show up if you want. Boot Button can't be configured for this function, and it is available only on devices with GPIO driven buttons available (Touchscreen/keyboard/encoder only devices will not have this option)
    • FIXED Lilygo T-Watch Ultra and Lilygo T-Display S3 Amoled Plus touchscreen
    • FIXED M5Stack Tab5 OTA function randomly crashing.
    • Changed M4Stack Paper Mono display backend.
  • 2.9.1:

    • Fix M5-Paper Mono rendering and touch issues.
    • Fix SeeedStudio ReTerminal Sticky back from Deepsleep issue, allowing CrossPoint and other firmware to reboot.
    • Fix Lilygo T-Deck Pro touchscreen issue.
  • 2.9.0:

    • Port to M5-Paper
    • Port to M5-Paper Mono
    • Port to M5-Paper Color - Different workflow, Prints on scren but works only through WebUI. Display takes long time to render, making navigation almost impossible for Launcher.
    • Port to T-Display P4
    • Port to T-Display C5
    • Port to ESP32-S3 ES3C28P 2.8" aka Cheap Black Display, thanks to @AlexeOnTheShip
    • Port to Elecrow Crowpanel Advance ESP32-S3 5.0in
    • Port to Elecrow Crowpanel Advance ESP32-P4 7.0in
    • Port to ESP32 E32R40T 4"
    • Port to SeeedStudio ReTerminal Sticky, thaks to @limengdu
    • Port to Waveshare-ESP32-C5-LCD-1.47
    • Port to Waveshare-ESP32-C6-LCD-1.47
    • Port to Waveshare-ESP32-C6-LCD-1.3
    • Port to XTeink X3
    • BETA: Port to XTeink X4 Pro - Need validating touchscreen and display
    • ATENTION: Arduino Nesso N1 and M5Stack StickS3 Navigation has changed, Front button short press to move Next and Long press to Select, Side button short press to mode Previous an long press to Escape.. on Keyboard, holding Escape will change the moviment from Left/Up to Right/Down, so typing will be easier to handle (after you master it).
    • Added option to opt-out from Automatically connect to a known Network.
    • Added possibility to create new files using the WebUI.
    • Changed brightness control, now it uses a slider bar with 5% steps.
    • Moved display drivers handling to DisplayDrivers lib, using its superclass to handle all display drivers used by Launcher. This removed tft.h/tft_inits.h and the Arduino_GFX DSI patch scripts from the project.
    • Reorganized boards files to make porting easier. It now needs only 2 files and add it to CI/CD. Per-board JSON files were replaced by one per chip family (esp32, esp32s2, esp32s3, esp32c3, esp32c5, esp32c6, esp32p4), and envs that only differ by pinout were merged (m5stack-plus, lilygo-t-embed-all, xteink-x3-x4).
    • Removed phy_init partition and increased NVS to 0x5000
    • Centralized NVS code handlers, and added a nimble compatibility layer between firmwares. Now older and newer versions of nimble_bonds are saved per device (it happens only when using BLE to connect to a device, creating bound data) and it is switched and restored when changing firmware in runtime. relate to this issue
    • Devices are now described by HAS_2_BUTTONS/HAS_6_BUTTONS and long-press navigation, replacing the old per-board button workarounds.
    • Fixed original M5Paper display and SD bus, thanks to @Decentricity
    • Fixed Marauder v6.1 hypersensitive touch and SPI noise, thanks to @H4W9
    • Fixed T-Display P4 install from SD Card and the SD/display bus conflict
    • CI/CD now cancels superseded runs, retries flaky PlatformIO builds and caches the PlatformIO core; added a clang-format script and .gitattributes to keep the source formatted.
  • 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

Older Changelogs

  • 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
  • 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
...

Contributors

bmorcelli

768 commits

dj1ch

22 commits

H4W9

9 commits

Unixware

6 commits

Languages

C++

79.6%

C

9.8%

JavaScript

5.2%

Python

4.7%