{"id":27173771,"url":"https://github.com/definetlynotai/esp32_flashmate","last_synced_at":"2026-04-13T21:31:39.022Z","repository":{"id":286646879,"uuid":"962081820","full_name":"DefinetlyNotAI/ESP32_FlashMate","owner":"DefinetlyNotAI","description":"A versatile file management and flashing tool for ESP32 devices, designed to simplify the process of flashing, managing projects, and handling configurations. Supports auto-generation of flash configs, project validation, and COM port detection!","archived":false,"fork":false,"pushed_at":"2025-04-07T16:34:54.000Z","size":30,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T17:26:19.897Z","etag":null,"topics":["esp32","flasher","python","simple","terminal"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DefinetlyNotAI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-04-07T16:08:45.000Z","updated_at":"2025-04-07T16:34:58.000Z","dependencies_parsed_at":"2025-04-07T17:26:27.082Z","dependency_job_id":"27ac241c-5d5d-49ad-a16c-639a88ab4a8b","html_url":"https://github.com/DefinetlyNotAI/ESP32_FlashMate","commit_stats":null,"previous_names":["definetlynotai/esp32_flashmate"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinetlyNotAI%2FESP32_FlashMate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinetlyNotAI%2FESP32_FlashMate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinetlyNotAI%2FESP32_FlashMate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinetlyNotAI%2FESP32_FlashMate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DefinetlyNotAI","download_url":"https://codeload.github.com/DefinetlyNotAI/ESP32_FlashMate/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248028453,"owners_count":21035806,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["esp32","flasher","python","simple","terminal"],"created_at":"2025-04-09T11:23:23.149Z","updated_at":"2025-10-15T19:33:19.919Z","avatar_url":"https://github.com/DefinetlyNotAI.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ESP32 Ultra Flasher\n\n---\n\n\u003cdiv style=\"text-align:center;\" align=\"center\"\u003e\n    \u003ca href=\"https://github.com/DefinetlyNotAI/ESP32_FlashMate/issues\"\u003e\u003cimg src=\"https://img.shields.io/github/issues/DefinetlyNotAI/ESP32_FlashMate\" alt=\"GitHub Issues\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/DefinetlyNotAI/ESP32_FlashMate/tags\"\u003e\u003cimg src=\"https://img.shields.io/github/v/tag/DefinetlyNotAI/ESP32_FlashMate\" alt=\"GitHub Tag\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/DefinetlyNotAI/ESP32_FlashMate/graphs/commit-activity\"\u003e\u003cimg src=\"https://img.shields.io/github/commit-activity/t/DefinetlyNotAI/ESP32_FlashMate\" alt=\"GitHub Commit Activity\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/DefinetlyNotAI/ESP32_FlashMate/languages\"\u003e\u003cimg src=\"https://img.shields.io/github/languages/count/DefinetlyNotAI/ESP32_FlashMate\" alt=\"GitHub Language Count\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/DefinetlyNotAI/ESP32_FlashMate/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/check-runs/DefinetlyNotAI/ESP32_FlashMate/main\" alt=\"GitHub Branch Check Runs\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/DefinetlyNotAI/ESP32_FlashMate\"\u003e\u003cimg src=\"https://img.shields.io/github/repo-size/DefinetlyNotAI/ESP32_FlashMate\" alt=\"GitHub Repo Size\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n---\n\n**ESP32 Ultra Flasher** is a terminal-based tool to easily flash ESP32 devices. It supports project validation, COM port detection, configuration auto-generation, and flashing of firmware using `esptool`. This project is designed to streamline flashing ESP32 devices, ensuring that configuration files and memory addresses are correctly set up before flashing.\n\n## Features\n\n- **Menu-based interface** for selecting and flashing ESP32 projects.\n- **Semi-Automatic generation of `config.ini`** based on `.bin` files in the project folder.\n- **Memory address validation** to prevent conflicts when flashing multiple `.bin` files.\n- **COM port detection** to list available serial devices and auto-select the correct port for flashing.\n- **Error handling** with detailed messages, highlighting issues such as missing files or incorrect settings.\n- **Interactive flashing process**, allowing the user to choose whether to erase the flash before writing.\n  \n## Requirements\n\n- Tested on Python 3.11.\n- The following Python packages:\n  - `esptool`: for flashing the ESP32.\n  - `serial`: for serial communication with the ESP32.\n  - `tprint`: for colorful terminal outputs and logging.\n\n### Installation\n\n1. Clone the repository or download the script.\n2. Install required dependencies:\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n## Usage\n\n1. **Folder Setup:**\n   - Place your ESP32 project in the `esp32/` folder, make sure the project is in a folder as well, example `esp32/marauder/`.\n   - Each project folder should contain:\n     - `.bin` files (firmware binaries).\n     - `config.ini` (it will be auto-generated if missing with your help).\n\n2. **Run the Tool:**\n   - Navigate to the folder containing the script.\n   - Execute the script:\n     ```bash\n     python esp32_flasher.py\n     ```\n\n3. **Select a Project:**\n   - The tool will display a list of projects found in the `esp32/` folder. You can select a project to flash or choose options to fix issues with the project.\n   - If a project is missing a `config.ini`, you can choose to autogenerate it.\n\n4. **Flashing the ESP32:**\n   - After selecting a project, the tool will prompt you to select a COM port and whether you want to erase the flash before flashing the new firmware.\n   - Once the correct settings are chosen, the flashing process will begin.\n\n5. **Handle Issues:**\n   - If any project has missing or misconfigured files, the tool will display a warning and allow you to fix issues before proceeding.\n\n## Menu Breakdown\n\n- **1. Open folder to fix manually:** Opens the project folder to allow the user to manually edit the files.\n- **2. Autogenerate config.ini:** Automatically generates a new `config.ini` based on the `.bin` files found in the project.\n- **3. Recheck this project:** Re-checks the project for errors after making manual changes or generating a new config file.\n- **4. Return to menu:** Returns to the main project menu.\n\n## Configuration\n\nIf you need to generate or edit the `config.ini` manually, it should be placed in the project folder with the following format:\n\n```ini\n[Settings]\nBaud_Rate = 115200\nfirmware.bin = 0x1000\n...\n```\n\n- `Baud_Rate`: The baud rate used for flashing (e.g., `115200`).\n- Each `.bin` file listed in the `config.ini` must have an associated memory address (in hexadecimal, e.g., `0x1000`).\n\n## Troubleshooting\n\n- **Missing `config.ini`:**\n  If a project doesn't have a `config.ini`, the tool will offer to generate it semi-automatically.\n  \n- **Memory Address Conflicts:**\n  The tool will check for conflicting memory addresses and warn you if two `.bin` files are configured to use the same address.\n\n- **COM Port Detection Issues:**\n  If the tool cannot detect any available COM ports, ensure your ESP32 device is properly connected and try again.\n\n- **Flashing Fails:**\n  If flashing fails, ensure the ESP32 is in bootloader mode and retry.\n\n## Future Ideas\n\n- [ ] Add communication to the tool for already flashed files\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details.\n\n---\n\nIf you have any suggestions or issues, feel free to contribute or open an issue on the GitHub repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdefinetlynotai%2Fesp32_flashmate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdefinetlynotai%2Fesp32_flashmate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdefinetlynotai%2Fesp32_flashmate/lists"}