A native, fully-featured desktop application built with PyQt6 and qasync to manage Meshtastic nodes via Bluetooth Low Energy (BLE) on macOS. This client provides a comprehensive interface for messaging, node management, configuration, and telemetry visualization without freezing the GUI.
- Native GUI: Built with PyQt6 for a seamless macOS experience.
- Asynchronous BLE: Uses
qasyncandbleakto handle Bluetooth connections without blocking the interface. - Messaging: Send and receive text messages on Primary, Secondary, and Direct Channels.
- NodeDB Management: Live, sortable list of all mesh nodes with details (SNR, Battery, Position).
- Configuration: Modify LoRa radio settings (Region, Modem Presets) and Channel configurations.
- Offline Mapping: Integrated
foliumandPyQtWebEngineto visualize node locations. Supports loading local map tiles for off-grid use. - Telemetry Dashboard: Real-time plotting of battery voltage and signal strength using
pyqtgraph. - Local Persistence: SQLite database logs all messages and node history locally.
- macOS: 10.15 (Catalina) or later.
- Python: 3.10 or higher.
- pipx: A tool for installing and running Python applications in isolated environments. Install it via Homebrew (
brew install pipx) or via pip (pip install pipx). - Hardware: A Meshtastic device (e.g., Heltec V3, RAK4631, T-Echo) with Bluetooth enabled.
To ensure Bluetooth stability on macOS, it is recommended to use Python 3.13.
-
Clone the repository:
git clone <repository-url> cd meshtastic_mac_client
-
Install the application: Note: Ensure you have the
pyproject.tomlfile in the root directory forpipx install .to work correctly.pipx install --python python3.13 -e . --force ```
-
Run the application:
meshtastic-mac-client
-
Grant Bluetooth Permissions:
- On macOS, go to System Settings > Privacy & Security > Bluetooth.
- Ensure your Python application (or Terminal) has permission to access Bluetooth.
-
Connect:
- Click Scan Devices to find your Meshtastic node.
- Select it from the dropdown and click Connect.
- Sync Files: Update your
pyproject.tomlwith the version pins above. - Clean Environment:
pipx uninstall meshtastic-mac-client rm -rf *.egg-info - Reinstall:
pipx install --python python3.13 -e .
By pinning meshtastic>=2.7.7 in the toml, pipx will guarantee that the meshtastic.ble module is present in the virtual environment it creates.
The application includes a mapping feature that can load tiles from a local directory to function without an internet connection.
- Create a folder named
offline_tilesinside theassetsdirectory. - Download OpenStreetMap tiles (
.pngfiles) for your area of interest and place them into this folder. - Update the
map_panel.pyfile to point theQWebEngineProfilecache location to this folder.