{"id":13594537,"url":"https://github.com/marcelstoer/nodemcu-pyflasher","last_synced_at":"2025-05-14T12:12:17.517Z","repository":{"id":45752402,"uuid":"77565174","full_name":"marcelstoer/nodemcu-pyflasher","owner":"marcelstoer","description":"Self-contained NodeMCU flasher with GUI based on esptool.py and wxPython.","archived":false,"fork":false,"pushed_at":"2025-02-07T16:33:52.000Z","size":2308,"stargazers_count":1530,"open_issues_count":12,"forks_count":407,"subscribers_count":65,"default_branch":"master","last_synced_at":"2025-04-11T22:59:22.262Z","etag":null,"topics":["esptool","nodemcu","pyinstaller","wxpython"],"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/marcelstoer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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":"2016-12-28T22:30:26.000Z","updated_at":"2025-04-11T19:19:55.000Z","dependencies_parsed_at":"2024-09-30T19:40:56.318Z","dependency_job_id":"d177264a-89b3-4030-b7b9-d8a36323d3a5","html_url":"https://github.com/marcelstoer/nodemcu-pyflasher","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelstoer%2Fnodemcu-pyflasher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelstoer%2Fnodemcu-pyflasher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelstoer%2Fnodemcu-pyflasher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelstoer%2Fnodemcu-pyflasher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marcelstoer","download_url":"https://codeload.github.com/marcelstoer/nodemcu-pyflasher/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254140768,"owners_count":22021220,"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":["esptool","nodemcu","pyinstaller","wxpython"],"created_at":"2024-08-01T16:01:35.261Z","updated_at":"2025-05-14T12:12:17.132Z","avatar_url":"https://github.com/marcelstoer.png","language":"Python","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=HFN4ZMET5XS2Q"],"categories":["Python"],"sub_categories":[],"readme":"# NodeMCU PyFlasher\n[![License](https://marcelstoer.github.io/nodemcu-pyflasher/images/mit-license-badge.svg)](https://github.com/marcelstoer/nodemcu-pyflasher/blob/master/LICENSE)\n[![Github Downloads (all assets, all releases)](https://img.shields.io/github/downloads/marcelstoer/nodemcu-pyflasher/total.svg?style=flat)](https://github.com/marcelstoer/nodemcu-pyflasher/releases)\n[![GitHub Downloads (all assets, latest release)](https://img.shields.io/github/downloads/marcelstoer/nodemcu-pyflasher/latest/total?style=flat)](https://github.com/marcelstoer/nodemcu-pyflasher/releases)\n[![PayPal Donation](https://img.shields.io/badge/donate_through-PayPal-%23009cde?logo=paypal)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=HFN4ZMET5XS2Q)\n\nSelf-contained [NodeMCU](https://github.com/nodemcu/nodemcu-firmware) flasher with GUI based on [esptool.py](https://github.com/espressif/esptool) and [wxPython](https://www.wxpython.org/).\n\n![Image of NodeMCU PyFlasher GUI](images/gui.png)\n\n## Installation\nNodeMCU PyFlasher doesn't have to be installed, just double-click it and it'll start. Check the [releases section](https://github.com/marcelstoer/nodemcu-pyflasher/releases) for downloads for your platform. For every release there's at least a .exe file for Windows. Starting from 3.0 there's also a .dmg for macOS.\n\n## Status\nScan the [list of open issues](https://github.com/marcelstoer/nodemcu-pyflasher/issues) for bugs and pending features.\n\n**Note**\n\nThis is my first Python project. If you have constructive feedback as for how to improve the code please do reach out to me.\n\n## Getting help\nIn the unlikely event that you're stuck with this simple tool the best way to get help is to turn to the [\"Tools and IDE\" subforum on esp8266.com](http://www.esp8266.com/viewforum.php?f=22).\n\n## Donationware\nAll open-source development by the author is donationware. Show your love and support for open-source development by donating to the good cause through PayPal.\n\n[![PayPal Donations](./images/paypal-256.png)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=HFN4ZMET5XS2Q)\n\n## Build it yourself\nIf you want to build this application yourself you need to:\n\n- Install [Python 3.x](https://www.python.org/downloads/) and [Pip](https://pip.pypa.io/en/stable/installing/) (it comes with Python if installed from `python.org`).\n- Create a virtual environment with `python -m venv venv`\n- Activate the virtual environment with `. venv/bin/activate` (`. venv/Scripts/activate` if you are on Windows with [Cygwin](https://www.cygwin.com/) or [Mingw](http://mingw.org/))\n- Run `pip install -r requirements.txt`\n\n**A note on Linux:** As described on the [downloads section of `wxPython`](https://www.wxpython.org/pages/downloads/), wheels for Linux are complicated and may require you to run something like this to install `wxPython` correctly:\n\n```bash\n# Assuming you are running it on Ubuntu 18.04 LTS with GTK3\npip install -U \\\n    -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04 \\\n    wxPython\n```\n\n## Why this project exists\n\n### Motivation\nThis addresses an issue the NodeMCU community touched on several times in the past, most recently at\n [#1500 (comment)](https://github.com/nodemcu/nodemcu-firmware/pull/1500#issuecomment-247884981).\n\nI stated that based on my experience doing NodeMCU user support it should be a lot simpler to flash NodeMCU for Windows users.\n\n- A number of flashing tools are available but only two are actively maintained: esptool-ck and esptool.py. Only one is endorsed by Espressif: [esptool.py](https://github.com/espressif/esptool) (they hired the developer(s)).\n- 70% of the users of my [nodemcu-build.com](https://nodemcu-build.com) service are on Windows.\n- BUT Windows doesn't come with Python installed - which is required for esptool.py.\n- BUT Windows users in general are more reluctant to use the CLI than Linux/Mac users - which is required for esptool.py.\n\nTo conclude: this is not a comfortable situation for NodeMCU's largest user group.\n\n### The plan\nFor quite a while I planned to write a self-contained GUI tool which would use esptool.py in the background. It should primarily target Windows users but since I'm on Mac it should be cross-platform. Even though I had never used Python before I felt confident to pull this off.\n\n### Implementation\n- Uses the cross-platform wxPython GUI framework. I also tried PyForms/PyQt4 but settled for wxPython.\n- Requires absolutely minimal user input.\n- The esptool.py \"console\" output is redirected to text control on the GUI.\n- Uses [PyInstaller](https://github.com/pyinstaller/pyinstaller) to create self-contained executable for Windows and Mac. The packaged app can run standalone i.e. without installing itself, a Python interpreter or any modules.\n\n## License\n[MIT](http://opensource.org/licenses/MIT) © Marcel Stör\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcelstoer%2Fnodemcu-pyflasher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarcelstoer%2Fnodemcu-pyflasher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcelstoer%2Fnodemcu-pyflasher/lists"}