Meshtastic Apps and Interfaces
Meshtastic Android App Overview
The Meshtastic Android app is the primary interface for configuring and using Meshtastic devices. It is the most feature-complete of the Meshtastic client apps and receives updates most frequently.
Installation and Requirements
- Google Play Store - Search "Meshtastic". Official app by Meshtastic LLC.
- Minimum Android version - Android 6.0 (API 23) for basic functionality; Android 8.0+ recommended for full Bluetooth 5 support
- Bluetooth - Required for local BLE connection to your node
- Location permissions - Required for mapping features; the app can use your phone's GPS to display your position on the mesh map
Connecting to a Node
- Enable Bluetooth on your phone
- Power on your Meshtastic device
- Open the app - it should automatically scan for nearby Meshtastic devices
- Tap your device in the "Connect a Radio" list
- For first connection: confirm the pairing PIN displayed on the device (if equipped with a screen), or accept the default PIN
Alternative connections (for ESP32 boards):
- WiFi - If your node is in WiFi client mode or AP mode, the app can connect via TCP at the node's IP address
- USB Serial - Some Android phones support OTG USB connection; the app supports serial connection if your phone has OTG capability
Key App Screens
Messages
Shows conversation threads. "Primary Channel" is the default public channel. Additional configured channels appear as separate tabs. Direct message threads appear separately. The app shows sent/received/acknowledged status for each message.
Nodes
Lists all nodes visible to your network within the configured hop count. Shows: node name, short name, last heard timestamp, signal quality (SNR/RSSI), battery level, and distance/bearing from your location. Tap a node to see detailed info or initiate a direct message.
Map
Displays node positions on a map. Your node appears as a solid icon; other nodes appear with their short names. Tap a node on the map to see its details. The map works offline if you've previously loaded the tiles for that area (tiles are cached on first use).
Radio Config
Device configuration organized into sections: Device, Position, Power, Network, Display, LoRa, Bluetooth, and Security. Changes are pushed to the connected node immediately when saved.
Useful App Features
- Channel QR code sharing - Share your channel configuration as a QR code that other users can scan to join
- Export Config - Save your node's full configuration to a file for backup or migration
- Node DB - View and manage the list of known nodes; remove stale entries with "Remove Node"
- Waypoints - Share location pins with the mesh; useful for marking hazards, meeting points, or SAR targets
- Range Test - Activate the Range Test module directly from the app
Meshtastic iOS App Overview
The Meshtastic iOS app provides core functionality for iPhone and iPad users, including messaging, node management, and configuration. Feature parity with the Android app has improved substantially in recent releases.
Installation
- Apple App Store - Search "Meshtastic". Requires iOS 16.0 or later.
- TestFlight beta - Beta versions available through Apple TestFlight for users who want early access to new features
Connecting Your Node
iOS Bluetooth handling differs from Android:
- Enable Bluetooth on your iPhone/iPad
- Open the Meshtastic app - it will scan for nearby BLE devices
- Your node should appear under "Radio Configuration" → "Radio"
- Tap to connect. iOS may require granting Bluetooth permission on first use.
- The node pairs automatically - no PIN entry required in most cases
Important iOS difference: iOS does not allow background BLE connections to stay active when the app is not in the foreground. Your phone must be awake and the Meshtastic app must be active to relay messages. This is an iOS system limitation, not a Meshtastic issue.
Feature Comparison: Android vs iOS
| Feature | Android | iOS |
|---|---|---|
| Messaging | Yes | Yes |
| Node map | Yes | Yes |
| Full Radio Config | Yes | Yes (improving with each release) |
| Background BLE | Yes | No (iOS limitation) |
| USB Serial connection | Yes (with OTG) | Limited |
| WiFi TCP connection | Yes | Yes |
| Export/Import config | Yes | Yes |
| Range test module control | Yes | Yes |
| Apple Watch companion | N/A | Yes (basic) |
iOS-Specific Tips
- Keep the app active - To receive messages in real time, keep the app in the foreground or enable background app refresh (Settings → General → Background App Refresh → Meshtastic)
- Notifications - Enable notifications in iOS Settings to get alerts for new messages even when the app is in the background
- WiFi connection for always-on monitoring - If your node is on the same WiFi network, the iOS app can maintain a TCP connection more reliably than BLE for long sessions
Meshtastic Web Client and Python CLI
Meshtastic Web Client
The Meshtastic Web Client (client.meshtastic.org) provides a browser-based interface for configuring Meshtastic nodes without installing a mobile app. It supports WebSerial (Chrome/Edge) for USB connections and WebBluetooth for BLE connections on supported platforms.
Use Cases for the Web Client
- Configuring nodes on a desktop computer without a phone
- Full configuration access on laptops where the mobile app isn't practical
- Quick configuration of multiple nodes at a deployment event
- Advanced configuration options that may appear in the web client before the mobile apps
Connecting via Web Serial
- Open client.meshtastic.org in Chrome or Edge (not Firefox)
- Click "New Connection" → "Serial"
- Select your device's COM port or /dev/tty device
- The full configuration interface loads directly in the browser
Meshtastic Python CLI
The Python CLI is the most powerful configuration interface - it provides access to every configurable parameter and supports automation scripting.
Installation
pip install meshtastic
Requires Python 3.8+. Works on Windows, macOS, and Linux.
Essential Commands
# Connect to a serial node and show device info
meshtastic --info
# List all nodes in the node database
meshtastic --nodes
# Set a configuration value
meshtastic --set lora.modem_preset MEDIUM_SLOW
# Set multiple values at once
meshtastic --set device.role ROUTER --set bluetooth.enabled false
# Export full configuration to JSON
meshtastic --export-config > config-backup.json
# Import configuration from JSON
meshtastic --import-config config-backup.json
# Send a test message
meshtastic --sendtext "Test message from CLI"
# Listen to all incoming packets
meshtastic --listen
# Connect to a node via TCP (WiFi/network)
meshtastic --host 192.168.1.100 --info
# Factory reset
meshtastic --factory-reset
Scripting with Python API
import meshtastic
import meshtastic.serial_interface
# Connect
iface = meshtastic.serial_interface.SerialInterface()
# Get device info
info = iface.localNode.localConfig
print(info)
# Send a message
iface.sendText("Hello mesh!")
# Listen for messages
from pubsub import pub
def on_receive(packet, interface):
print(f"Received: {packet}")
pub.subscribe(on_receive, "meshtastic.receive")
iface.close()
Specifying a Connection
# Serial (auto-detect)
meshtastic --info
# Serial (specific port - Windows)
meshtastic --port COM3 --info
# Serial (specific port - Linux/Mac)
meshtastic --port /dev/ttyUSB0 --info
# TCP (WiFi connection)
meshtastic --host 192.168.1.100 --info
# BLE (by node name)
meshtastic --ble "Meshtastic_ABCD" --info