RF-MARKET BLOG
MeshCore : le guide complet pour débutants
MeshCore est un protocole de réseau maillé reposant sur la technologie radio LoRa, pensé pour permettre des communications décentralisées sans infrastructure Internet. Ce guide vous explique pas à pas les trois rôles fondamentaux du réseau, comment configurer les filtres de régions adaptés à la France, et pourquoi il est indispensable de régler votre duty cycle à 10 % pour rester dans les clous de la réglementation européenne.
Sommaire
- Qu'est-ce que MeshCore ?
- Les trois rôles natifs du réseau
- Les filtres de régions pour la France
- Le duty cycle : pourquoi le passer à 10 %
- Questions fréquentes
1. Qu'est-ce que MeshCore ?
MeshCore est un protocole de communication maillée qui repose intégralement sur la radio LoRa (Long Range), une technologie de transmission à faible consommation capable de couvrir plusieurs kilomètres en terrain dégagé. Contrairement à Meshtastic, son concurrent le plus connu, MeshCore adopte une philosophie architecturale claire et volontairement hiérarchisée : les utilisateurs ne routent pas, les répéteurs routent.
Cette séparation des responsabilités simplifie considérablement la gestion du réseau et réduit les collisions radio, un problème chronique dans les réseaux maillés où chaque terminal tente de relayer les messages de ses voisins. En concentrant le routage sur des nœuds dédiés, MeshCore offre une bien meilleure scalabilité dès que le réseau dépasse quelques dizaines de participants.
Le réseau fonctionne sur la bande ISM 868 MHz en Europe, une bande libre partagée avec de nombreux autres systèmes — alarmes, capteurs IoT, LoRaWAN industriel. Cette réalité impose des règles de bonne conduite, au premier rang desquelles le respect du duty cycle, que nous détaillons en profondeur dans ce guide.
Différence clé avec Meshtastic : Dans Meshtastic, quasiment tous les nœuds participent au routage, ce qui crée des tempêtes de retransmissions sur les grands réseaux. MeshCore réserve strictement le routage aux Repeaters dédiés, ce qui améliore la fiabilité et la portée des messages.
2. Les trois rôles natifs du réseau
MeshCore distingue trois rôles fondamentaux, chacun avec une fonction bien précise dans l'architecture du réseau. Comprendre ces rôles est la première étape indispensable avant de mettre du matériel en service. Se tromper de rôle, c'est se retrouver avec un répéteur qui ne route pas, ou un terminal qui consomme de la bande passante pour retransmettre des messages qui ne lui sont pas destinés.
| Rôle | Fonction principale | Routage | Matériel typique |
|---|---|---|---|
| Companion Node | Terminal utilisateur personnel | Non | T-Deck, Heltec V3, T-Echo |
| Repeater | Répéteur fixe du réseau | Oui (seul rôle) | Toit, pylône, relais solaire |
| Room Server | Messagerie persistante / BBS | Non | Raspberry Pi, ESP32 fixe |
Le Companion Node — votre terminal personnel
Le Companion Node est le point d'entrée dans le réseau MeshCore. C'est l'appareil que vous tenez dans la main, qui se connecte en Bluetooth à l'application mobile pour vous permettre d'envoyer et de recevoir des messages. Il s'agit en pratique d'un module LoRa embarqué sur un boîtier portable : le LilyGO T-Deck, le T-Echo ou le Heltec V3 sont les modèles les plus couramment utilisés.
Le Companion Node est conçu pour fonctionner sur batterie et s'adapter à un usage nomade. Il peut communiquer directement avec d'autres Companion Nodes à portée radio, ou bien atteindre des correspondants plus éloignés en passant par les Repeaters du réseau. Ce qu'il ne fait jamais, en revanche, c'est retransmettre les paquets des autres : cette responsabilité appartient exclusivement aux répéteurs.
Matériel compatible Companion Node : LilyGO T-Deck, LilyGO T-Echo, Heltec WiFi LoRa 32 V3, RAK WisBlock. Pour un usage débutant, le T-Deck avec son écran et son clavier intégrés offre la meilleure prise en main sans smartphone requis en permanence.
Le Repeater — l'épine dorsale du réseau
Le Repeater est le maillon central de toute infrastructure MeshCore sérieuse. C'est lui, et lui seul, qui découvre ses voisins, maintient les tables de routage et retransmet les paquets vers leur destination. Sans répéteurs, le réseau n'est qu'une collection de terminaux isolés incapables de communiquer au-delà de leur portée directe.
Un bon emplacement est la condition numéro un d'un répéteur efficace. On cherchera systématiquement la hauteur : un toit d'immeuble, un pylône, une crête de colline ou un sommet de montagne. Chaque mètre gagné en altitude peut se traduire par plusieurs kilomètres de portée supplémentaire. Le répéteur doit être alimenté en continu — secteur ou panneau solaire avec batterie — car il doit rester disponible 24h/24 pour maintenir la cohérence du réseau.
Dans un réseau territorial bien dimensionné, on retrouve généralement :
- 80 à 90 % de Companion Nodes (terminaux utilisateurs)
- 5 à 15 % de Repeaters (relais fixes)
- 1 à 2 Room Servers (messagerie communautaire)
- 1 Gateway MQTT (intégrations externes)
Ce ratio suffit à couvrir de larges zones géographiques, pour peu que les emplacements aient été choisis avec soin.
Le Room Server — la mémoire persistante du groupe
Le Room Server introduit une dimension communautaire dans MeshCore. Fonctionnant comme une mini-messagerie distribuée, il permet de créer des salons publics ou privés accessibles à tous les membres d'un groupe local. Sa particularité réside dans sa capacité à stocker les messages : si vous étiez hors de portée au moment où un message a été envoyé, le Room Server le conserve et vous le délivre dès votre reconnexion au réseau.
Ce mécanisme est particulièrement précieux pour les clubs radio, les associations de quartier ou les cellules de communication de crise. Contrairement au Repeater, le Room Server ne route pas les paquets réseau — il intervient au niveau logique, en gérant la persistance et la distribution des messages de salon.
La passerelle MQTT — intégration avec l'écosystème domotique
La passerelle MQTT n'est pas un rôle officiel de MeshCore, mais elle s'est imposée dans les déploiements avancés comme le pont entre le réseau radio et les outils d'automatisation. Elle exporte les messages MeshCore vers un broker MQTT, ouvrant la porte à des intégrations avec Home Assistant, Node-RED, Grafana ou InfluxDB. Un déploiement typique la place en bout de chaîne, après le dernier Repeater de backbone.
Architecture recommandée pour un déploiement sérieux
Voici la topologie que privilégient les communautés MeshCore actives en Europe. Elle maximise la couverture tout en minimisant les collisions radio :
Companion Nodes <-- terminaux utilisateurs
|
v
Repeater Toit <-- couverture urbaine
|
v
Repeater Colline <-- couverture péri-urbaine
|
v
Repeater Backbone <-- longue distance (sommet, pylône)
|
+-- Room Server <-- messagerie communautaire
+-- MQTT Gateway <-- Home Assistant / Grafana
3. Les filtres de régions pour la France
À mesure qu'un réseau MeshCore prend de l'ampleur, un problème fondamental émerge inévitablement : chaque message local peut se propager à des centaines de kilomètres, consommant de l'airtime radio dans des zones où personne n'est concerné par son contenu. Les filtres de régions sont la réponse à ce problème.
Pourquoi les régions sont absolument indispensables
Imaginez qu'un radioamateur parisien envoie simplement "Salut" à son club local. Sans filtre de région, ce message peut être répété de répéteur en répéteur jusqu'en Italie ou en Allemagne, passant par Lyon, Marseille, Milan et Munich. Chaque répéteur sur la route consomme de l'airtime — un temps d'antenne précieux et limité par la réglementation — pour un message qui ne concerne personne hors de l'Île-de-France.
Le résultat sur un grand réseau sans régions est prévisible : saturation de la bande, collisions radio, batteries épuisées prématurément et délais de transmission qui s'allongent à mesure que le réseau grossit.
⚠ Attention : Sur un réseau de 50 répéteurs ou plus, l'absence de filtres de régions génère des tempêtes de retransmissions qui dégradent sévèrement les performances de l'ensemble du réseau européen.
La hiérarchie en peau d'oignon recommandée
La communauté MeshCore France a adopté une logique en trois niveaux, que vous pouvez visualiser comme des cercles concentriques autour de votre position :
- Département — pour les échanges hyperlocaux. Exemple :
fr-75pour Paris,fr-69pour le Rhône,fr-63pour le Puy-de-Dôme. - Région administrative — pour les échanges régionaux. Exemple :
fr-idfpour l'Île-de-France,fr-arapour Auvergne-Rhône-Alpes. - Pays — pour les annonces nationales. Toujours
fr, le code ISO 3166-1 Alpha-2.
Un répéteur configuré avec ces trois codes accepte et relaie les messages à n'importe lequel de ces trois niveaux géographiques, tout en ignorant les messages qui ne le concernent pas.
Codes de régions utilisés en France
| Région administrative | Code MeshCore |
|---|---|
| Auvergne-Rhône-Alpes | fr-ara |
| Bourgogne-Franche-Comté | fr-bfc |
| Bretagne | fr-bre |
| Centre-Val de Loire | fr-cvl |
| Corse | fr-20r |
| Grand Est | fr-ges |
| Hauts-de-France | fr-hdf |
| Île-de-France | fr-idf |
| Normandie | fr-nor |
| Nouvelle-Aquitaine | fr-naq |
| Occitanie | fr-occ |
| Pays de la Loire | fr-pdl |
| Provence-Alpes-Côte d'Azur | fr-pac |
Pour les codes départementaux, la convention adopte le numéro INSEE : fr-01, fr-33, fr-63, fr-75… jusqu'à fr-976 pour Mayotte.
Comment configurer les régions sur vos équipements
Sur un Companion Node (application mobile) :
- Ouvrez l'application MeshCore sur votre smartphone.
- Naviguez vers Settings → Experimental Settings → Default Region Scope.
- Saisissez votre code pays :
fr. Cela limite les adverts, le flood, la découverte et la recherche de routes à la France.
Sur un Repeater en Île-de-France (via CLI) :
Settings > Region Management Ajouter les trois codes : fr fr-idf fr-75 Activer "Allow Flood" sur chacun.
Sur un Repeater en Auvergne, Puy-de-Dôme (via CLI) :
fr fr-ara fr-63
Le cas du wildcard "*" : Par défaut, un nœud crée une règle*qui signifie accepter les paquets non tagués (sans région définie), et non pas "tout accepter". Sur un réseau mature, passez*en mode DENY FLOOD pour que seuls les paquets portant un tag de région autorisé soient relayés.
4. Le duty cycle : pourquoi le passer à 10 %
Le duty cycle est l'un des paramètres les plus critiques d'un répéteur MeshCore, et pourtant l'un des plus souvent négligés par les débutants. Il désigne le pourcentage du temps pendant lequel un nœud est autorisé à transmettre, calculé sur une fenêtre glissante d'une heure. Un duty cycle de 10 % signifie concrètement 6 minutes de transmission maximum par heure.
La bande 868 MHz : un espace partagé et réglementé
LoRa en Europe opère sur la bande ISM 863–870 MHz, un spectre libre que vous partagez sans exclusivité avec des dizaines d'autres technologies : alarmes sans fil, capteurs de température industriels, compteurs intelligents, réseaux LoRaWAN d'opérateurs commerciaux, Meshtastic, et d'autres réseaux MeshCore dans votre zone.
Cette cohabitation impose une règle d'or : chaque émetteur doit laisser de la place aux autres. Sur la sous-bande 869.525 MHz — la fréquence privilégiée par la communauté MeshCore Europe car elle autorise une puissance d'émission plus élevée — la réglementation ETSI autorise un duty cycle de 10 %. C'est la raison pour laquelle la quasi-totalité des guides MeshCore européens recommandent unanimement set dutycycle 10.
⚠ La valeur par défaut est trop élevée : MeshCore sort d'usine avec un duty cycle de 50 %, soit 30 minutes de transmission par heure. Sur un backbone avec plusieurs répéteurs en cascade, cette valeur peut générer une occupation radio massive et dégrader sévèrement les performances de tout le réseau dans votre secteur.
Comprendre les 10 % en chiffres
Le calcul est simple : 3 600 secondes × 10 % = 360 secondes, soit exactement 6 minutes de transmission autorisées par heure.
| Duty cycle | Temps TX / heure | Usage |
|---|---|---|
| 50 % | 30 min | Valeur par défaut — trop agressive ⚠ |
| 10 % | 6 min | Recommandé backbone MeshCore Europe ✓ |
| 1 % | 36 s | Très restrictif — capteurs IoT |
Cela peut sembler peu, mais c'est largement suffisant pour un répéteur qui gère un trafic de messages texte. LoRa n'est pas fait pour la voix ou la vidéo — les messages échangés sur MeshCore sont généralement courts et peu fréquents.
L'enjeu dépasse la simple conformité réglementaire. Un répéteur qui émet trop souvent augmente la probabilité de collision avec les transmissions de ses voisins, dégrade le SNR (rapport signal/bruit) ressenti par tous les nœuds à portée, et peut déclencher des boucles de retransmission qui s'auto-alimentent jusqu'à saturer complètement le canal.
Comment modifier le paramètre dans MeshCore
Firmware 1.15 et versions ultérieures (méthode actuelle) :
Vérifier la valeur actuelle : get dutycycle Appliquer la valeur recommandée : set dutycycle 10 Vérifier la prise en compte : get dutycycle -> Résultat attendu : 10
Firmwares antérieurs à la version 1.15 (paramètre AF) :
Les anciennes versions utilisaient un paramètre appelé Airtime Factor (AF). La correspondance avec les duty cycles modernes est la suivante :
| Commande (ancienne) | AF | Duty cycle équivalent |
|---|---|---|
set af 1 |
1 | ≈ 50 % ⚠ |
set af 2 |
2 | ≈ 33 % |
set af 3 |
3 | ≈ 25 % |
set af 9 |
9 | ≈ 10 % ✓ |
Aujourd'hui, set dutycycle 10 remplace complètement set af 9. Si vous mettez votre firmware à jour, vérifiez que la valeur a bien été migrée.
Configuration complète recommandée pour un répéteur en France
Ces cinq paramètres, combinés aux régions adaptées à votre secteur, constituent la base d'un répéteur MeshCore bien réglé pour le contexte européen et français :
set dutycycle 10 <-- 6 min TX/heure max (conformité ETSI) set loop.detect minimal <-- détection et cassage des boucles set flood.max 21 <-- limite le nombre de sauts de flood set flood.advert.interval 49 <-- espacement des annonces de présence set advert.interval 0 <-- pas d'annonce périodique non sollicitée Régions (Region Management) : fr <-- niveau national fr-idf <-- niveau régional (adapter à votre région) fr-75 <-- niveau départemental (adapter à votre dép.)
Et les Companion Nodes ? Les terminaux utilisateurs émettent naturellement peu et rarement. Le duty cycle est surtout critique sur les Repeaters et les backbones, qui floodent, retransmettent et relaient en permanence. Sur un Companion Node, le réglage par défaut est acceptable, même si appliquer 10 % reste une bonne pratique.
5. Questions fréquentes
MeshCore peut-il fonctionner sans répéteur ?
Oui, mais de manière très limitée. En l'absence de répéteurs, les Companion Nodes ne peuvent communiquer qu'entre eux en portée directe — quelques centaines de mètres en milieu urbain, quelques kilomètres en terrain dégagé. Dès qu'on souhaite couvrir une ville, une vallée ou une région entière, les répéteurs deviennent indispensables.
Quelle est la différence entre MeshCore et Meshtastic ?
La différence principale est le routage. Dans Meshtastic, tous les nœuds participent au routage par défaut, ce qui crée des problèmes de scalabilité sur les grands réseaux. MeshCore réserve strictement le routage aux Repeaters dédiés, améliorant la fiabilité et réduisant les collisions, au prix d'une infrastructure un peu plus planifiée.
Ai-je besoin d'une licence radioamateur pour utiliser MeshCore ?
Non. MeshCore fonctionne sur la bande ISM 868 MHz, une bande libre qui ne nécessite pas de licence en Europe. Vous devez en revanche respecter les limitations réglementaires (puissance d'émission maximale, duty cycle) définies par l'ARCEP et alignées sur les normes ETSI.
Peut-on faire tourner un Repeater sur batterie solaire ?
C'est même la configuration idéale pour un relais en zone isolée ou en altitude. Un panneau de 10 à 20 W combiné à une batterie LiPo de 3 000 à 5 000 mAh suffit à alimenter un module LoRa en mode répéteur sur de nombreuses régions de France, y compris en hiver si l'ensoleillement est suffisant.
Le Room Server doit-il être sur un nœud séparé ?
Non obligatoirement. Il est tout à fait possible de faire tourner un Room Server sur le même matériel qu'un Repeater. Cependant, pour des raisons de fiabilité et de maintenance, les déploiements sérieux privilégient généralement un nœud dédié, surtout si plusieurs salons sont actifs simultanément.
Que se passe-t-il si je laisse le wildcard "*" actif sur mon répéteur ?
Le wildcard * accepte les paquets sans tag de région. Utile en phase de démarrage, il doit passer en mode DENY FLOOD sur un réseau mature pour que seuls les paquets régionnés soient relayés, réduisant significativement le bruit de fond radio.
Mots-clés : MeshCore, LoRa, réseau mesh, radioamateur, Repeater, Companion Node, Room Server, duty cycle, 868 MHz, régions France, fr-idf, fr-ara, Meshtastic, T-Deck, Heltec V3, ETSI, bande ISM