Mesh Bridge — Universal Meshtastic / MeshCore Bridge
Mesh Bridge connects multiple LoRa mesh networks and relays text messages from the PUBLIC CHANNEL of one network to all others. It simultaneously manages MeshCore companions (connected via USB serial) and Meshtastic nodes (accessible via TCP/IP and USB), enabling bridging across different frequency bands (e.g., an 868 MHz companion, a 433 MHz companion, and two separate Meshtastic nodes).
The bridge operates using full broadcasting: every active module relays messages to all others.
If a module is missing, disconnected, or unreachable, it simply attempts to reconnect in the background without blocking the others. The bridge becomes operational as soon as at least two modules are active.
Features
Multi-module bridging (MeshCore USB companions + Meshtastic TCP/USB nodes).
Full broadcasting: every module relays to all others.
Author name preserved in both directions (format: "[name] message").
Anti-looping: messages that have already been relayed do not recirculate.
Local web interface: add/remove modules, dropdown list of detected serial ports, IP address input, live status per module, and real-time log window.
Cross-platform: Windows and Linux / Raspberry Pi 3 (same source code).
Runs in the background on Windows.
Usage:
Configuration is automatically saved and restored upon subsequent launches.
Windows:
Run the executable: mesh-bridge.exe
Open the interface in a browser: http://127.0.0.1:8080
Add modules (MeshCore companion or Meshtastic node), enter the serial port or IP address, then start the bridge. Linux:
In /MTMC-Bridge/target/release/
Run the executable: ./mesh-bridge
Open the interface in a browser: http://127.0.0.1:8080
For terminal-only mode:
Run the executable: ./mesh-bridge -nogui
or ./mesh-bridge --nogui
If a valid configuration exists, the bridge will start automatically.
Prerequisites
At least two modules to bridge (MeshCore companions and/or Meshtastic nodes).
For a MeshCore node: "Companion" mode (USB serial).
For a Meshtastic node: accessible via TCP (default port 4403) or USB serial.
Compiling from source
Requires the Rust toolchain (https://rustup.rs):
cargo build --release
In case of missing libraries on Linux:
sudo apt update && sudo apt install -y libudev-dev pkg-config libdbus-1-dev
Repeat and adjust the command for any other missing libraries.
The binary is generated in target/release/. The web interface is embedded within the executable: only a single file needs to be deployed.
Technical notes:
Interface accessible locally (127.0.0.1). It can be exposed to the network by modifying the listening address in the source code (only for use on trusted networks, as the interface lacks authentication).
For Raspberry Pi usage: to prevent the Raspberry Pi from crashing during a power outage, enable the Overlay File System (Overlay FS).
The Raspberry Pi's file system will then operate in read-only mode.
sudo raspi-config
Then:
Go to Performance Options (in older versions, this was under Advanced Options).
Select Overlay FS (or Overlay File System).
Select Yes for:
Enable Overlay File System. Write-protect the boot partition.
Confirm and agree to reboot the Raspberry Pi (sudo reboot).
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Mesh Bridge — pont universel Meshtastic / MeshCore
Mesh Bridge relie plusieurs réseaux LoRa maillés et fait circuler les messages texte du CANAL PUBLIC de l'un vers tous les autres. Il gère simultanément des companions MeshCore (connectés en USB série) et des noeuds Meshtastic (accessibles en TCP/IP et USB), ce qui permet de ponter des réseaux sur des bandes ou fréquences différentes (par exemple un companion 868 MHz, un companion 433 MHz et deux noeuds Meshtastic distincts).
Le pont fonctionne en diffusion totale : chaque module actif retransmet vers tous les autres.
Un module absent, débranché ou injoignable se contente de tenter la reconnexion en arrière-plan, sans bloquer les autres. Le pont est opérationnel dès que deux modules au moins sont actifs.
Fonctionnalités
Pont multi-modules (companions MeshCore USB + noeuds Meshtastic TCP / USB).
Diffusion totale : tout module relaie vers tous les autres.
Nom de l'auteur préservé dans les deux sens (format « [nom] message »).
Anti-boucle : un message déjà relayé ne recircule pas.
Interface web locale : ajout/suppression de modules, liste déroulante des ports série détectés, saisie des adresses IP, statut en direct par module et fenêtre de journal en temps réel.
Multiplateforme : Windows et Linux / Raspberry pi 3, même code source.
Sous Windows, tourne en arrière-plan.
Utilisation:
La configuration est enregistrée automatiquement et restaurée aux lancements suivants.
Windows:
Lancer l'exécutable: mesh-bridge.exe
Ouvrir l'interface dans un navigateur : http://127.0.0.1:8080
Ajouter les modules (companion MeshCore ou noeud Meshtastic), renseigner le port série ou l'adresse IP, puis démarrer le pont.
Linux:
Dans /MTMC-Bridge/target/release/
Lancer l'exécutable: ./mesh-bridge
Ouvrir l'interface dans un navigateur : http://127.0.0.1:8080
en version terminal uniquement:
Lancer l'exécutable: ./mesh-bridge -nogui
ou ./mesh-bridge --nogui
Si une configuration est presente et propre le bridge se lancera automatiquement.
Prérequis
Au moins deux modules à ponter (companions MeshCore et/ou noeud Meshtastic).
Pour un noeud MeshCore : mode « Companion » (USB série).
Pour un noeud Meshtastic : accessible en TCP (port 4403 par défaut) ou USB série.
Compilation depuis les sources
Nécessite la chaîne d'outils Rust (https://rustup.rs) :
cargo build --release
Au cas ou des librairies manquent dans linux:
sudo apt update && sudo apt install -y libudev-dev pkg-config libdbus-1-dev
Repetez et ajustez la commande pour d'autres librairies manquantes.
Le binaire est produit dans target/release/. L'interface web est embarquée dans l'exécutable : un seul fichier à déployer.
Remarques techniques:
Interface accessible en local (127.0.0.1). Elle peut être exposée sur le réseau en modifiant l'adresse d'écoute dans le code source (à réserver à un réseau de confiance, l'interface n'ayant pas d'authentification).
Pour un usage sur Raspberry Pi, afin d'eviter un plantage du Raspberry en cas de coupure de courant: activer l'Overlay File System (Overlay FS).
le système de fichier du Raspberry sera en lecture seule.
sudo raspi-config
Puis:
dans Performance Options (sur les anciennes versions, c'était dans Advanced Options).
Sélectionner Overlay FS (ou Overlay File System).
Répondre Oui / Yes pour :
Activer le système de fichiers Overlay (Enable Overlay File System).
Verrouiller la partition de boot en lecture seule (Write-protect boot partition).
Valider et accepter de redémarrer le Raspberry Pi (sudo reboot).