Automatically monitors GitHub for new Meshtastic firmware releases and sends notifications to your mesh network. No custom firmware required!
- π Automatic notifications - Sends messages to your mesh when new firmware is released
- π― Alpha or Stable - Choose to monitor Alpha (pre-release) or Stable releases
- π Flexible connectivity - Supports both Serial/USB and Bluetooth connections
- β° Configurable intervals - Check as often or as rarely as you like
- π» Windows optimized - Easy setup with Task Scheduler or Startup folder
- π« No custom firmware - Works with stock Meshtastic firmware
- Windows, macOS, or Linux (instructions below are Windows-focused)
- Python 3.7 or newer
- Meshtastic node connected via Serial/USB or Bluetooth
- Internet connection to check GitHub
Download and install Python from python.org
Important: During installation, check "Add Python to PATH"
Verify installation:
python --versiongit clone https://github.com/yourusername/meshtastic-firmware-notifier.git
cd meshtastic-firmware-notifierOr download the ZIP and extract it to a folder like:
C:\Projects\Meshtastic\Scripts\VersionBroadcast\
pip install -r requirements.txtOr manually:
pip install meshtastic requests- Connect your Meshtastic device via USB
- Open Device Manager (
Windows + Xβ Device Manager) - Expand "Ports (COM & LPT)"
- Note your device's COM port (e.g., COM3, COM4, COM5)
Tip: Unplug/replug the device to see which port appears/disappears
python meshtastic_firmware_checker.py --setupYou'll be asked to configure:
- Connection type: Serial/USB or Bluetooth
- Port/Address: Your COM port or Bluetooth MAC address
- Release type: Alpha (pre-releases) or Stable only
- Check interval: How often to check (default: 12 hours)
Run a single check to verify everything works:
python meshtastic_firmware_checker.py --check-onceFirst run output:
[2026-01-12 14:43:22] Checking for updates...
Found Alpha release: v2.5.0.abc123d
Latest version: v2.5.0.abc123d
Last known version: None
First run - saving current version as baseline
β Saved v2.5.0.abc123d as baseline
The first run establishes a baseline - no notification is sent. Subsequent runs will notify when a new version is detected.
The script will start automatically when you log in:
- Press
Windows + R - Type:
shell:startupand press Enter - Right-click in the folder β New β Shortcut
- Browse to
run_checker.batin your installation folder - Name it "Meshtastic Firmware Checker"
- Click Finish
β Script now runs automatically on login!
For more control (e.g., run even when not logged in):
- Open Task Scheduler (search in Start menu)
- Click "Create Basic Task"
- Name: Meshtastic Firmware Checker
- Trigger: "When I log on" (or "Daily" for scheduled checks)
- Action: "Start a program"
- Program/script: Browse to
run_checker.bat - Start in: Your installation folder
- Finish
To run when not logged in:
- Right-click task β Properties
- Check "Run whether user is logged on or not"
- Enter your password when prompted
Start the continuous checker whenever convenient:
python meshtastic_firmware_checker.pyPress Ctrl+C to stop.
Or run single checks on-demand:
python meshtastic_firmware_checker.py --check-onceIf your laptop isn't always on, set up a daily check:
- Create Task Scheduler task as above
- Trigger: "Daily" at a time your laptop is typically on
- Action:
- Program:
python - Arguments:
meshtastic_firmware_checker.py --check-once - Start in: Your installation folder
- Program:
Settings are stored in firmware_checker_config.json:
{
"github_repo": "meshtastic/firmware",
"last_version": "v2.5.0.abc123d",
"connection_type": "serial",
"serial_port": "COM4",
"bluetooth_address": null,
"check_interval_hours": 12,
"release_type": "alpha",
"message_prefix": "π New Meshtastic firmware available: "
}| Option | Values | Description |
|---|---|---|
connection_type |
"serial" or "bluetooth" |
How to connect to your device |
serial_port |
"COM3", "COM4", etc. |
Serial port (Windows) or /dev/ttyUSB0 (Linux) |
bluetooth_address |
MAC address | Bluetooth address if using BLE |
release_type |
"alpha" or "stable" |
Monitor pre-releases or stable only |
check_interval_hours |
Number | Hours between checks |
message_prefix |
Text | Message sent before version number |
You can either:
- Edit
firmware_checker_config.jsondirectly - Re-run setup:
python meshtastic_firmware_checker.py --setup
Edit the config file and change:
"release_type": "stable"Then reset the baseline by setting:
"last_version": nullRun --check-once to establish new baseline.
python meshtastic_firmware_checker.py [OPTIONS]| Option | Description |
|---|---|
| (no options) | Run continuously with configured interval |
--check-once |
Run a single check and exit |
--setup |
Run interactive setup wizard |
--config FILE |
Use alternate config file |
--help |
Show help message |
- First Run: Queries GitHub for latest release matching your
release_type(alpha/stable) - Baseline: Saves version as baseline in config file
- Subsequent Checks: Compares GitHub's latest release to saved baseline
- New Version: Sends notification to mesh network via your connected node
- Update Baseline: Saves new version to avoid duplicate notifications
Install dependencies:
pip install meshtastic requestsOr if you have multiple Python versions:
python -m pip install meshtastic requestsSerial/USB:
- Verify device is connected
- Check COM port in Device Manager
- Close other programs using the device (Meshtastic app, serial terminals)
- Try different USB cable or port
Bluetooth:
- Verify device is paired in system Bluetooth settings
- Check Bluetooth address is correct
- Ensure device is in range and powered on
Another program is using your device. Close:
- Meshtastic mobile/desktop app
- Serial terminal programs
- Other instances of this script
If python command not found:
- Settings β Apps β Advanced app settings β App execution aliases
- Turn OFF "App Installer python.exe"
- Close and reopen Command Prompt
Or reinstall Python and check "Add Python to PATH"
- Verify shortcut/task path is correct
- Run
run_checker.batmanually to see errors - Check Task Scheduler History for error details
Monitor different release types or use different devices:
python meshtastic_firmware_checker.py --config alpha_config.json
python meshtastic_firmware_checker.py --config stable_config.jsonEdit message_prefix in config:
"message_prefix": "β‘ FIRMWARE UPDATE: "Find your serial device:
# Linux
ls /dev/ttyUSB* /dev/ttyACM*
# macOS
ls /dev/tty.usb*Use this path as your serial port (e.g., /dev/ttyUSB0)
Setup and usage commands are the same as Windows.
meshtastic-firmware-notifier/
βββ meshtastic_firmware_checker.py # Main script
βββ run_checker.bat # Windows launcher
βββ requirements.txt # Python dependencies
βββ README.md # This file
βββ LICENSE # MIT License
βββ .gitignore # Git ignore rules
Contributions are welcome! Feel free to:
- Report bugs
- Suggest features
- Submit pull requests
- Meshtastic Documentation: https://meshtastic.org/docs/
- Issues: Open an issue on GitHub
- Discussions: Start a discussion on GitHub
MIT License - See LICENSE file for details
- Built for the Meshtastic community
- Uses the Meshtastic Python API
- Initial release
- Support for Alpha and Stable release monitoring
- Serial/USB and Bluetooth connectivity
- Windows Task Scheduler integration
- Configurable check intervals
Made with β€οΈ for the Meshtastic community