# MeshCore App Guide

# Getting Started with the MeshCore App

The MeshCore app is your primary interface for configuring and using MeshCore devices. It connects to your node via Bluetooth and provides access to messaging, network status, and device configuration.

## Installing the App

- **Android** - Available on Google Play Store: search "MeshCore". Minimum Android 8.0 (API 26).
- **iOS** - Available on the Apple App Store: search "MeshCore".
- **Desktop/CLI** - The MeshCore serial console is accessible via any terminal emulator at 115200 baud for full configuration access.

## First Connection

1. Power on your MeshCore device
2. Open the MeshCore app
3. Tap "Scan for devices" - your node should appear in the list
4. Tap your device to pair. No PIN is typically required for initial pairing.
5. Once connected, the app shows the main interface with messaging, contacts, and settings

## App Overview

### Messages Tab

Shows conversation threads. Public channel messages appear in a "Public" thread. Direct messages to specific nodes appear as separate threads. Tap a contact or "Public" to open a conversation and type a message.

### Contacts Tab

Lists nodes that have been discovered by your node via advertisements. Each contact shows:

- Node name
- Last heard timestamp
- RSSI/SNR of last received advertisement
- Battery status (if reported)
- GPS coordinates and distance (if the node has GPS)

### Settings Tab

Device configuration options including radio settings, advertisement configuration, position, and security settings. Changes are pushed to the connected device immediately.

## Connecting to a Community Network

1. Tap Settings → Choose Preset
2. Select **USA/Canada (Recommended)** for North American networks
3. Set your node name to something identifiable (your callsign or a location name)
4. Enable advertisements and set flood mode to reach the full network
5. Return to Contacts - nearby repeaters should appear within a few minutes as their advertisements arrive

# MeshCore App: Messaging and Contacts

## Sending Messages

### Public Channel Messages

Messages sent to the "Public" channel are received by all nodes on the network that share your channel key. For the standard community network using the USA/Canada preset, all nodes on the public channel will see your message.

Public messages are encrypted with the shared channel key - they are not readable by general LoRa observers, but any node with the correct key can decrypt them.

### Direct Messages

Tap a specific contact in the Contacts tab to open a direct message thread. Direct messages use ECDH key exchange - only you and the recipient can read them. Requirements:

- The recipient must have been discovered by your node (appeared in Contacts at some point)
- Their public encryption key must be cached in your node's contact database
- Your message will be routed via whatever path is available to reach them

### Message Delivery Confirmation

MeshCore provides delivery status for direct messages:

- **Sending** - Message has been transmitted locally
- **Delivered** - The destination node has acknowledged receipt
- **Failed** - No acknowledgment received within timeout. The node may be offline or out of route.

Public channel messages do not provide individual delivery confirmations (they're broadcast, not unicast).

## Contact Management

### Contacts Discovered Automatically

Contacts appear automatically when their advertisements reach your node. You don't need to "add" contacts manually - the mesh is self-discovering.

### Contact Information

Tap any contact to see:

- Full node details: name, hardware type, firmware version
- Signal information: last RSSI and SNR readings
- Location: GPS coordinates and bearing/distance from your position
- Battery level (if the node reports it)
- Direct Message button to start an encrypted conversation

### Contact Expiry

Contacts that haven't been heard from in an extended period are marked as "stale" or may be removed from the active contacts list. They reappear when a new advertisement is received from that node.

## Message History and Store-and-Forward

When connected to a room server, you can request message history - public channel messages sent while you were offline. Tap the "Request History" option in the Public channel conversation. The room server will replay stored messages to your node.

Direct messages sent while you were offline may be stored if your network operator has enabled store-and-forward on your network.

# MeshCore App: Radio Settings and Position

## Radio Settings

Access via Settings → Radio (or Device → Radio Config depending on app version).

### Preset Selection

The most important radio setting. Always use the preset that matches your local network:

- **USA/Canada (Recommended)** - North American standard: 910.525 MHz, SF7, BW62.5 kHz, CR5. Use this unless your local community uses something different.
- **Europe** - 868 MHz band preset. Only for EU hardware and EU-region networks.
- **Custom** - Manual parameter entry. Only use if you know exactly what you're doing and why.

> Do not use Custom preset unless your network coordinator specifically instructs you to. Incorrect custom settings make your node invisible to the rest of the network.

### TX Power

Transmit power in dBm. Higher power = more range and more power consumption. Maximum legal limit in the US: 30 dBm (1W) conducted. If you have a high-gain antenna, reduce TX power to keep EIRP within 36 dBm (4W). The app displays the maximum for your hardware; leave at default unless you have a specific reason to reduce it.

### Hop Limit

Maximum hops for advertisements. Default is appropriate for most deployments. Increase to 5 only on large networks where edge nodes are not discovering repeaters with default settings.

## Position Settings

Access via Settings → Position.

### Enable GPS

If your device has a GPS module, enable it here. GPS provides position for the contact map and enables distance calculation in the contacts list. On fixed infrastructure nodes, GPS is optional if you configure a static position manually.

### Fixed Position

For nodes without GPS, or for fixed repeaters where GPS accuracy is not needed:

1. Enable "Fixed Position"
2. Enter latitude, longitude, and altitude (meters above sea level)
3. Tap Save - the node will broadcast this position in its advertisements

Use your actual deployment coordinates, not your home address. The position is broadcast to the network and appears on community maps.

### Position Privacy

If you don't want your position broadcast on the public network, either disable position reporting or set position precision to a reduced value (gives approximate location rather than exact coordinates). Infrastructure operators typically share full position; personal nodes may prefer reduced precision.

## Advertisement Settings

- **Advertisement Interval** - How often your node broadcasts its existence. Default 720 minutes (12 hours) is appropriate for stable deployments. Reduce to 60 minutes during initial setup to confirm discovery.
- **Advertisement Hops** - How far your advertisement propagates. 0 = local only; 3+ = network-wide. For community repeaters, set to 3 or higher for network-wide visibility.
- **Node Name** - Your node's display name. Use a consistent format with your community's naming convention.