{"id":31588471,"url":"https://github.com/blockfeed/meshtastic-upgrade","last_synced_at":"2026-05-16T18:02:21.441Z","repository":{"id":317629847,"uuid":"1068191522","full_name":"blockfeed/meshtastic-upgrade","owner":"blockfeed","description":"Python helper to fetch \u0026 flash Meshtastic firmware (alpha/stable), with --board, --change-mode, --port.","archived":false,"fork":false,"pushed_at":"2025-10-02T02:14:04.000Z","size":21,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-02T04:15:04.493Z","etag":null,"topics":["cli","esp32","esp32s3","firmware","meshtastic","python"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blockfeed.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-02T01:52:53.000Z","updated_at":"2025-10-02T02:14:07.000Z","dependencies_parsed_at":"2025-10-02T04:15:54.622Z","dependency_job_id":"6388a8dd-afee-4104-a0d0-76b1353bb197","html_url":"https://github.com/blockfeed/meshtastic-upgrade","commit_stats":null,"previous_names":["blockfeed/meshtastic-upgrade"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/blockfeed/meshtastic-upgrade","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blockfeed%2Fmeshtastic-upgrade","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blockfeed%2Fmeshtastic-upgrade/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blockfeed%2Fmeshtastic-upgrade/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blockfeed%2Fmeshtastic-upgrade/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blockfeed","download_url":"https://codeload.github.com/blockfeed/meshtastic-upgrade/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blockfeed%2Fmeshtastic-upgrade/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278547821,"owners_count":26004775,"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","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cli","esp32","esp32s3","firmware","meshtastic","python"],"created_at":"2025-10-06T02:09:31.697Z","updated_at":"2025-10-06T02:11:06.951Z","avatar_url":"https://github.com/blockfeed.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Meshtastic Firmware Upgrade Helper\n\n## Quick Start (Recommended)\n\nMake the script executable once:\n```bash\nchmod +x ./meshtastic_upgrade.py\n```\n\nUpgrade a tlora_t3s3_v1 to latest alpha on /dev/ttyACM0, using 1200bps mode change:\n```bash\n./meshtastic_upgrade.py --firmware esp32s3 --change-mode --port /dev/ttyACM0 --alpha --board tlora-t3s3-v1\n```\n\n\nA Python-first, verification-friendly helper to download and flash **Meshtastic** firmware bundles.\n\n- Fetches the **latest Stable** release by default, or **latest Alpha** with `--alpha`.\n- Supports `--previous` to select the prior release within the chosen channel (Stable/Alpha).\n- Downloads the correct **platform bundle** (e.g. `esp32s3`) from GitHub releases.\n- Lists all `*-update.bin` images in the bundle.\n- **Optional `--board`**: provide an exact board slug (e.g., `tlora-t3s3-v1`) to auto-select its image.\n- Honors `ESPTOOL_PORT` and passes it through to `device-update.sh`.\n- Checks for `esptool` and suggests `pipx install esptool` if missing.\n- Optional `--change-mode` step for boards that require it.\n- Supports `--dry-run` and `--verbose` for safe previews.\n\n\u003e **Who is this for?**  \n\u003e This tool is intended for **advanced users** who already know which **platform** (esp32, esp32s3, nrf52, rp2040) and **board slug** (e.g., `tlora-t3s3-v1`) they need. Meshtastic does **not** maintain a canonical “device name → firmware image” mapping page; the correct image names are visible inside each release bundle.\n\n## Requirements\n\n- Python 3.8+\n- `esptool` in `PATH`  \n  ```bash\n  pipx install esptool\n  # or\n  python3 -m pip install --user esptool\n  ```\n- Serial port path (e.g., `/dev/ttyACM0` or `/dev/ttyUSB0`).\n\n## Quick Start\n\n```bash\n# Choose your serial port:\npython3 meshtastic_upgrade.py --firmware esp32s3 --port /dev/ttyACM0\n\n# Or via environment:\nexport ESPTOOL_PORT=/dev/ttyACM0\npython3 meshtastic_upgrade.py --firmware esp32s3\n```\n\n### Alpha / Previous / Tag\n\n```bash\n# Latest alpha (prerelease)\npython3 meshtastic_upgrade.py --firmware esp32s3 --alpha --port /dev/ttyACM0\n\n# Previous stable\npython3 meshtastic_upgrade.py --firmware esp32s3 --previous --port /dev/ttyACM0\n\n# Specific tag\npython3 meshtastic_upgrade.py --firmware esp32s3 --tag v2.7.11.ee68575 --port /dev/ttyACM0\n```\n\n### Selecting the Correct Image\n\nAfter download and extraction, the tool lists all `*-update.bin` images in the platform bundle.\n\n- **If you know your board slug**, you can **skip the prompt**:\n  ```bash\n  python3 meshtastic_upgrade.py --firmware esp32s3 --board tlora-t3s3-v1 --port /dev/ttyACM0\n  ```\n  The tool will look for a filename like:\n  `firmware-\u003cboard\u003e-\u003cversion\u003e-update.bin`, e.g. `firmware-tlora-t3s3-v1-2.7.11.ee68575-update.bin`.\n\n- **Otherwise**, copy/paste the exact filename from the list when prompted.\n\n\u003e **Note:** There is no official centralized mapping between “device model names” and Meshtastic **board slugs**. Verify your specific board slug from the release assets or your hardware documentation.\n\n### Change Mode (Optional)\n\nSome boards require a change-mode step before flashing.\n\n```bash\npython3 meshtastic_upgrade.py --firmware esp32s3 --board tlora-t3s3-v1 --port /dev/ttyACM0 --change-mode\n```\n\nIf `--change-mode` fails, the tool **aborts** (no flashing).\n\n### BOOT/Download Mode\n\n\u003e For some boards (t3s3, etc), you may need to **hold the BOOT (or 0) button while powering on**.\n\nThe tool pauses before flashing so you can prepare the device.\n\n### Dry Run / Verbose\n\n```bash\npython3 meshtastic_upgrade.py --firmware esp32s3 --dry-run --verbose\n```\n\nPrints the selected release, paths, and exact commands without flashing.\n\n## Troubleshooting\n\n- **`ESPTOOL_PORT is not set`**: use `--port /dev/ttyACM0` or `export ESPTOOL_PORT=/dev/ttyACM0`.\n- **`esptool not found`**: `pipx install esptool`.\n- **`device-update.sh` not found**: ensure you’re using an official release bundle.\n- **Board not found** with `--board`: re-run without `--board` and select the image interactively.\n\n## Safety \u0026 Idempotence\n\n- Two-step flash with optional `--change-mode` first.\n- No writes occur with `--dry-run`.\n- Uses a cache directory (`.meshtastic_firmware_cache/`) to avoid repeated downloads.\n\n## License\n\nThis project is licensed under the GNU General Public License v3.0 (GPL-3.0).  \nSee the [LICENSE](LICENSE) file for full details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblockfeed%2Fmeshtastic-upgrade","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblockfeed%2Fmeshtastic-upgrade","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblockfeed%2Fmeshtastic-upgrade/lists"}