# 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 8.0 (Oreo). Devices on older Android versions cannot run the current app.
- **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

1. Enable Bluetooth on your phone
2. Power on your Meshtastic device
3. Open the app - it should automatically scan for nearby Meshtastic devices
4. Tap your device in the "Connect a Radio" list
5. For first connection: devices with a screen display a random 6-digit pairing PIN to enter; screenless devices use the fixed default PIN 123456

Alternative connections (for ESP32 boards):

- **WiFi** - If your node is in WiFi client 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 every node your device has heard of - directly or relayed through the mesh - as stored in the device's node database (NodeDB). It is not bounded by a "configured hop count" setting; hop distance is shown per node. Note that some roles are not advertised: REPEATER and CLIENT\_HIDDEN nodes do not send NodeInfo and so do not appear in the list. For each node shown: 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. The app's **Security** section maps to the firmware's `security.*` config namespace (for example `security.serial_enabled`, `security.is_managed`, and the admin-channel settings), not the `device.*` namespace.

## 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](https://wiki.meshamerica.com/books/meshtastic/page/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 17 or later (as of June 2026 the App Store listing lists iOS 17.5 or later). The minimum tracks the most recent iOS versions, so verify the current requirement on the App Store listing when you install.
- **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:

1. Enable Bluetooth on your iPhone/iPad
2. Open the [Meshtastic app](https://wiki.meshamerica.com/books/hardware-guide/page/meshtastic-app) - it will scan for nearby BLE devices
3. On first launch the app presents a connection/Bluetooth screen listing nearby radios; select your node from that list to connect. (App menu labels change between releases, so the exact wording of this screen may differ from your version.)
4. Tap to connect. iOS may require granting Bluetooth permission on first use.
5. iOS typically prompts for the same 6-digit BLE pairing PIN as Android - a random PIN shown on the device screen for nodes with a display, or the default `123456` on screenless nodes. Enter it when prompted.

**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 send and receive *your own* messages over BLE and to view the mesh. This is an iOS system limitation, not a Meshtastic issue. Note that the node itself continues to relay mesh traffic over LoRa independently of the phone - the phone is only needed for your own messaging and to view the mesh, not for the node to relay packets.

**EmComm caveat:** Do not rely on an iOS-tethered node for unattended, always-on relaying or alerting. When the phone sleeps or the app moves to the background, BLE drops and your phone will not receive messages. For emergency-communications relays or always-on coverage, use a dedicated always-on node (or an Android phone / USB connection) rather than an iPhone in your pocket.

## Feature Comparison: Android vs iOS

<table id="bkmrk-featureandroidios-me"><thead><tr><th>Feature</th><th>Android</th><th>iOS</th></tr></thead><tbody><tr><td>Messaging</td><td>Yes</td><td>Yes</td></tr><tr><td>Node map</td><td>Yes</td><td>Yes</td></tr><tr><td>Full Radio Config</td><td>Yes</td><td>Yes (improving with each release)</td></tr><tr><td>Background BLE</td><td>Yes</td><td>No (iOS limitation)</td></tr><tr><td>USB Serial connection</td><td>Yes (with OTG)</td><td>Limited</td></tr><tr><td>WiFi TCP connection</td><td>Yes</td><td>Yes</td></tr><tr><td>Export/Import config</td><td>Yes</td><td>Yes</td></tr><tr><td>[Range test module](https://wiki.meshamerica.com/books/meshtastic/page/range-test-module) control</td><td>Yes</td><td>Yes</td></tr><tr><td>Apple Watch companion</td><td>N/A</td><td>Yes (basic)</td></tr></tbody></table>

## 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](https://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

1. Open client.meshtastic.org in Chrome or Edge (not Firefox)
2. Click "New Connection" → "Serial"
3. Select your device's COM port or /dev/tty device
4. 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 a recent Python 3 (check the current minimum in the project's `pyproject.toml` on github.com/meshtastic/python). 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 a YAML file
meshtastic --export-config > config-backup.yaml

# Restore (apply) a configuration from that YAML file
meshtastic --configure config-backup.yaml

# 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
```