MeshCom App

Bedienungsanleitung

für iOS und Android · Stand: App 4.30, Firmware 4.40 a · Oktober 2026

Die MeshCom-App bedient MeshCom-Nodes per Bluetooth: Nachrichten, Konfiguration, Messwerte und Karte. Autor der App: OE1KFR, Rainer.

1. Überblick

Die MeshCom-App für iOS und Android ist die Fernbedienung für einen MeshCom-Node. Sie verbindet sich per Bluetooth Low Energy (BLE) mit dem Node und dient zum Senden und Empfangen von Nachrichten, zum Konfigurieren des Nodes, zum Anzeigen von Messwerten und zum Darstellen der gehörten Stationen auf einer Karte. Das Telefon braucht für den Betrieb mit dem Node kein Internet; nur die Kartenkacheln im Map-Tab werden online geladen.

Dieses Handbuch beschreibt den Stand App 4.30 zusammen mit der Firmware 4.40 a. Mit älterer Firmware läuft die App weiter, einzelne Einstellungen fehlen dann (siehe Kapitel 11).

1.1 Die sechs Tabs

Am unteren Rand der App liegt die Tab-Leiste mit sechs Symbolen, von links nach rechts:

SymbolTab (Seitentitel)Wofür
BluetoothDevicesNodes in Reichweite suchen, verbinden, trennen. Auto Reconnect, BLE-PIN je Node (Kapitel 3).
ZahnradNode SettingsDen verbundenen Node konfigurieren (Kapitel 4).
Kreis mit iInfoAkku, GPS, Sensorwerte, Firmware-Version, App-Log (Kapitel 5).
SprechblaseChatNachrichten lesen und schreiben (Kapitel 6). Ein grüner Punkt am Symbol zeigt ungelesene Nachrichten.
GlobusNode MapKarte mit den empfangenen Nodes (Kapitel 7).
PfeilsymbolHeard NodesListe der direkt per Funk gehörten Stationen mit Empfangswerten (Kapitel 8).

1.2 Bedienkonventionen

2. Installation und Berechtigungen

Die App gibt es im Apple App Store und im Google Play Store. Die aktuelle Anleitung zum Download steht auf der Projektseite unter https://icssw.org/meshcom-app/ . Firmware, Flashen und OTA-Update sind auf den Projektseiten beschrieben (https://icssw.org/meshcom-ota-update/).

2.1 Berechtigungen

Beim ersten Start fragt die App folgende Berechtigungen ab. Ohne die ersten beiden ist kein Verbinden möglich.

BerechtigungWozuPlattform
BluetoothNodes suchen und verbinden.iOS: „Bluetooth“. Android 12 und neuer: „Geräte in der Nähe“ (Scan und Verbinden).
StandortPosition des Telefons als Position des Nodes setzen („Set Location - Phone GPS“). Auf Android vor Version 12 braucht außerdem der Bluetooth-Scan die Standortfreigabe.iOS und Android
BenachrichtigungenMeldung und Ton bei einer neuen Nachricht, auch wenn die App im Hintergrund läuft.iOS und Android
Hinweis: Nachrichten, Positionen und Chat-Einstellungen liegen in einer lokalen Datenbank auf dem Telefon. Nachrichten und Positionen werden nach 3 Tagen automatisch gelöscht.

3. Devices-Tab: Verbinden

Der Devices-Tab ist der Startbildschirm. Die App scannt dauernd nach Nodes in Reichweite und zeigt jeden gefundenen Node als Karte an.

3.1 Die Kopfkarte

Die Kopfkarte „Nearby Nodes“ zeigt in der zweiten Zeile den Zustand an und trägt zwei Schalter:

AnzeigeBedeutung
Scanning, tap to connectDer Scan läuft. Ein Tipp auf eine Karte verbindet.
Connecting...Die Verbindung wird aufgebaut.
Tap the node to disconnectVerbunden. Ein Tipp auf die Karte trennt wieder.
Searching for the lost node... / Signal too weak, move closer to the nodeAuto Reconnect arbeitet (siehe 3.5).
Scan pausedDer Scan ist angehalten (zum Beispiel, wenn Bluetooth am Telefon ausgeschaltet ist).
SchalterWirkung
MeshCom onlyAn: Es werden nur Geräte angezeigt, deren Bluetooth-Name mit „MC-“ beginnt. Aus: Alle BLE-Geräte in der Nähe erscheinen.
Auto reconnectAn: Bei verlorener Verbindung sucht die App den Node selbständig und verbindet neu (siehe 3.5). Die Einstellung bleibt gespeichert.

3.2 Die Node-Karten

Jede Karte zeigt:

BalkenRSSIBewertung
4-70 dBm oder bessersehr gut
3-71 bis -80 dBmgut
2-81 bis -90 dBmok
1 (orange)-91 bis -110 dBmschwach
1 (rot)schlechter als -110 dBmsehr schwach, Verbinden wird unsicher
Tipp: Findet die App den Node nicht: Node eingeschaltet? Bluetooth am Telefon an? Näher heran gehen. Ein Node, der gerade mit einem anderen Gerät verbunden ist, sendet keine Bluetooth-Aussendung und taucht nicht in der Liste auf. Ein Node ohne Rufzeichen-Einstellung heißt „XX0XXX-00“.

3.3 Verbinden und Trennen

Tipp auf die Karte des gewünschten Nodes. Während des Verbindens und solange die Verbindung steht, zeigt die Liste nur diese eine Karte. Ein weiterer Tipp auf die Karte trennt die Verbindung wieder; erst dann erscheinen die anderen Nodes wieder.

Nach dem Verbinden passiert Folgendes:

  1. Die App sendet dem Node ein „Hello“ (mit der BLE-PIN, falls hinterlegt).
  2. Der Node schickt seine Konfiguration. Ein Fenster „Loading Config from node. Please wait...“ zeigt den Fortschritt.
  3. Danach wechselt die App automatisch in den Chat-Tab. Gespeicherte Nachrichten und die Liste der gehörten Stationen kommen vom Node.
  4. Alle 20 Sekunden schickt die App die Uhrzeit des Telefons an den Node (Zeitsynchronisation).
Hinweis: Neuer oder gelöschter Node: Hat der Node noch kein Rufzeichen („XX0XXX-00“) oder keine Position, erscheint „Unconfigured Node!“ und die App springt in die Settings. Die App setzt dem Node als Startposition die Position des Telefons. Rufzeichen setzen und Einstellungen speichern: siehe 4.2.

3.4 BLE-PIN je Node

Jeder Node kann mit einer sechsstelligen PIN gegen unbefugtes Verbinden geschützt werden. Standard ist 000000 (kein Schutz). Die App merkt sich die PIN je Node auf dem Telefon.

Das Schlüsselsymbol auf der Node-Karte öffnet das PIN-Fenster:

Achtung: Das PIN-Fenster ändert nur den Eintrag auf dem Telefon („Pin change only in Phone DB“), nicht die PIN im Node. Die PIN im Node setzt man in den Settings (4.5, „Custom BLE PIN 6 Digits“) – dort wird sie zugleich auf dem Telefon gespeichert. Stimmt die gespeicherte PIN nicht mit der im Node überein, trennt der Node die Verbindung ohne Fehlermeldung; die App zeigt dann „BLE Disconnect ... Check the BLE Pin“.

Sammelfunktion: Settings → Advanced Settings → Clear All BLE PINs löscht die gespeicherten PINs aller Nodes auf dem Telefon.

3.5 Auto Reconnect

Reißt die Bluetooth-Verbindung ab (Telefon außer Reichweite, Node neu gestartet, Funkstörung), zeigt die App nicht nur eine Meldung, sondern sucht den Node selbständig und verbindet sich neu. Voraussetzung ist der Schalter Auto reconnect im Devices-Tab.

Ablauf

  1. Bei einem unerwarteten Verbindungsverlust startet ein Zyklus. Oben in der App erscheint das Banner „Auto reconnect“ mit dem Fortschritt und dem Button Cancel. Es erscheint in jedem Tab.
  2. Der Zyklus sucht zuerst. Verbunden wird nur, wenn der Node vor kurzem (innerhalb von 10 Sekunden) gehört wurde, der geglättete Empfang mindestens -90 dBm erreicht, in 8 Sekunden mindestens 2 Aussendungen des Nodes ankamen, er mindestens 3 Sekunden lang gehört wurde und zwei Messungen hintereinander gut waren. Damit verhindert die App Verbindungen, die gleich wieder abreißen würden.
  3. Sind die Bedingungen erfüllt, verbindet die App still im Hintergrund (bis zu 3 Versuche mit wachsender Wartezeit). Nach dem Verbinden lädt sie die Konfiguration wie bei einer normalen Verbindung.
  4. Der Zyklus sucht insgesamt höchstens 60 Sekunden. Ist der Node dann nicht gefunden oder nicht zu verbinden, endet er mit einer Meldung.

Meldungen im Banner

TextBedeutung
Searching for the node... It is not in range yet.Der Node ist noch nicht zu hören.
Node found (-xx dBm). Checking that the signal is stable...Node gehört, die App prüft kurz die Stabilität.
Link quality too low (-xx dBm). The node was heard only n times in 8 s, 2 needed. Move closer to the node.Die Signalstärke reicht, aber der Node wird nur selten gehört. Näher heran gehen. Bis dahin wird nicht verbunden.
Signal too weak (-xx dBm, -90 dBm or better needed). Move closer to the node.Empfang zu schwach. Näher heran gehen.
Reconnecting... (attempt n/3)Verbindung wird aufgebaut.

Wenn der Zyklus ohne Verbindung endet

Die App zeigt dann den Hinweis „BLE Disconnect“ mit dem Grund:

MeldungGrund / was tun
Node not in range. Move closer and reconnect manually.Der Node wurde in 60 Sekunden nicht gehört.
Signal too weak ... The reconnect was not triedEmpfang unter -90 dBm.
Link quality too low ...: the node was heard only rarely.Node wird nur selten gehört.
The connection keeps dropping. Check the signal strength of the node.Die Verbindung riss dreimal innerhalb von zwei Minuten kurz nach dem Wiederverbinden ab. Die App gibt auf, um nicht endlos zu springen.
Reconnect failed: the connection could not be established ...Alle Verbindungsversuche schlugen fehl, meist wegen schlechter Verbindungsqualität.

Wann es keinen Auto Reconnect gibt

App im Hintergrund und Neustart der App

3.6 Laden der Konfiguration überwachen

Nach dem Verbinden überwacht die App, ob alle Konfigurationsdaten ankommen. Kommen 10 Sekunden lang keine Daten mehr, fordert sie die fehlenden Teile automatisch erneut an. Dabei zeigt ein Fenster „Loading Config“ den Fortschritt (zum Beispiel „7 / 14 received“) und den Versuch („attempt n/m“). Kommt gar nichts an, sendet die App das Hello noch einmal. Mit Cancel bricht man das Nachladen ab. Am Ende steht „Config loaded completely.“

3.7 Verbindung verloren, Fehlermeldungen

MeldungUrsache / Abhilfe
BLE Disconnect – Node disconnected! Check the BLE Pin and reconnect to Node!Verbindung abgerissen oder falsche PIN. PIN prüfen (3.4), neu verbinden.
Error Pairing! Remove Node from BLE Devices after Erase/FlashDas Telefon hat noch einen alten Kopplungseintrag, zum Beispiel nach neuem Flashen. In den Bluetooth-Einstellungen des Telefons den Node entfernen („Vergessen“) und neu verbinden.
Error Connection! Remove Node from BLE Devices after Erase/FlashZeitüberschreitung bei einem Node mit Werkseinstellung. Gleiche Abhilfe.
Error on Setting up connection! Remove node from BLE Devices and pair newly!Das Hello konnte nicht gesendet werden. Node am Telefon entfernen und neu koppeln.
Error on Connecting to Node! Please reconnect to Node!Verbindung kam zustande, aber die Benachrichtigungen ließen sich nicht starten. Neu verbinden.
Tipp: Android: Der Fehlercode 133 („GATT_ERROR“) ist ein allgemeiner Fehler beim Verbindungsaufbau. Die App wiederholt den Versuch bei manuellem Verbinden deshalb einmal selbständig. Hilft das nicht, Bluetooth am Telefon kurz aus- und einschalten und neu verbinden.

4. Settings-Tab: Den Node konfigurieren

Der Tab „Node Settings“ zeigt die Einstellungen des verbundenen Nodes und erlaubt, sie zu ändern. Er ist nur sinnvoll, wenn ein Node verbunden ist. Dieses Kapitel folgt der Reihenfolge, in der die Einstellungen in der App stehen. Zu jeder Einstellung steht auch der zugehörige Firmware-Befehl, damit man sie in der Firmware-Dokumentation oder per Manual Command (4.18) wiederfindet.

Hinweis: Einstellungen mit dem Vermerk „nur mit neuer Firmware“ erscheinen nur, wenn der Node sie meldet (siehe Kapitel 11).

4.1 Kopf und Anzeigekarten

Ganz oben stehen das Rufzeichen des Nodes sowie die Sendefrequenz (QRG, in MHz) und die Sendeleistung (TX Pwr, in dBm). Darunter folgen reine Anzeigekarten:

4.2 Callsign

Eingabefeld „Set Node Callsign“, zum Beispiel OE1KFR-1. Die App wandelt in Großbuchstaben um, entfernt eine führende Null der SSID (OE1KFR-02 wird OE1KFR-2) und prüft das Format (Rufzeichen, Bindestrich, SSID 0–99, höchstens 11 Zeichen). Mit dem Haken wird es gesendet.

Achtung: Nach dem Speichern bootet der Node nach etwa 15 Sekunden neu. Die Bluetooth-Verbindung bricht dabei ab. Danach neu verbinden. In der Devices-Liste kann noch der alte Name stehen, bis der Node neu gesehen wird.

Firmware-Befehl: --setcall.

4.3 WiFi Settings

SSID (höchstens 33 Zeichen) und Passwort (höchstens 64 Zeichen) des WLANs, mit dem sich der Node verbinden soll. Das Auge-Symbol blendet das Passwort ein oder aus. Haken: speichern, der Node bootet nach etwa 15 Sekunden neu. RST löscht SSID und Passwort („Wifi Settings reset to none“).

Hinweis: Eine WLAN-Verbindung baut der Node erst auf, wenn er als Gateway läuft oder der Webserver aktiviert ist. Das RAK4631 hat statt WLAN eine Ethernet-Schnittstelle; dort ist dieser Bereich ohne Funktion.

Firmware-Befehle: --setssid, --setpwd.

4.4 APRS Settings

Aufklappbarer Bereich mit drei Karten, die bestimmen, wie der Node in der Map, im Dashboard und auf aprs.fi erscheint.

KarteFunktionBefehl
APRS SymbolKartensymbol. Entweder ein Preset aus der Liste „APRS Map Symbol Preset“ oder von Hand: „Group Character“ (Symboltabelle) und „Character“ (Symbolzeichen), je ein Zeichen.--symid, --symcd
APRS CommentKurzbeschreibung des Nodes, höchstens 15 Zeichen. RST löscht den Kommentar.--aprscomment (--atxt)
APRS NameVorname des Betreibers, höchstens 15 Zeichen. RST löscht den Namen.--setname

4.5 Custom BLE PIN 6 Digits

Setzt die sechsstellige Bluetooth-PIN des Nodes (nur Ziffern, 100000 bis 999999). Haken: PIN im Node setzen und auf dem Telefon speichern. RST setzt die PIN im Node zurück auf 000000 und löscht den Eintrag auf dem Telefon. Zur Funktionsweise siehe 3.4.

Firmware-Befehl: --btcode.

4.6 Set Location - Phone GPS und Manual Location

Firmware-Befehle: --setlat, --setlon, --setalt. Hat der Node ein eingeschaltetes GPS-Modul, liefert dieses die Position.

4.7 Node Time Zone

Hier stellt man ein, wie der Node von UTC auf Ortszeit umrechnet. Diese Zeit zeigt der Node auf seinem Display.

FeldBedeutung
Time Zone PresetAuswahlliste mit Zeitzonen, zum Beispiel „Europe - Vienna“ (gilt auch für Berlin, Zürich, Rom), London, Athen, Moskau, New York, Tokio, Sydney (vollständige Liste in Anhang C). Wählt man ein Preset, füllt die App die Regel ein.
Set Time ZoneEigene POSIX-Regel, zum Beispiel CET-1CEST,M3.5.0,M10.5.0/3. Die Sommer-/Winterzeit schaltet der Node damit automatisch um. Keine Leerzeichen, höchstens 39 Zeichen, nur M-Regeln.
Set UTC OffsetFester Versatz zu UTC in Stunden, zum Beispiel 1 oder -5.5. Das schaltet die automatische Umstellung ab; im Sommer muss man den Wert dann selbst ändern.

Unter den Feldern zeigt die App „Automatic time change active ...“ (Regel aktiv) oder „Fixed offset, no automatic time change.“ RST setzt den Versatz auf 0 und entfernt die Regel.

Tipp: Für Österreich, Deutschland und die Schweiz: Preset „Europe - Vienna“ wählen und den Haken tippen. Danach braucht man die Zeit nie wieder umzustellen.

Firmware-Befehle: --settz, --utcoff. Ein fester Versatz löscht die Regel. Mit älterer Firmware gibt es nur den festen Versatz.

4.8 Country Setting

Die Länderauswahl legt die Funkparameter des LoRa-Moduls fest (Frequenz, Bandbreite, Spreizfaktor ...) passend zu den örtlichen Regeln. Die Frequenz steht in der Liste neben dem Kürzel. Auswahl treffen und Haken tippen; der Node setzt die Parameter. Alle Nodes, die miteinander funken sollen, müssen dieselbe Einstellung haben.

KürzelFrequenz
EU8433,175 MHz
EA433,175 MHz
UK / UK8439,9125 MHz
LA433,925 MHz
PL434,855 MHz
US433,175 MHz
VR2435,775 MHz
868869,525 MHz
915906,875 MHz

Firmware-Befehl: --setctry.

4.9 Group Subscription

Bis zu 6 Gruppennummern (je 1 bis 5 Stellen), die der Node abonniert. Die Information geht an das nächste Gateway, und Nachrichten an diese Gruppen werden zugestellt. Haken: speichern. RST (Reset Groups) setzt alle Gruppen auf 0 (keine Gruppe). Jede belegte Gruppe erhält im Chat-Tab einen eigenen Chat (Kapitel 6). Siehe auch https://icssw.org/grc-gruppen-call/.

Firmware-Befehl: --setgrc.

4.10 User Buttons

Über die Buttons schickt man Schaltbefehle an den Node. Gefüllt = aktiv. Der Zustand wird nach der Rückmeldung des Nodes aktualisiert.

Allgemein

ButtonFunktionBefehl
GATEWAYNode arbeitet als Gateway zwischen Funknetz und MeshCom-Server (Internet oder HAMNET). Nachrichten werden zum Server weitergeleitet und umgekehrt. Server siehe 4.12.--gateway on/off
DISPLAYDisplay des Nodes ein/aus. Ausnahme: hier bedeutet „gefüllt“, dass das Display an ist.--display
RX Gain BoostVerstärkter Empfang. Nur ESP32-Nodes mit SX1262-LoRa-Chip.--setboostedgain
WebserverWeb-Oberfläche des Nodes ein/aus. Braucht eine gültige WLAN-SSID mit Passwort (Meldung „Wifi Settings not set!“ sonst). Beim RAK4631 ohne diese Prüfung.--webserver on/off
MESHAn: Der Node leitet empfangene fremde Nachrichten per Funk weiter (Relais). Aus: Er hört nur und sendet eigene Nachrichten.--mesh on/off
No ALL MsgsBlendet Nachrichten an „*“ beziehungsweise „ALL“ aus (auf dem Node und im Telefon).--nomsgall on/off
BUTTONSchaltet die Auswertung einer angeschlossenen Benutzertaste ein/aus (Pin siehe 4.14). Mit ihr blättert man am Display durch die empfangenen Nachrichten.--button on/off
Wifi APDer Node spannt ein eigenes WLAN (Access Point) auf, wenn kein Router verfügbar ist. Nicht möglich, solange der Node Gateway ist („Gateway Mode active!“).--wifiap on/off

GPS - Position

ButtonFunktionBefehl
GPSOptionales GPS-Modul ein/aus. Bei GPS „OFF“ zeigt der Info-Tab keine Satelliten und kein HDOP.--gps on/off
TRACKTrack-Funktion (SmartBeaconing): Der Node sendet seine Position nach Bewegung als LoRa-APRS-Meldung auf 433,775 MHz.--track on/off
Send POSSendet die Position einmal. Verhalten siehe unten. Zwischen zwei Aufrufen müssen mindestens 10 Sekunden liegen.--sendpos, --sendtrack
POS-InfoFordert die aktuellen Positionsdaten vom Node an. Sie erscheinen im Info-Tab.--pos

Send POS richtet sich nach dem TRACK-Zustand:

Utilities

ButtonFunktionBefehl
Scan I2CDer Node sucht am I2C-Bus nach angeschlossenen Geräten (Sensoren, Display). Das Ergebnis zeigt die App nicht an, es erscheint auf der Konsole des Nodes. Der Button steht auch bei den Sensor Settings.--showi2c
OTA UpdateDer Node startet im Update-Modus neu (Rückfrage „Boot into OTA Mode now?“). Nur ESP32-basierte Nodes; auf RAK4631, T-Echo und Heltec T114 erscheint „Wifi OTA Update not supported!“. Siehe unten.--ota-update
REBOOTStartet den Node neu (mit Rückfrage).--reboot now
Deep SleepSchickt den Node in den Tiefschlaf (mit Rückfrage). Die Verbindung wird getrennt; die App verbindet nicht automatisch neu. Aufwecken am Node (Taste oder Reset).--deepsleep
Hinweis: OTA-Update: Nach dem Neustart ist der Node über das WLAN im Web-Browser erreichbar: RUFZEICHEN.local oder die IP-Adresse des Nodes (steht im Settings-Kopf). Ohne WLAN-Zugang spannt er einen eigenen Access Point auf: Adresse 192.168.4.1 oder Meshcom-OTA.local. Dort lädt man die neue Firmware (.bin) hoch. Die OTA-Firmware hat kein Bluetooth. Ausführliche Anleitung: https://icssw.org/meshcom-ota-update/

KISS Interface (nur mit neuer Firmware)

Vier Buttons steuern die KISS/TCP-Schnittstelle des Nodes (Port 8001), mit der sich externe Programme anbinden lassen:

ButtonFunktionBefehl
KISSKISS/TCP-Port ein/aus.--kiss on/off
TXÜber KISS darf gesendet werden.--kiss tx on/off
RxMetaKISS liefert zusätzlich Metadaten-Frames (RSSI, SNR ...).--kiss meta on/off
AuthKISS verlangt eine Anmeldung. Verwendet das Passwort der Remote Netconsole (4.17). Die App weist darauf hin.--kiss auth on/off

4.11 TX-Power

Schieberegler für die Sendeleistung in dBm. Darunter steht die Leistung in mW und in Prozent des Maximums. Das Maximum hängt von der Hardware ab (meist 17 bis 22 dBm). Bei E22-Nodes zeigt die App nur die Leistung des SX1262; die tatsächliche Leistung hängt vom nachgeschalteten Verstärker im E22 ab (bis 30 beziehungsweise 33 dBm).

Firmware-Befehl: --txpower.

4.12 Gateway Server

Wählt den MeshCom-Server, mit dem ein Node im Gateway-Betrieb verbunden ist. Auswahl treffen und Haken tippen; der Node startet neu.

AuswahlServer für
Austria-OEÖsterreich
Germany-DLDeutschland (Internet)
Germany Hamnet-HCDeutschland (HAMNET)
Italy-ITItalien
Switzerland-HBSchweiz
Poland-SPPolen

Firmware-Befehl: --gateway srv.

4.13 Max Hop (nur mit neuer Firmware)

Begrenzt, über wie viele Stationen (Hops) eine Textnachricht vom eigenen Node aus weitergereicht wird. Auswahl 2, 3 oder 4; Haken tippt zum Speichern. Ein kleinerer Wert entlastet das Netz.

Firmware-Befehl: --maxhop.

4.14 Hardware Pins

Firmware-Befehle: --button gpio, --onewire gpio.

4.15 Sensor Settings

Sensoren am I2C-Bus oder OneWire ein- und ausschalten. Gefüllt = aktiv. Ist ein Sensor eingeschaltet, aber am Bus nicht gefunden worden, färbt sich sein Button rot.

ButtonSensorBefehl
BME280 / BMP280 / BMP390Temperatur, Luftdruck (BME280 auch Feuchte)--bme, --bmp, --390
BME680Temperatur, Feuchte, Druck, Gaswiderstand--680
AHT-20 / SHT21Temperatur und Feuchte--aht20, --sht21
MCU-811Gassensor (eCO2)--811
One WireOneWire-Temperatursensor (Pin siehe 4.14)--onewire
LPS33Wetterdaten-Board am RAK4631--lps33
Sensor InfoFordert die Sensorwerte an, sie erscheinen im Info-Tab--wx
Scan I2CSiehe 4.10 (Utilities)--showi2c

Temperature Offset

Korrekturwert in Grad für die Temperatur der I2C-Sensoren (BME/BMP Offset) und des OneWire-Sensors (Onewire Offset), zum Beispiel -1.5, wenn der Node durch Abwärme zu warm misst. Befehl: --tempoff.

INA226 (nur wenn der Node die Funktion meldet)

Der INA226 misst Spannung und Strom, zum Beispiel an der Solaranlage eines Standorts. Der Bereich zeigt, ob der Baustein am I2C-Bus gefunden wurde („INA226 found ... it is active“) – der Node erkennt ihn beim Start. Einstellbar:

FeldBedeutungBereich
ShuntWiderstand des Messwiderstands in Ohmgrößer als 0,001 und kleiner als 0,5
Max. currentHöchster zu messender Strom in Ampere0 bis 20
Averaged samplesMittelung. Die Auswahl 0 bis 7 entspricht 1, 4, 16, 64, 128, 256, 512 oder 1024 Messungen0–7

Befehle: --shunt, --imax, --isamp. Die Werte erscheinen im Info-Tab (VBUS, VSHUNT, VAMP, VPOW) und in der Map im Detailfenster („Current“).

4.16 Max. Battery Voltage (nur mit neuer Firmware)

Spannung, bei der der Akku als zu 100 % geladen gilt (3,7 bis 4,5 V). Der Bereich erscheint nur bei Nodes mit einzelliger Batterie (LiIon). Mit dem Wert berechnet der Node die Prozentanzeige. Die App akzeptiert auch ein Dezimalkomma. Befehl: --maxv.

4.17 Netzwerk: Fixed IP, IP MTU, Ext. UDP, Remote Netconsole, Manual Routing, Web-Passwort

Fixed IP Settings

Feste IP-Adresse statt DHCP: IP Address, Subnet Mask, Gateway, DNS und optional NTP (leer lassen, wenn nicht benötigt). Haken: speichern, Neustart nach etwa 15 Sekunden. RST stellt wieder DHCP ein. Befehle: --setownip, --setowngw, --setownms, --setowndns, --setownntp.

IP MTU (nur mit neuer Firmware)

Größe der IP-Pakete des Nodes. Auswahl: 1280 (HAMNET/VPN, Standard), 1400, 1500 (reines LAN). Bei Problemen über HAMNET oder VPN beim Standard bleiben. Befehl: --mtu.

Ext. UDP Interface

Der Node reicht die MeshCom-Daten per UDP an ein Gerät im Netzwerk weiter. Eintrag UDP Dest. Addr. (IP-Adresse des Ziels), Haken zum Speichern, und der Schalter Enable schaltet die Funktion ein oder aus. Befehle: --extudpip, --extudp on/off.

Remote Netconsole (nur mit neuer Firmware)

Die Konsole des Nodes ist über das Netzwerk auf Port 2323 erreichbar (zum Beispiel mit einem Terminalprogramm). Schalter Enable und ein Password (höchstens 14 Zeichen). Die App zeigt das Passwort nicht an, man kann es nur setzen oder mit RST löschen. Ohne Passwort ist die Konsole für jeden im Netz offen. Dasselbe Passwort verwendet die KISS-Anmeldung (siehe 4.10). Befehle: --netconsole, --passwd.

Manual Routing (VIA)

Lässt Nachrichten über einen bestimmten Node (Via-Rufzeichen) laufen. Destination Call eintragen (zum Beispiel OE1KFR-12), Haken tippen und den Schalter Enable setzen. RST löscht das Ziel. Mit älterer Firmware erscheint „Manual Route Settings not provided by node. Check FW Update or Re-Connect“. Befehl: --via.

Web UI Password

Passwort für die Web-Oberfläche des Nodes (höchstens 19 Zeichen). Das aktuelle Passwort zeigt die App im Klartext an. RST entfernt es. Befehl: --webpwd.

4.18 Manual Command

Ein beliebiger Node-Befehl von Hand, zum Beispiel --info. Er muss mit zwei Bindestrichen beginnen. Ersetzt die iOS-Tastatur die zwei Striche durch einen langen Strich, meldet die App das: „It starts with a long dash instead of two hyphens“. Länge höchstens 250 Byte. Haken: senden. Die Befehlsliste liefert der Befehl --help und die Firmware-Dokumentation.

Achtung: Ein Befehl wirkt sofort und ohne Rückfrage. Nur Befehle senden, deren Wirkung man kennt (zum Beispiel --cleanflash löscht die Einstellungen des Nodes).

4.19 Battery Display (nur mit neuer Firmware)

Legt fest, ob das Display des Nodes den Akku als Voltage (Spannung) oder Percent (Prozent) anzeigt. Befehle: --volt on, --proz on.

4.20 Advanced Settings

Vier rote Buttons löschen Daten auf dem Telefon. Es gibt keine Rückfrage.

ButtonLöscht
Clear received nodesAlle empfangenen Node-Positionen in der Map.
Clear Text MsgsAlle Nachrichten im Chat-Tab.
Clear MheardsAlle Einträge im Heard-Nodes-Tab.
Clear All BLE PINsDie gespeicherten BLE-PINs aller Nodes (siehe 3.4).

5. Info-Tab

Der Info-Tab zeigt den Zustand des verbundenen Nodes. Solange der Tab sichtbar ist, fragt die App den Node reihum nach neuen Werten (alle 4 Sekunden eine Abfrage). Die Abfrage pausiert, wenn die App im Hintergrund ist, kein Node verbunden ist oder das Log-Fenster offen ist.

KarteInhalt
BatteryLadezustand in Prozent mit Balken (orange unter 30 %, rot unter 15 %), Spannung in Volt und die Hardware des Nodes (zum Beispiel „HELTEC V3“, „RAK4631“).
GPSRechts oben der Zustand: Fix, No Fix oder OFF (GPS ausgeschaltet; Satelliten und HDOP werden dann ausgeblendet). Dazu Latitude, Longitude, Altitude, Satellites, HDOP, Next POS (Zeit bis zur nächsten gesendeten Position, zum Beispiel „5m 20s“), UTC Offset sowie Date und Time in zwei Zeilen.
SensorsMesswerte der eingeschalteten Sensoren: Temp, TOUT (OneWire), Humidity, Press, QNH, GasRes, eCO2, Alt Press und beim INA226 VBUS, VSHUNT, VAMP, VPOW. Werte, die der Node nicht liefert, werden ausgeblendet. Darunter zeigen Chips, welche Sensoren aktiv sind (BME280, BMP280, BMP390, BME680, MCU811, LPS, OneWire, AHT-20, INA226), und der OneWire Pin.
FirmwareVersion (Firmware des Nodes), Build (Datum des Firmware-Builds) und die App Version.

5.1 Das Log

Der Button Log am Ende der Seite öffnet das interne Protokoll der App. Es hilft bei der Fehlersuche (Verbindungsaufbau, Auto Reconnect, Scan-Diagnose). Im Fenster:

Tipp: Bei Verbindungsproblemen: Log öffnen, Copy tippen und das Protokoll an den Support oder in die Fehlermeldung einfügen. Es enthält die Phasen des Verbindungsaufbaus mit Zeiten und die Scan-Zählung der Nodes.

6. Chat-Tab

6.1 Die Chat-Liste

Der Chat-Tab beginnt mit einer Liste der Chats:

Jeder Eintrag zeigt die letzte Nachricht als Vorschau („RUFZEICHEN: Text“), bei ungelesenen Nachrichten einen grünen Umschlag und eine Zähler-Marke. Rechts stehen zwei Symbole:

Ein Tipp auf den Eintrag öffnet den Chat. Oben links führt der Pfeil zurück zur Liste. Das geht auch mit der Zurück-Geste: unter iOS vom linken Rand wischen, unter Android die Zurück-Taste.

6.2 Nachrichten lesen

Eine Nachricht zeigt Uhrzeit und, wenn sie über andere Stationen lief, „· via RUFZEICHEN“, darunter den Absender und den Text. Links im Text erkennt die App und macht sie antippbar. Wechselt das Datum, erscheint eine Datumsleiste. Beim Öffnen eines Chats mit ungelesenen Nachrichten steht die Marke „New Messages“ an der ersten ungelesenen Nachricht. Ein Pfeil unten rechts springt ans Ende des Chats.

Neue Nachrichten meldet die App per Benachrichtigung („New Message from RUFZEICHEN“), auch im Hintergrund. Eigene Nachrichten, Befehle, die mit „--“ beginnen, und gefilterte Nachrichten (6.5) lösen keine Benachrichtigung aus.

6.3 Nachrichten senden

  1. Chat öffnen. Im To All Channel und in einem Group-Chat genügt es, den Text einzutippen.
  2. Im Chat Direct Messages erscheint über dem Textfeld zusätzlich das Feld To Callsign. Das Rufzeichen mit SSID eingeben (zum Beispiel OE1KFR-1). Der Stern daneben öffnet die Favoriten (6.6).
  3. Text im Feld Type Message eintippen (höchstens 150 Zeichen). Das Feld wächst bis zu sechs Zeilen mit.
  4. Auf den Pfeil rechts unten tippen. Das Textfeld ist leer und die Tastatur verschwindet, die Nachricht steht am Ende des Chats.
Hinweis: Ist kein Node verbunden, sind die Felder gesperrt und der Sende-Pfeil rot. Ein Tipp darauf zeigt die Meldung „BLE Disconnect“.

Statussymbole bei eigenen Nachrichten

SymbolBedeutung
HakenSent: Die Nachricht ist beim eigenen Node angekommen.
WolkeHeard: Die Nachricht wurde von einem anderen Node gehört und weitergesendet. Daneben steht das Rufzeichen dieser Station.
Wolke mit HakenAcked: Bei einer Direktnachricht hat der Empfänger die Nachricht erhalten (Bestätigung kam zurück). Bei Rundsprüchen und Gruppen bestätigt der Empfang durch ein Gateway die Weiterleitung an den MeshCom-Server.
Wolke durchgestrichen (orange)Unconfirmed: Eine Direktnachricht blieb nach 6 Minuten ohne Bestätigung. Der Node hat nach vier Aussendungen aufgegeben. Kommt die Bestätigung doch noch, wird das Symbol zu „Acked“.

Direktnachrichten werden vom Node bis zu viermal gesendet, falls sie unterwegs verloren gehen. Die App zeigt trotzdem nur eine Nachricht; doppelt empfangene Kopien erkennt sie und blendet sie aus.

6.4 Nachrichtenmenü (langer Druck)

Ein langer Druck auf eine Nachricht öffnet ein Menü:

EintragWirkung
Copy TextKopiert den Nachrichtentext.
Resend MessageSendet eine eigene Nachricht noch einmal (nur bei eigenen Nachrichten).
Direct MessageWechselt in den DM-Chat mit dem Absender als Empfänger (nicht im DM-Chat selbst).
Reply ToSetzt den Absender als Empfänger und trägt „@RUFZEICHEN “ im Textfeld vor.
Filter TextLegt einen Textfilter mit diesem Nachrichtentext an (6.5).
Add FavouriteNimmt das Rufzeichen in die Favoriten auf (nur im DM-Chat, nur wenn noch nicht vorhanden).
Block CallsignBlendet alle Nachrichten dieses Rufzeichens aus (6.5). Nur bei fremden Nachrichten.

6.5 Filter: Rufzeichen sperren und Texte ausblenden

Der Trichter in der Chat-Liste öffnet das Fenster Filters. Es hat zwei Teile: Filter Global (gilt in allen Chats) und Filter des gewählten Chats (gilt nur dort). In beiden gibt es:

Beim Sperren über das Nachrichtenmenü fragt die App, ob Globally oder nur This Chat Only. Gefilterte Nachrichten bleiben gespeichert, sie werden nur nicht angezeigt.

6.6 Favoriten für Direktnachrichten

Der Stern neben „To Callsign“ öffnet das Fenster Favourites. Mit Add trägt man ein Rufzeichen ein, ein Tipp auf einen Eintrag übernimmt ihn als Empfänger, das rote Kreuz löscht ihn. Rufzeichen kann man auch aus dem Nachrichtenmenü (Add Favourite) übernehmen. Die Liste bleibt gespeichert.

6.7 Hinweis auf Firmware-Update

Läuft der Node mit einer Firmware älter als 4.40 a, zeigt der Chat-Tab nach dem Verbinden einmal den Hinweis „Firmware update recommended“. Mit älterer Firmware können einzelne Funktionen eingeschränkt sein (Kapitel 11).

7. Map-Tab

Die Karte (OpenStreetMap) zeigt alle Nodes, deren Position die App empfangen hat. Die Kartenkacheln werden aus dem Internet geladen; ohne Internet bleibt der Hintergrund leer, die Markierungen sind aber da. Ältere Positionen werden nach drei Tagen gelöscht.

7.1 Markierungen

FarbeBedeutung
ViolettDer eigene (verbundene) Node.
GrünNodes, die der eigene Node direkt per Funk gehört hat (siehe Heard Nodes).
HellblauÖsterreichische Vereinsstationen und Relaisstandorte (Rufzeichen der Form OE1XAB-1), die nicht direkt gehört wurden.
BlauAlle übrigen Nodes, die nur über andere Nodes (Mesh) oder Gateways gehört wurden.

Ein Tipp auf eine Markierung öffnet eine Karte mit den Einzelheiten: Rufzeichen und APRS-Symbol, Koordinaten, Höhe, Akku, Hardware, Anzahl Nachbarn, abonnierte Gruppen, Kommentar und Name. Mit More erscheinen die Sensorwerte, soweit der Node sie sendet (Druck, Temperatur, Feuchte, QNH, eCO2, Gaswiderstand, VBus und Strom des INA226, die Eingänge eines MCP23017). DM wechselt in den Chat und trägt das Rufzeichen als Empfänger ein, Close schließt die Karte.

7.2 Die Schaltflächen

Mit dem Button rechts unten klappt ein Menü mit vier Funktionen auf:

Menü öffnen/schließen (Pfeil nach oben).
Linien: zeigt rote Linien vom eigenen Node zu den direkt gehörten Nodes.
Suchen: Suchleiste und Liste aller bekannten Nodes. Beim Tippen filtert die Liste nach dem Anfang des Rufzeichens. Ein Tipp auf einen Eintrag zentriert die Karte auf diesen Node und öffnet seine Karte.
Zentrieren: verschiebt die Karte auf den eigenen Node.
Map Tracking ein/aus. Die Karte folgt dann der Position des Nodes. Dazu muss der Node ein eingeschaltetes GPS haben. Die App fragt die Position alle 10 Sekunden ab.

Oben rechts steht der Zustand:

Mit + und - zoomt man, mit zwei Fingern ebenfalls. Map Tracking schaltet sich beim Öffnen der Karte selbst ein, wenn der Node ein GPS hat, TRACK ausgeschaltet ist und eine Verbindung besteht.

8. Heard-Nodes-Tab

Der Tab zeigt alle Stationen, die der verbundene Node direkt per Funk gehört hat. Pro Station gibt es eine Karte mit dem Rufzeichen, Datum und Uhrzeit des Empfangs und folgenden Werten. Werte, die der Node nicht sendet, werden ausgeblendet.

WertBedeutung
RSSI (dBm)Empfangsstärke. Gut bis -90, ok bis -100, schwach bis -115, darunter schlecht.
SNR (dB)Signal-Rausch-Abstand. Sehr gut ab -5, gut ab -10, ok ab -15, darunter schlecht.
Dist (km)Entfernung zur Station, wenn deren Position bekannt ist.
HardwareHardware der gehörten Station.
NeighboursAnzahl der Nachbarn, die diese Station meldet.
Hears me (dB)Wie die Station den eigenen Node hört (nur mit neuer Firmware). So erkennt man, ob die Funkverbindung in beide Richtungen trägt.
GatewayErscheint mit „Yes“, wenn die Station ein Gateway ist.

Die Werte sind eingefärbt: grün gut, gelb/orange mittel, rot schlecht. Die Schwellen sind die für LoRa üblichen. Die Signalbalken im Devices-Tab messen dagegen das Bluetooth-Signal zum Telefon und haben eigene Schwellen (3.2). Die Liste wird beim Verbinden vom Node geladen und im Betrieb fortgeschrieben. Löschen: Settings → Advanced Settings → Clear Mheards.

9. Praxis: Typische Abläufe

9.1 Neuen Node in Betrieb nehmen

  1. Node einschalten, in der App den Devices-Tab öffnen und auf die Karte des Nodes tippen.
  2. Meldung „Unconfigured Node!“ bestätigen. Die App wechselt in die Settings.
  3. Callsign eingeben und mit dem Haken speichern. Der Node bootet neu, danach neu verbinden.
  4. Country Setting wählen, speichern.
  5. Node Time Zone (Preset) wählen, speichern.
  6. Position setzen: Set Location - Phone GPS oder Manual Location; bei Nodes mit GPS das GPS (User Buttons) einschalten.
  7. Optional: APRS-Symbol und Kommentar, Gruppen, BLE-PIN. Beim ersten Mal TX-Power auf einen sinnvollen Wert stellen.
  8. Im Devices-Tab Auto reconnect einschalten.

9.2 Node als Gateway betreiben

  1. WLAN eintragen (WiFi Settings) beziehungsweise bei RAK4631 Ethernet anschließen; bei Bedarf feste IP.
  2. Gateway Server passend zum Land wählen (bei HAMNET „Germany Hamnet-HC“).
  3. Button GATEWAY einschalten. Der Node verbindet sich mit dem Server und leitet Nachrichten weiter.
Achtung: Mit eingeschaltetem GATEWAY lässt sich Wifi AP nicht einschalten.

9.3 Firmware-Update per OTA

  1. Settings → User Buttons → OTA Update → „YES“. Der Node startet neu im Update-Modus, die Bluetooth-Verbindung endet (kein Auto Reconnect).
  2. Mit dem Browser die Adresse aufrufen, die die App einblendet (RUFZEICHEN.local, die IP-Adresse oder im AP-Modus 192.168.4.1).
  3. Firmware-Datei (.bin) hochladen. Nach dem Update startet der Node neu; in der App im Devices-Tab neu verbinden.

9.4 Verbindung zu einem Node abgesichert nutzen

  1. In Settings → Custom BLE PIN 6 Digits eine PIN setzen und den Haken tippen (die PIN wird zugleich auf dem Telefon gespeichert).
  2. Auf einem weiteren Telefon: Devices → Schlüsselsymbol der Node-Karte → PIN eingeben → Save PIN, danach verbinden.
  3. PIN vergessen: Mit der seriellen Konsole oder dem Web-Interface des Nodes zurücksetzen; die App kann das erst nach dem Verbinden.

10. Fehlersuche

ProblemMögliche Ursache und Abhilfe
Node erscheint nicht im Devices-TabNode an? Bluetooth und Bluetooth-/Standort-Berechtigung der App erteilt? Näher heran. Schalter „MeshCom only“ aus und wieder an. Der Node sendet nichts, solange ein anderes Gerät verbunden ist.
Verbinden bricht sofort abPIN falsch (3.4). Alten Kopplungseintrag in den Bluetooth-Einstellungen des Telefons entfernen. Unter Android Bluetooth aus und an.
Unter Android ist der Node schwer zu finden oder zu verbindenDas hängt vom Telefon ab. Näher am Node scannen (RSSI -80 dBm oder besser), App neu starten. Unter iOS tritt das selten auf. Das Log (Kapitel 5.1) zeigt die Scan-Zählung des Nodes.
„Loading Config“ bleibt lange stehenDas ist bei vielen gehörten Stationen normal (bis zu einer Minute). Die App fordert fehlende Daten selbst nach (3.6). Hilft das nicht, Cancel, trennen, neu verbinden.
Nach dem Speichern der Einstellungen ist die Verbindung wegDer Node bootet neu (Callsign, WiFi, feste IP, Gateway Server). Neu verbinden.
Button ändert den Zustand nichtDie App wartet auf die Rückmeldung des Nodes (einige Sekunden). Kommt sie nicht, Verbindung prüfen. Mit älterer Firmware gibt es Befehle nicht.
Sensor-Button ist rotDer Sensor ist eingeschaltet, wurde aber am I2C-Bus nicht gefunden. Verdrahtung prüfen, danach Scan I2C am Node.
Nachrichten fehlen im ChatFilter aktiv (Trichter orange)? Rufzeichen gesperrt? Schalter „No ALL Msgs“ aktiv? Die Nachrichten älter als drei Tage sind gelöscht.
Direktnachricht zeigt „Unconfirmed“Keine Bestätigung des Empfängers innerhalb von 6 Minuten. Empfänger nicht erreichbar oder Strecke zu schlecht. Mit Resend erneut senden. Das Rufzeichen immer mit SSID eingeben.
Karte bleibt leerKein Internet für die Kartenkacheln. Markierungen werden trotzdem angezeigt.
Keine Benachrichtigung bei neuen NachrichtenBerechtigung für Benachrichtigungen im Telefon erteilt? Lautsprecher-Symbol des Chats auf „an“? Auf Android die Akkuoptimierung für die App prüfen.

11. Firmware-Versionen

Die App erwartet Firmware 4.40 a oder neuer. Bei älterer Firmware gilt:

Tipp: Die Firmware-Version steht im Info-Tab unter „Firmware → Version“. Firmware-Dateien und Anleitungen zum Aktualisieren gibt es auf den MeshCom-Projektseiten.

Anhang A: Alle Settings und ihre Funktion auf einen Blick

Abschnitt in den SettingsFunktionFirmware-Befehl
CallsignRufzeichen des Nodes (Neustart)--setcall
WiFi SettingsWLAN-SSID und -Passwort (Neustart)--setssid, --setpwd
APRS SettingsSymbol, Kommentar, Name--symid, --symcd, --aprscomment, --setname
Custom BLE PINBluetooth-PIN des Nodes--btcode
Set Location - Phone GPS / Manual LocationFeste Position--setlat, --setlon, --setalt
Node Time ZoneZeitzone, automatische Sommerzeit--settz, --utcoff
Country SettingLoRa-Frequenz und Parameter--setctry
Group SubscriptionBis zu 6 Gruppen abonnieren--setgrc
User Buttons: GATEWAYGateway-Betrieb--gateway
User Buttons: DISPLAYDisplay ein/aus--display
User Buttons: RX Gain BoostVerstärkter Empfang (ESP32 mit SX1262)--setboostedgain
User Buttons: WebserverWeb-Oberfläche--webserver
User Buttons: MESHWeiterleiten fremder Nachrichten--mesh
User Buttons: No ALL MsgsRundsprüche „*“ ausblenden--nomsgall
User Buttons: BUTTONBenutzertaste auswerten--button
User Buttons: Wifi APEigener Access Point--wifiap
User Buttons: GPSGPS-Modul ein/aus--gps
User Buttons: TRACKSmartBeaconing LoRa-APRS--track
User Buttons: Send POSPosition einmal senden--sendpos, --sendtrack
User Buttons: POS-InfoPositionsdaten abfragen--pos
User Buttons: Scan I2CI2C-Geräte suchen--showi2c
User Buttons: OTA UpdateUpdate-Modus (nur ESP32)--ota-update
User Buttons: REBOOT / Deep SleepNeustart / Tiefschlaf--reboot now, --deepsleep
KISS InterfaceKISS/TCP-Port, TX, Metadaten, Anmeldung--kiss ...
TX-PowerSendeleistung--txpower
Gateway ServerServer des Gateways (Neustart)--gateway srv
Max HopHop-Limit für Textnachrichten--maxhop
Hardware PinsPin der Benutzertaste und von OneWire--button gpio, --onewire gpio
Sensor SettingsSensoren ein/aus, Sensor Info, Scan I2C--bme, --bmp, --390, --680, --811, --aht20, --sht21, --lps33, --onewire, --wx
Temperature OffsetTemperaturkorrektur--tempoff
INA226Shunt, Maximalstrom, Mittelung--shunt, --imax, --isamp
Max. Battery VoltageSpannung für 100 % Akku--maxv
Fixed IP SettingsFeste IP, Gateway, DNS, NTP (Neustart)--setownip, --setowngw, --setownms, --setowndns, --setownntp
IP MTUPaketgröße der IP-Schnittstelle--mtu
Ext. UDP InterfaceMeshCom-Daten per UDP weiterreichen--extudp, --extudpip
Remote NetconsoleKonsole im Netzwerk (Port 2323), Passwort--netconsole, --passwd
Manual Routing (VIA)Nachrichten über einen bestimmten Node--via
Web UI PasswordPasswort der Web-Oberfläche--webpwd
Manual CommandBeliebiger Befehl (beginnt mit „--“)beliebig
Battery DisplayDisplay zeigt Spannung oder Prozent--volt, --proz
Advanced SettingsDaten auf dem Telefon löschen(nur App)

Anhang B: Wichtige Grenzwerte

WertGrenze
Nachrichtentext im Chathöchstens 150 Zeichen
Rufzeichen des Empfängers (To Callsign)höchstens 11 Zeichen, mit SSID
Node-Callsignhöchstens 11 Zeichen, Form OE1KFR-1
WLAN-SSID / WLAN-Passwort33 / 64 Zeichen
APRS Comment / APRS Name15 / 15 Zeichen
Web-Passwort / Netconsole-Passwort19 / 14 Zeichen
BLE-PIN6 Ziffern, 100000–999999
Zeitzonenregelhöchstens 39 Zeichen, ohne Leerzeichen
Gruppen6 Plätze, je 1 bis 5 Ziffern
Max. Battery Voltage3,7 bis 4,5 V
INA226 Shunt / Maximalstrom0,001–0,5 Ω / 0–20 A
Manual Commandhöchstens 250 Byte
Aufbewahrung von Nachrichten und Positionen3 Tage
Send POS: Mindestabstand10 Sekunden

Anhang C: Zeitzonen-Presets

PresetPOSIX-Regel
Europe - Vienna (CET; auch Berlin, Zürich, Rom ...)CET-1CEST,M3.5.0,M10.5.0/3
Europe - LondonGMT0BST,M3.5.0/1,M10.5.0
Europe - DublinGMT0IST,M3.5.0/1,M10.5.0
Europe - LisbonWET0WEST,M3.5.0/1,M10.5.0
Europe - Athens (EET; auch Helsinki, Kyiv ...)EET-2EEST,M3.5.0/3,M10.5.0/4
Europe - MoscowMSK-3
Europe - Istanbul<+03>-3
Europe - ReykjavikGMT0
America - New York / Chicago / Denver / Los AngelesEST5EDT,... / CST6CDT,... / MST7MDT,... / PST8PDT,M3.2.0,M11.1.0
America - Phoenix (keine Sommerzeit)MST7
America - Sao Paulo<-03>3
Africa - JohannesburgSAST-2
Asia - Dubai / Kolkata / Shanghai / Tokyo<+04>-4 / <+0530>-5:30 / CST-8 / JST-9
Australia - Sydney (auch Melbourne) / PerthAEST-10AEDT,M10.1.0,M4.1.0/3 / AWST-8
New Zealand - AucklandNZST-12NZDT,M9.5.0,M4.1.0/3
UTCUTC0

In einer POSIX-Regel steht das Vorzeichen umgekehrt wie gewohnt: CET-1 bedeutet UTC+1.

Weiterführende Informationen: https://icssw.org/meshcom-4-0-faq/ und https://icssw.org/meshcom-app/ .

MeshCom App

User Manual

for iOS and Android · Version: App 4.30, firmware 4.40 a · October 2026

The MeshCom app controls MeshCom nodes over Bluetooth: messages, configuration, sensor values and map. App author: OE1KFR, Rainer.

1. Overview

The MeshCom app for iOS and Android is the remote control for a MeshCom node. It connects to the node over Bluetooth Low Energy (BLE) and is used to send and receive messages, configure the node, show measured values and show the heard stations on a map. The phone needs no internet connection to work with the node; only the map tiles in the Map tab are loaded online.

This manual describes app version 4.30 together with firmware 4.40 a. With older firmware the app keeps working, but some settings are missing (see chapter 11).

1.1 The six tabs

The tab bar at the bottom of the app has six icons, from left to right:

IconTab (page title)Purpose
BluetoothDevicesFind nodes in range, connect, disconnect. Auto reconnect, BLE PIN per node (chapter 3).
GearNode SettingsConfigure the connected node (chapter 4).
Circle with iInfoBattery, GPS, sensor values, firmware version, app log (chapter 5).
Speech bubbleChatRead and write messages (chapter 6). A green dot on the icon shows unread messages.
GlobeNode MapMap with the received nodes (chapter 7).
Arrow symbolHeard NodesList of the stations heard directly over radio, with reception values (chapter 8).

1.2 Conventions

2. Installation and permissions

The app is available in the Apple App Store and in the Google Play Store. The current download instructions are on the project page at https://icssw.org/meshcom-app/ . Firmware, flashing and OTA update are described on the project pages (https://icssw.org/meshcom-ota-update/).

2.1 Permissions

On first start the app asks for the following permissions. Without the first one, connecting is not possible.

PermissionPurposePlatform
BluetoothFind and connect to nodes.iOS: "Bluetooth". Android 12 and newer: "Nearby devices" (scan and connect).
LocationUse the position of the phone as the position of the node ("Set Location - Phone GPS"). On Android before version 12 the Bluetooth scan also needs the location permission.iOS and Android
NotificationsAlert and sound for a new message, also when the app runs in the background.iOS and Android
Note: Messages, positions and chat settings are stored in a local database on the phone. Messages and positions are deleted automatically after 3 days.

3. Devices tab: connecting

The Devices tab is the start screen. The app scans continuously for nodes in range and shows each node found as a card.

3.1 The header card

The "Nearby Nodes" header card shows the state in its second line and carries two switches:

DisplayMeaning
Scanning, tap to connectThe scan is running. Tap a card to connect.
Connecting...The connection is being set up.
Tap the node to disconnectConnected. Tap the card to disconnect again.
Searching for the lost node... / Signal too weak, move closer to the nodeAuto reconnect is working (see 3.5).
Scan pausedThe scan is stopped (for example when Bluetooth is switched off on the phone).
SwitchEffect
MeshCom onlyOn: only devices whose Bluetooth name starts with "MC-" are shown. Off: all BLE devices nearby appear.
Auto reconnectOn: when the connection is lost, the app searches for the node on its own and reconnects (see 3.5). The setting is saved.

3.2 The node cards

Each card shows:

BarsRSSIRating
4-70 dBm or bettervery good
3-71 to -80 dBmgood
2-81 to -90 dBmok
1 (orange)-91 to -110 dBmweak
1 (red)worse than -110 dBmvery weak, connecting becomes unreliable
Tip: If the app does not find the node: is it switched on? Is Bluetooth on at the phone? Move closer. A node that is connected to another device sends no Bluetooth advertisement and does not appear in the list. A node without a callsign setting is called "XX0XXX-00".

3.3 Connecting and disconnecting

Tap the card of the node you want. While connecting and as long as the connection is up, the list shows only this one card. Another tap on the card disconnects; only then do the other nodes appear again.

After connecting, the following happens:

  1. The app sends a "Hello" to the node (with the BLE PIN, if stored).
  2. The node sends its configuration. A window "Loading Config from node. Please wait..." shows the progress.
  3. The app then switches to the Chat tab automatically. Stored messages and the list of heard stations come from the node.
  4. Every 20 seconds the app sends the time of the phone to the node (time synchronisation).
Note: New or erased node: if the node has no callsign yet ("XX0XXX-00") or no position, "Unconfigured Node!" appears and the app jumps to the Settings. The app gives the node the position of the phone as start position. Setting the callsign and saving settings: see 4.2.

3.4 BLE PIN per node

Each node can be protected against unauthorised connections with a six-digit PIN. The default is 000000 (no protection). The app remembers the PIN per node on the phone.

The key icon on the node card opens the PIN window:

Warning: The PIN window only changes the entry on the phone ("Pin change only in Phone DB"), not the PIN in the node. The PIN in the node is set in the Settings (4.5, "Custom BLE PIN 6 Digits"), where it is also stored on the phone. If the stored PIN does not match the one in the node, the node drops the connection without an error message; the app then shows "BLE Disconnect ... Check the BLE Pin".

Bulk function: Settings → Advanced Settings → Clear All BLE PINs deletes the stored PINs of all nodes on the phone.

3.5 Auto reconnect

If the Bluetooth connection is lost (phone out of range, node restarted, radio interference), the app does not just show a message, it searches for the node on its own and reconnects. The prerequisite is the Auto reconnect switch in the Devices tab.

Sequence

  1. An unexpected loss of the connection starts a cycle. At the top of the app the banner "Auto reconnect" appears with the progress and a Cancel button. It appears in every tab.
  2. The cycle scans first. It connects only if the node was heard recently (within 10 seconds), the smoothed reception reaches at least -90 dBm, at least 2 advertisements of the node arrived in 8 seconds, it has been heard for at least 3 seconds and two measurements in a row were good. This prevents connections that would drop again immediately.
  3. When the conditions are met, the app connects silently in the background (up to 3 attempts with growing waiting time). After connecting it loads the configuration as for a normal connection.
  4. The cycle searches for 60 seconds at most. If the node is not found or cannot be connected by then, it ends with a message.

Messages in the banner

TextMeaning
Searching for the node... It is not in range yet.The node cannot be heard yet.
Node found (-xx dBm). Checking that the signal is stable...Node heard, the app briefly checks that the signal is stable.
Link quality too low (-xx dBm). The node was heard only n times in 8 s, 2 needed. Move closer to the node.The signal strength is fine, but the node is heard only rarely. Move closer. No connection is tried until then.
Signal too weak (-xx dBm, -90 dBm or better needed). Move closer to the node.Reception too weak. Move closer.
Reconnecting... (attempt n/3)The connection is being set up.

When the cycle ends without a connection

The app then shows the "BLE Disconnect" notice with the reason:

MessageReason / what to do
Node not in range. Move closer and reconnect manually.The node was not heard within 60 seconds.
Signal too weak ... The reconnect was not triedReception below -90 dBm.
Link quality too low ...: the node was heard only rarely.The node is heard only rarely.
The connection keeps dropping. Check the signal strength of the node.The connection dropped three times within two minutes shortly after reconnecting. The app gives up so as not to keep bouncing.
Reconnect failed: the connection could not be established ...All connection attempts failed, usually because of poor link quality.

When there is no auto reconnect

App in the background and app restart

3.6 Monitoring the loading of the configuration

After connecting, the app monitors whether all configuration data arrives. If no data arrives for 10 seconds, it requests the missing parts again automatically. A "Loading Config" window shows the progress (for example "7 / 14 received") and the attempt ("attempt n/m"). If nothing arrives at all, the app sends the Hello once more. Cancel stops the reloading. At the end it says "Config loaded completely."

3.7 Connection lost, error messages

MessageCause / remedy
BLE Disconnect – Node disconnected! Check the BLE Pin and reconnect to Node!Connection dropped or wrong PIN. Check the PIN (3.4), reconnect.
Error Pairing! Remove Node from BLE Devices after Erase/FlashThe phone still has an old pairing entry, for example after flashing again. In the Bluetooth settings of the phone remove ("forget") the node and connect again.
Error Connection! Remove Node from BLE Devices after Erase/FlashTimeout with a node in factory state. Same remedy.
Error on Setting up connection! Remove node from BLE Devices and pair newly!The Hello could not be sent. Remove the node on the phone and pair again.
Error on Connecting to Node! Please reconnect to Node!The connection was made, but the notifications could not be started. Connect again.
Tip: Android: error code 133 ("GATT_ERROR") is a generic error when setting up the connection. For a manual connect the app therefore retries once on its own. If that does not help, switch Bluetooth off and on at the phone briefly and connect again.

4. Settings tab: configuring the node

The "Node Settings" tab shows the settings of the connected node and lets you change them. It only makes sense when a node is connected. This chapter follows the order in which the settings appear in the app. For each setting the matching firmware command is given, so you can find it in the firmware documentation or send it with Manual Command (4.18).

Note: Settings marked "only with new firmware" appear only when the node reports them (see chapter 11).

4.1 Header and display cards

At the very top are the callsign of the node, the transmit frequency (QRG, in MHz) and the transmit power (TX Pwr, in dBm). Below follow read-only cards:

4.2 Callsign

Input field "Set Node Callsign", for example OE1KFR-1. The app converts to upper case, removes a leading zero of the SSID (OE1KFR-02 becomes OE1KFR-2) and checks the format (callsign, hyphen, SSID 0–99, at most 11 characters). The check mark sends it.

Warning: After saving, the node reboots after about 15 seconds. The Bluetooth connection drops. Connect again afterwards. The Devices list may still show the old name until the node is seen again.

Firmware command: --setcall.

4.3 WiFi Settings

SSID (at most 33 characters) and password (at most 64 characters) of the WLAN the node should join. The eye icon shows or hides the password. Check mark: save; the node reboots after about 15 seconds. RST deletes SSID and password ("Wifi Settings reset to none").

Note: The node builds a WLAN connection only when it runs as a gateway or the web server is enabled. The RAK4631 has an Ethernet interface instead of WLAN; this section has no function there.

Firmware commands: --setssid, --setpwd.

4.4 APRS Settings

Collapsible section with three cards that determine how the node appears in the map, in the dashboard and on aprs.fi.

CardFunctionCommand
APRS SymbolMap symbol. Either a preset from the "APRS Map Symbol Preset" list or by hand: "Group Character" (symbol table) and "Character" (symbol code), one character each.--symid, --symcd
APRS CommentShort description of the node, at most 15 characters. RST deletes the comment.--aprscomment (--atxt)
APRS NameFirst name of the operator, at most 15 characters. RST deletes the name.--setname

4.5 Custom BLE PIN 6 Digits

Sets the six-digit Bluetooth PIN of the node (digits only, 100000 to 999999). Check mark: set the PIN in the node and store it on the phone. RST resets the PIN in the node to 000000 and deletes the entry on the phone. How it works: see 3.4.

Firmware command: --btcode.

4.6 Set Location - Phone GPS and Manual Location

Firmware commands: --setlat, --setlon, --setalt. If the node has an enabled GPS module, it provides the position.

4.7 Node Time Zone

Here you set how the node converts from UTC to local time. The node shows this time on its display.

FieldMeaning
Time Zone PresetSelection list of time zones, for example "Europe - Vienna" (also valid for Berlin, Zurich, Rome), London, Athens, Moscow, New York, Tokyo, Sydney (complete list in appendix C). If you pick a preset, the app fills in the rule.
Set Time ZoneOwn POSIX rule, for example CET-1CEST,M3.5.0,M10.5.0/3. With it the node switches between summer and winter time automatically. No spaces, at most 39 characters, M rules only.
Set UTC OffsetFixed offset to UTC in hours, for example 1 or -5.5. This switches the automatic change off; in summer you have to change the value yourself.

Below the fields the app shows "Automatic time change active ..." (rule active) or "Fixed offset, no automatic time change." RST sets the offset to 0 and removes the rule.

Tip: For Austria, Germany and Switzerland: choose the preset "Europe - Vienna" and tap the check mark. Afterwards you never have to change the time again.

Firmware commands: --settz, --utcoff. A fixed offset deletes the rule. With older firmware there is only the fixed offset.

4.8 Country Setting

The country selection determines the radio parameters of the LoRa module (frequency, bandwidth, spreading factor ...) according to local rules. The frequency is shown in the list next to the code. Make the selection and tap the check mark; the node applies the parameters. All nodes that should talk to each other must have the same setting.

CodeFrequency
EU8433.175 MHz
EA433.175 MHz
UK / UK8439.9125 MHz
LA433.925 MHz
PL434.855 MHz
US433.175 MHz
VR2435.775 MHz
868869.525 MHz
915906.875 MHz

Firmware command: --setctry.

4.9 Group Subscription

Up to 6 group numbers (1 to 5 digits each) that the node subscribes to. The information goes to the nearest gateway, and messages to these groups are delivered. Check mark: save. RST (Reset Groups) sets all groups to 0 (no group). Each occupied group gets its own chat in the Chat tab (chapter 6). See also https://icssw.org/grc-gruppen-call/.

Firmware command: --setgrc.

4.10 User Buttons

The buttons send switching commands to the node. Filled = active. The state is updated after the node has answered.

General

ButtonFunctionCommand
GATEWAYThe node works as a gateway between the radio network and the MeshCom server (internet or HAMNET). Messages are forwarded to the server and back. Servers: see 4.12.--gateway on/off
DISPLAYDisplay of the node on/off. Exception: here "filled" means the display is on.--display
RX Gain BoostBoosted reception. ESP32 nodes with an SX1262 LoRa chip only.--setboostedgain
WebserverWeb interface of the node on/off. Needs a valid WLAN SSID with password ("Wifi Settings not set!" otherwise). On the RAK4631 without this check.--webserver on/off
MESHOn: the node forwards received foreign messages over radio (relay). Off: it only listens and sends its own messages.--mesh on/off
No ALL MsgsHides messages to "*" or "ALL" (on the node and in the phone).--nomsgall on/off
BUTTONSwitches the evaluation of a connected user button on/off (pin: see 4.14). With it you scroll through the received messages on the display.--button on/off
Wifi APThe node opens its own WLAN (access point) when no router is available. Not possible while the node is a gateway ("Gateway Mode active!").--wifiap on/off

GPS - Position

ButtonFunctionCommand
GPSOptional GPS module on/off. With GPS "OFF" the Info tab shows no satellites and no HDOP.--gps on/off
TRACKTrack function (SmartBeaconing): after movement the node sends its position as a LoRa-APRS message on 433.775 MHz.--track on/off
Send POSSends the position once. Behaviour see below. At least 10 seconds must pass between two calls.--sendpos, --sendtrack
POS-InfoRequests the current position data from the node. It appears in the Info tab.--pos

Send POS depends on the TRACK state:

Utilities

ButtonFunctionCommand
Scan I2CThe node searches the I2C bus for connected devices (sensors, display). The app does not show the result, it appears on the console of the node. The button is also in the Sensor Settings.--showi2c
OTA UpdateThe node restarts in update mode (confirmation "Boot into OTA Mode now?"). ESP32-based nodes only; on RAK4631, T-Echo and Heltec T114 "Wifi OTA Update not supported!" appears. See below.--ota-update
REBOOTRestarts the node (with confirmation).--reboot now
Deep SleepSends the node into deep sleep (with confirmation). The connection is dropped; the app does not reconnect automatically. Wake up at the node (button or reset).--deepsleep
Note: OTA update: after the restart the node can be reached over the WLAN in a web browser: CALLSIGN.local or the IP address of the node (shown in the Settings header). Without WLAN access it opens its own access point: address 192.168.4.1 or Meshcom-OTA.local. There you upload the new firmware (.bin). The OTA firmware has no Bluetooth. Detailed instructions: https://icssw.org/meshcom-ota-update/

KISS Interface (only with new firmware)

Four buttons control the KISS/TCP interface of the node (port 8001) that external programs can connect to:

ButtonFunctionCommand
KISSKISS/TCP port on/off.--kiss on/off
TXTransmitting over KISS is allowed.--kiss tx on/off
RxMetaKISS also delivers metadata frames (RSSI, SNR ...).--kiss meta on/off
AuthKISS requires a login. Uses the password of the Remote Netconsole (4.17). The app points this out.--kiss auth on/off

4.11 TX-Power

Slider for the transmit power in dBm. Below it the power is shown in mW and as a percentage of the maximum. The maximum depends on the hardware (usually 17 to 22 dBm). For E22 nodes the app shows only the power of the SX1262; the actual power depends on the amplifier behind it in the E22 (up to 30 or 33 dBm).

Firmware command: --txpower.

4.12 Gateway Server

Selects the MeshCom server that a node in gateway mode connects to. Make the selection and tap the check mark; the node restarts.

SelectionServer for
Austria-OEAustria
Germany-DLGermany (internet)
Germany Hamnet-HCGermany (HAMNET)
Italy-ITItaly
Switzerland-HBSwitzerland
Poland-SPPoland

Firmware command: --gateway srv.

4.13 Max Hop (only with new firmware)

Limits over how many stations (hops) a text message from your own node is passed on. Selection 2, 3 or 4; tap the check mark to save. A smaller value relieves the network.

Firmware command: --maxhop.

4.14 Hardware Pins

Firmware commands: --button gpio, --onewire gpio.

4.15 Sensor Settings

Switch sensors on the I2C bus or OneWire on and off. Filled = active. If a sensor is switched on but was not found on the bus, its button turns red.

ButtonSensorCommand
BME280 / BMP280 / BMP390Temperature, air pressure (BME280 also humidity)--bme, --bmp, --390
BME680Temperature, humidity, pressure, gas resistance--680
AHT-20 / SHT21Temperature and humidity--aht20, --sht21
MCU-811Gas sensor (eCO2)--811
One WireOneWire temperature sensor (pin: see 4.14)--onewire
LPS33Weather data board on the RAK4631--lps33
Sensor InfoRequests the sensor values, they appear in the Info tab--wx
Scan I2CSee 4.10 (Utilities)--showi2c

Temperature Offset

Correction value in degrees for the temperature of the I2C sensors (BME/BMP Offset) and of the OneWire sensor (Onewire Offset), for example -1.5 if the node reads too warm because of its own waste heat. Command: --tempoff.

INA226 (only if the node reports the function)

The INA226 measures voltage and current, for example at the solar installation of a site. The section shows whether the chip was found on the I2C bus ("INA226 found ... it is active") – the node detects it at start-up. You can set:

FieldMeaningRange
ShuntResistance of the measuring resistor in ohmmore than 0.001 and less than 0.5
Max. currentHighest current to be measured in ampere0 to 20
Averaged samplesAveraging. The selection 0 to 7 corresponds to 1, 4, 16, 64, 128, 256, 512 or 1024 measurements0–7

Commands: --shunt, --imax, --isamp. The values appear in the Info tab (VBUS, VSHUNT, VAMP, VPOW) and in the map in the detail window ("Current").

4.16 Max. Battery Voltage (only with new firmware)

Voltage at which the battery counts as 100 % charged (3.7 to 4.5 V). The section appears only for nodes with a single-cell battery (LiIon). The node uses the value to calculate the percentage display. The app also accepts a decimal comma. Command: --maxv.

4.17 Network: Fixed IP, IP MTU, Ext. UDP, Remote Netconsole, Manual Routing, Web password

Fixed IP Settings

Fixed IP address instead of DHCP: IP Address, Subnet Mask, Gateway, DNS and optionally NTP (leave empty if not needed). Check mark: save, reboot after about 15 seconds. RST switches back to DHCP. Commands: --setownip, --setowngw, --setownms, --setowndns, --setownntp.

IP MTU (only with new firmware)

Size of the IP packets of the node. Selection: 1280 (HAMNET/VPN, default), 1400, 1500 (plain LAN). With problems over HAMNET or VPN stay with the default. Command: --mtu.

Ext. UDP Interface

The node passes the MeshCom data on by UDP to a device in the network. Entry UDP Dest. Addr. (IP address of the target), check mark to save, and the Enable switch turns the function on or off. Commands: --extudpip, --extudp on/off.

Remote Netconsole (only with new firmware)

The console of the node can be reached over the network on port 2323 (for example with a terminal program). Enable switch and a Password (at most 14 characters). The app does not show the password; you can only set it or delete it with RST. Without a password the console is open to everyone in the network. The KISS login uses the same password (see 4.10). Commands: --netconsole, --passwd.

Manual Routing (VIA)

Lets messages travel through a specific node (via callsign). Enter the Destination Call (for example OE1KFR-12), tap the check mark and set the Enable switch. RST deletes the target. With older firmware "Manual Route Settings not provided by node. Check FW Update or Re-Connect" appears. Command: --via.

Web UI Password

Password for the web interface of the node (at most 19 characters). The app shows the current password in plain text. RST removes it. Command: --webpwd.

4.18 Manual Command

Any node command by hand, for example --info. It must start with two hyphens. If the iOS keyboard replaces the two hyphens with a long dash, the app reports it: "It starts with a long dash instead of two hyphens". Length at most 250 bytes. Check mark: send. The list of commands is given by the command --help and the firmware documentation.

Warning: A command takes effect immediately and without confirmation. Only send commands whose effect you know (for example --cleanflash deletes the settings of the node).

4.19 Battery Display (only with new firmware)

Determines whether the display of the node shows the battery as Voltage or Percent. Commands: --volt on, --proz on.

4.20 Advanced Settings

Four red buttons delete data on the phone. There is no confirmation.

ButtonDeletes
Clear received nodesAll received node positions in the map.
Clear Text MsgsAll messages in the Chat tab.
Clear MheardsAll entries in the Heard Nodes tab.
Clear All BLE PINsThe stored BLE PINs of all nodes (see 3.4).

5. Info tab

The Info tab shows the state of the connected node. As long as the tab is visible, the app polls the node in turn for new values (one request every 4 seconds). Polling pauses when the app is in the background, no node is connected or the log window is open.

CardContent
BatteryState of charge in percent with a bar (orange below 30 %, red below 15 %), voltage in volts and the hardware of the node (for example "HELTEC V3", "RAK4631").
GPSTop right the state: Fix, No Fix or OFF (GPS switched off; satellites and HDOP are hidden then). Also Latitude, Longitude, Altitude, Satellites, HDOP, Next POS (time until the next position is sent, for example "5m 20s"), UTC Offset, and Date and Time in two rows.
SensorsMeasured values of the enabled sensors: Temp, TOUT (OneWire), Humidity, Press, QNH, GasRes, eCO2, Alt Press and, with the INA226, VBUS, VSHUNT, VAMP, VPOW. Values the node does not deliver are hidden. Below, chips show which sensors are active (BME280, BMP280, BMP390, BME680, MCU811, LPS, OneWire, AHT-20, INA226), and the OneWire Pin.
FirmwareVersion (firmware of the node), Build (date of the firmware build) and the App Version.

5.1 The log

The Log button at the end of the page opens the internal log of the app. It helps with troubleshooting (connection set-up, auto reconnect, scan diagnostics). In the window:

Tip: With connection problems: open the log, tap Copy and paste the log into your support request or bug report. It contains the phases of the connection set-up with times and the scan count of the nodes.

6. Chat tab

6.1 The chat list

The Chat tab starts with a list of chats:

Each entry shows the last message as a preview ("CALLSIGN: text"), and for unread messages a green envelope and a counter badge. Two icons are on the right:

Tapping the entry opens the chat. At the top left the arrow back leads to the list. The back gesture works too: on iOS swipe from the left edge, on Android use the back button.

6.2 Reading messages

A message shows the time and, if it was relayed by other stations, "· via CALLSIGN", below it the sender and the text. The app recognises links in the text and makes them tappable. When the date changes, a date bar appears. When you open a chat with unread messages, the marker "New Messages" stands at the first unread message. An arrow at the bottom right jumps to the end of the chat.

The app announces new messages by notification ("New Message from CALLSIGN"), also in the background. Own messages, commands that begin with "--" and filtered messages (6.5) do not trigger a notification.

6.3 Sending messages

  1. Open the chat. In the To All Channel and in a Group chat it is enough to type the text.
  2. In the Direct Messages chat the To Callsign field appears above the text field. Enter the callsign with SSID (for example OE1KFR-1). The star next to it opens the favourites (6.6).
  3. Type the text in the Type Message field (at most 150 characters). The field grows up to six lines.
  4. Tap the arrow at the bottom right. The text field is emptied and the keyboard disappears; the message is at the end of the chat.
Note: If no node is connected, the fields are locked and the send arrow is red. Tapping it shows the message "BLE Disconnect".

Status icons of your own messages

IconMeaning
Check markSent: the message has arrived at your own node.
CloudHeard: the message was heard by another node and relayed. The callsign of that station is shown next to it.
Cloud with check markAcked: for a direct message the recipient has received the message (the confirmation came back). For broadcasts and groups, reception by a gateway confirms the forwarding to the MeshCom server.
Crossed-out cloud (orange)Unconfirmed: a direct message stayed without confirmation for 6 minutes. The node gave up after four transmissions. If the confirmation still arrives, the icon becomes "Acked".

Direct messages are sent up to four times by the node in case they get lost on the way. The app still shows only one message; it recognises copies received twice and hides them.

6.4 Message menu (long press)

A long press on a message opens a menu:

EntryEffect
Copy TextCopies the message text.
Resend MessageSends one of your own messages again (own messages only).
Direct MessageSwitches to the DM chat with the sender as recipient (not in the DM chat itself).
Reply ToSets the sender as recipient and puts "@CALLSIGN " in front in the text field.
Filter TextCreates a text filter with this message text (6.5).
Add FavouriteAdds the callsign to the favourites (DM chat only, only if not yet present).
Block CallsignHides all messages of this callsign (6.5). Foreign messages only.

6.5 Filters: blocking callsigns and hiding texts

The funnel in the chat list opens the Filters window. It has two parts: Filter Global (applies in all chats) and Filter of the selected chat (applies only there). Both have:

When blocking through the message menu, the app asks whether Globally or This Chat Only. Filtered messages stay stored, they are just not shown.

6.6 Favourites for direct messages

The star next to "To Callsign" opens the Favourites window. With Add you enter a callsign, a tap on an entry takes it over as recipient, the red cross deletes it. You can also take over callsigns from the message menu (Add Favourite). The list stays saved.

6.7 Firmware update notice

If the node runs a firmware older than 4.40 a, the Chat tab shows the notice "Firmware update recommended" once after connecting. With older firmware some functions can be limited (chapter 11).

7. Map tab

The map (OpenStreetMap) shows all nodes whose position the app has received. The map tiles are loaded from the internet; without internet the background stays empty, but the markers are there. Older positions are deleted after three days.

7.1 Markers

ColourMeaning
PurpleYour own (connected) node.
GreenNodes your own node has heard directly over radio (see Heard Nodes).
Light blueAustrian club stations and relay sites (callsigns of the form OE1XAB-1) that were not heard directly.
BlueAll other nodes, heard only through other nodes (mesh) or gateways.

Tapping a marker opens a card with the details: callsign and APRS symbol, coordinates, altitude, battery, hardware, number of neighbours, subscribed groups, comment and name. More shows the sensor values, as far as the node sends them (pressure, temperature, humidity, QNH, eCO2, gas resistance, VBus and current of the INA226, the inputs of an MCP23017). DM switches to the chat and enters the callsign as recipient, Close closes the card.

7.2 The buttons

The button at the bottom right opens a menu with four functions:

Open/close the menu (arrow up).
Lines: shows red lines from your own node to the directly heard nodes.
Search: search bar and list of all known nodes. While you type, the list filters by the beginning of the callsign. Tapping an entry centres the map on this node and opens its card.
Centre: moves the map to your own node.
Map Tracking on/off. The map then follows the position of the node. The node needs an enabled GPS for this. The app requests the position every 10 seconds.

At the top right the state is shown:

Zoom with + and -, or with two fingers. Map Tracking switches on by itself when the map is opened if the node has a GPS, TRACK is switched off and a connection exists.

8. Heard Nodes tab

The tab shows all stations that the connected node has heard directly over radio. Each station has a card with the callsign, date and time of reception and the following values. Values the node does not send are hidden.

ValueMeaning
RSSI (dBm)Reception strength. Good up to -90, ok up to -100, weak up to -115, below that bad.
SNR (dB)Signal-to-noise ratio. Very good from -5, good from -10, ok from -15, below that bad.
Dist (km)Distance to the station, if its position is known.
HardwareHardware of the heard station.
NeighboursNumber of neighbours this station reports.
Hears me (dB)How the station hears your own node (only with new firmware). This shows whether the radio link works in both directions.
GatewayAppears with "Yes" if the station is a gateway.

The values are coloured: green good, yellow/orange medium, red bad. The thresholds are the ones usual for LoRa. The signal bars in the Devices tab, in contrast, measure the Bluetooth signal to the phone and have their own thresholds (3.2). The list is loaded from the node when connecting and updated during operation. To delete: Settings → Advanced Settings → Clear Mheards.

9. In practice: typical procedures

9.1 Putting a new node into operation

  1. Switch the node on, open the Devices tab in the app and tap the card of the node.
  2. Confirm the message "Unconfigured Node!". The app switches to the Settings.
  3. Enter the Callsign and save it with the check mark. The node reboots, then connect again.
  4. Choose the Country Setting, save.
  5. Choose the Node Time Zone (preset), save.
  6. Set the position: Set Location - Phone GPS or Manual Location; for nodes with GPS switch the GPS on (User Buttons).
  7. Optional: APRS symbol and comment, groups, BLE PIN. At the first time set TX-Power to a sensible value.
  8. In the Devices tab switch Auto reconnect on.

9.2 Running a node as a gateway

  1. Enter the WLAN (WiFi Settings), or connect Ethernet on the RAK4631; set a fixed IP if needed.
  2. Choose the Gateway Server that fits your country (for HAMNET "Germany Hamnet-HC").
  3. Switch the GATEWAY button on. The node connects to the server and forwards messages.
Warning: With GATEWAY switched on, Wifi AP cannot be switched on.

9.3 Firmware update by OTA

  1. Settings → User Buttons → OTA Update → "YES". The node restarts in update mode, the Bluetooth connection ends (no auto reconnect).
  2. Open in the browser the address the app shows (CALLSIGN.local, the IP address or, in AP mode, 192.168.4.1).
  3. Upload the firmware file (.bin). After the update the node restarts; connect again in the Devices tab.

9.4 Using a protected connection to a node

  1. In Settings → Custom BLE PIN 6 Digits set a PIN and tap the check mark (the PIN is stored on the phone at the same time).
  2. On another phone: Devices → key icon of the node card → enter the PIN → Save PIN, then connect.
  3. PIN forgotten: reset it with the serial console or the web interface of the node; the app can do this only after connecting.

10. Troubleshooting

ProblemPossible cause and remedy
Node does not appear in the Devices tabNode on? Bluetooth and Bluetooth/location permission granted to the app? Move closer. Switch "MeshCom only" off and on. The node sends nothing while another device is connected.
Connecting aborts at onceWrong PIN (3.4). Remove the old pairing entry in the Bluetooth settings of the phone. On Android switch Bluetooth off and on.
On Android the node is hard to find or to connect toIt depends on the phone. Scan closer to the node (RSSI -80 dBm or better), restart the app. On iOS this rarely happens. The log (chapter 5.1) shows the scan count of the node.
"Loading Config" stays for a long timeThis is normal with many heard stations (up to a minute). The app requests missing data itself (3.6). If that does not help, Cancel, disconnect, connect again.
After saving settings the connection is goneThe node reboots (Callsign, WiFi, fixed IP, Gateway Server). Connect again.
Button does not change its stateThe app waits for the answer of the node (a few seconds). If it does not come, check the connection. With older firmware some commands do not exist.
Sensor button is redThe sensor is switched on but was not found on the I2C bus. Check the wiring, then Scan I2C at the node.
Messages are missing in the chatFilter active (funnel orange)? Callsign blocked? "No ALL Msgs" switch active? Messages older than three days are deleted.
Direct message shows "Unconfirmed"No confirmation from the recipient within 6 minutes. Recipient not reachable or the path is too poor. Send again with Resend. Always enter the callsign with SSID.
Map stays emptyNo internet for the map tiles. Markers are still shown.
No notification for new messagesNotification permission granted on the phone? Speaker icon of the chat on "on"? On Android check the battery optimisation for the app.

11. Firmware versions

The app expects firmware 4.40 a or newer. With older firmware:

Tip: The firmware version is in the Info tab under "Firmware → Version". Firmware files and update instructions are on the MeshCom project pages.

Appendix A: All settings and their function at a glance

Section in the SettingsFunctionFirmware command
CallsignCallsign of the node (reboot)--setcall
WiFi SettingsWLAN SSID and password (reboot)--setssid, --setpwd
APRS SettingsSymbol, comment, name--symid, --symcd, --aprscomment, --setname
Custom BLE PINBluetooth PIN of the node--btcode
Set Location - Phone GPS / Manual LocationFixed position--setlat, --setlon, --setalt
Node Time ZoneTime zone, automatic daylight saving--settz, --utcoff
Country SettingLoRa frequency and parameters--setctry
Group SubscriptionSubscribe to up to 6 groups--setgrc
User Buttons: GATEWAYGateway operation--gateway
User Buttons: DISPLAYDisplay on/off--display
User Buttons: RX Gain BoostBoosted reception (ESP32 with SX1262)--setboostedgain
User Buttons: WebserverWeb interface--webserver
User Buttons: MESHForwarding foreign messages--mesh
User Buttons: No ALL MsgsHide broadcasts to "*"--nomsgall
User Buttons: BUTTONEvaluate user button--button
User Buttons: Wifi APOwn access point--wifiap
User Buttons: GPSGPS module on/off--gps
User Buttons: TRACKSmartBeaconing LoRa-APRS--track
User Buttons: Send POSSend position once--sendpos, --sendtrack
User Buttons: POS-InfoRequest position data--pos
User Buttons: Scan I2CSearch I2C devices--showi2c
User Buttons: OTA UpdateUpdate mode (ESP32 only)--ota-update
User Buttons: REBOOT / Deep SleepRestart / deep sleep--reboot now, --deepsleep
KISS InterfaceKISS/TCP port, TX, metadata, login--kiss ...
TX-PowerTransmit power--txpower
Gateway ServerServer of the gateway (reboot)--gateway srv
Max HopHop limit for text messages--maxhop
Hardware PinsPin of the user button and of OneWire--button gpio, --onewire gpio
Sensor SettingsSensors on/off, Sensor Info, Scan I2C--bme, --bmp, --390, --680, --811, --aht20, --sht21, --lps33, --onewire, --wx
Temperature OffsetTemperature correction--tempoff
INA226Shunt, maximum current, averaging--shunt, --imax, --isamp
Max. Battery VoltageVoltage for 100 % battery--maxv
Fixed IP SettingsFixed IP, gateway, DNS, NTP (reboot)--setownip, --setowngw, --setownms, --setowndns, --setownntp
IP MTUPacket size of the IP interface--mtu
Ext. UDP InterfacePass MeshCom data on by UDP--extudp, --extudpip
Remote NetconsoleConsole in the network (port 2323), password--netconsole, --passwd
Manual Routing (VIA)Messages through a specific node--via
Web UI PasswordPassword of the web interface--webpwd
Manual CommandAny command (starts with "--")any
Battery DisplayDisplay shows voltage or percent--volt, --proz
Advanced SettingsDelete data on the phone(app only)

Appendix B: Important limits

ValueLimit
Message text in the chatat most 150 characters
Callsign of the recipient (To Callsign)at most 11 characters, with SSID
Node callsignat most 11 characters, form OE1KFR-1
WLAN SSID / WLAN password33 / 64 characters
APRS Comment / APRS Name15 / 15 characters
Web password / Netconsole password19 / 14 characters
BLE PIN6 digits, 100000–999999
Time zone ruleat most 39 characters, no spaces
Groups6 slots, 1 to 5 digits each
Max. Battery Voltage3.7 to 4.5 V
INA226 shunt / maximum current0.001–0.5 Ω / 0–20 A
Manual Commandat most 250 bytes
Retention of messages and positions3 days
Send POS: minimum interval10 seconds

Appendix C: Time zone presets

PresetPOSIX rule
Europe - Vienna (CET; also Berlin, Zurich, Rome ...)CET-1CEST,M3.5.0,M10.5.0/3
Europe - LondonGMT0BST,M3.5.0/1,M10.5.0
Europe - DublinGMT0IST,M3.5.0/1,M10.5.0
Europe - LisbonWET0WEST,M3.5.0/1,M10.5.0
Europe - Athens (EET; also Helsinki, Kyiv ...)EET-2EEST,M3.5.0/3,M10.5.0/4
Europe - MoscowMSK-3
Europe - Istanbul<+03>-3
Europe - ReykjavikGMT0
America - New York / Chicago / Denver / Los AngelesEST5EDT,... / CST6CDT,... / MST7MDT,... / PST8PDT,M3.2.0,M11.1.0
America - Phoenix (no daylight saving)MST7
America - Sao Paulo<-03>3
Africa - JohannesburgSAST-2
Asia - Dubai / Kolkata / Shanghai / Tokyo<+04>-4 / <+0530>-5:30 / CST-8 / JST-9
Australia - Sydney (also Melbourne) / PerthAEST-10AEDT,M10.1.0,M4.1.0/3 / AWST-8
New Zealand - AucklandNZST-12NZDT,M9.5.0,M4.1.0/3
UTCUTC0

In a POSIX rule the sign is reversed compared with the usual notation: CET-1 means UTC+1.

Further information: https://icssw.org/meshcom-4-0-faq/ and https://icssw.org/meshcom-app/ .