MCPcopy Create free account
hub / github.com/bmorcelli/Launcher

github.com/bmorcelli/Launcher @2.7.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release 2.7.2 ↗ · + Follow
1,079 symbols 2,981 edges 140 files 285 documented · 26% updated 7d ago2.7.2 · 2026-05-25★ 1,80931 open issues

Browse by type

Functions 1,011 Types & classes 68
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Launcher

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

<img src="https://github.com/bmorcelli/Launcher/blob/main/M5Launcher.png?raw=true"> <img src="https://github.com/bmorcelli/Launcher/blob/main/New Launcher.jpg?raw=true" width="240" height="135"> <img src="https://github.com/bmorcelli/Launcher/blob/main/Launcher_anim.webp?raw=true" width="auto" height="135">

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

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.7.2:

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

    • [x] Fixed Launcher auto updater process.
  • 2.7.0:

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

Older Changelogs

  • 2.6.10:

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

    • [X] Port to NM-CYD-C5
    • [x] Port to 3248W535C
    • [x] Port to Waveshare-ESP32-S3-LCD-1.47
    • [x] Port to T-Dongle-C5 (tft)
    • [x] Port to T-Display S3 AMOLED Plus
    • [x] Fix issue where brightness wasn't being saved
    • [x] Fix issue where custom "downloads" folder wasn't being used
    • [x] Fix issue where some firmware downloads weren't working due to prohibited characters in firmware names
    • [x] Fixed SD card not mounting on T-Watch Ultra and adjusted UI for rounded edges on the main menu and file listings
    • [x] Enabled WASD navigation for Lilygo T-LoraPager, T-Deck, T-Deck Plus, and T-Deck Pro
    • [x] 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.
    • [x] Added an "OFF" option to the main screen to turn off the device (DeepSleep when PMIC is not available).
    • [x] Centralized main libraries using git submodules, so it doesn't download many copies of the same library to the .pio/libdeps/**/ folder
    • [x] Speed up workflow using GitHub cache for framework and libs
  • 2.6.8:

    • [x] Increased Game Station partition sizes. https://github.com/bmorcelli/Launcher/issues/299
    • [x] Added an option to erase the app partition
    • [x] Added an option to always boot into Launcher https://github.com/bmorcelli/Launcher/issues/292
    • [x] Added "APP" menu item to reboot into the last installed firmware
    • [x] Enhanced NVS partition and partition schemes for UiFlow2
    • [x] Fix M5Stack Tab5 WiFi scan and WebUI in AP mode.
    • [x] New Device: Lilygo T-Watch-S3
    • [x] New Device: Lilygo T-Watch-Ultra
    • [x] New Device: Lilygo E-Paper S3 Pro H752-x
  • 2.6.7:

    • [x] 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.
    • [x] Tab5 now has a Mass Storage interface!
    • [x] Fixed M5Stack Paper S3 USB Mass Storage issue https://github.com/bmorcelli/Launcher/issues/287 and OTA will show only S3 firmware.
    • [x] Added app offset parameter to allow Launcher to be updated in Tab5, and firmware that is placed at different factory/app0 addresses.
    • [x] Set StickC and CPlus devices to see only ESP32 firmware on OTA, excluding ESP32-S3 (StickS3) firmware
    • [x] 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:

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

    • [x] Fixed CYD 3243S035R touchscreen rotation
    • [x] Fixed Marauder V7 screen issues
    • [x] Enhanced M5-PaperS3 display, using Sprites now for better drawing resolution
    • [x] Fixed M5Stack Cardputer ADV keyboard not adding '*' and '('
    • [x] 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:

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

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

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

    • [x] Pulling data from my new API, integrating all device lists with the M5Burner API, and counting downloads in the M5Burner database.
    • [x] OTA Pagination (pages of 100 firmware ordered by download-default)
    • [x] New Device: M5Stack Tab5.
    • [x] New Device: Lilygo T-HMI
    • [x] 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.
    • [x] New Feature: Added filter and ordering to the firmware list.
    • [x] New Feature: Added a Starred firmware list (controlled by me; support the project to have your firmware added to the starred list.).
    • [x] 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.
    • [x] 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
...

  • 2.5.3:

    • [x] Restored T-Deck OTA
    • [x] Refined T-Deck Touchscreen inputs
  • 2.5.2:

    • [x] Fixed Marauder V6 touchscreen and CYDs touchscreen unresponsive issue and fixed Dim screen
    • [x] Fixed Marauder Mini and V7 screen dimming.
    • [x] Fixed Smoochiee board inputs and SD card issue
    • [x] Fixed Longpress on Cardputer ADV
    • [x] Fixed folder creation on subfolders
  • 2.5.1:

    • [x] Fixed Cardputer ADV Keyboard compatibility
    • [x] Fixed issue where OTA firmware list wasn't being fully downloaded.
  • 2.5.0:

    • [x] Moving to pioarduino 3.3 b

Core symbols most depended-on inside this repo

Shape

Function 692
Method 319
Class 63
Enum 5

Languages

C++93%
TypeScript5%
Python3%

Modules by API surface

include/VectorDisplay.h132 symbols
src/partition_table_model.cpp58 symbols
src/webInterface.cpp55 symbols
lib/utility/AXP192.cpp53 symbols
src/idf/idf_update.cpp39 symbols
src/tft.h36 symbols
src/settings.cpp36 symbols
src/partitioner.cpp36 symbols
webUi/scripts.js33 symbols
src/onlineLauncher.cpp28 symbols
src/massStorage.cpp28 symbols
src/app_registry.cpp27 symbols

For agents

$ claude mcp add Launcher \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page