mesh(tastic|core)

atelier découverte

07 . 02 . 26
joachim@fourbi.eu

joachim

balcon

je fais des sites web, j’arrose mes plantes et j’aime jouer avec des tout petits ordinateurs

je connais peu sur le sujet, je m’y suis intéressé parce que les mini radios ont l’air fun, et j’explore tout ça avec des amis

l’atelier

  1. le protocole (un peu de contexte)
  2. on s’amuse avec les radios
  3. les réseaux mesh (un peu + de théorie)
  4. questions, discussions, tests

le protocole

LoRa

  • technique de radio
  • longue portée (LongRange)
  • faible consommation énergétique
  • couche physique pour différents protocoles (LoRaWAN…)
  • principalement utilisée sur l’Internet des Objets
  • émet sur les bandes ISM (industrielle, scientifique et médicale)

cadre légal

on émet et on reçoit sur le spectre public, on est soumis aux réglementations

en Europe, la bande 868 MHz (en pratique, entre 869,4 et 869,65 MHz) est utilisée par plusieurs protocoles (LoRa, Helium, Sigfox…) et standardisés par l’ETSI EN300.220

varie selon les zones géographiques (EU : 433 MHz et 868 MHz, US : 915 MHz…)

ça veut dire que pour agir sans problème, on reste dans la bande autorisée, à la puissance autorisée

et donc en achetant une antenne ou un module LoRa il faut faire attention à cette fréquence

meshtastic / meshcore

deux projets qui font la couche logicielle (firmware + applications)

ça permet à ces radios LoRa réglées sur la même fréquence de se comprendre

début du projet meshtastic en 2020
meshtastic en GPL, meshcore en MIT (et clients propriétaires)

meshtastic ou meshcore permettent :

  • de communiquer par message (200 caractères)
  • en public ou chiffré
  • en peer to peer
  • avec un haut niveau de résilience du réseau
  • sur du matériel pas très cher

démonstration

  • ça capte tout le réseau parisien
  • on communique sur le canal NarvaLoRa entre nous,
    ou en privé avec les contacts “favoris” ⭐
    (pas sur le canal Public)
  • 🙂_820c smiley, 🌠_d43f star, 🐍_e628 snek
  • code d’appairage bluetooth 123456
  • (et on ne touche pas aux préférences du module svp)

les réseaux mesh

topologie

  • réseau distribué
  • réseau décentralisé

un résau meshtastic
(via meshtastic.org)

le réseau est composé de nœuds qui rediffusent les messages reçus, de rebond en rebond, jusqu’au destinataire

tous les nœuds partagent la même fréquence, bande passante et facteur d’étalement

un message et sa réponse peuvent prendre des chemins différents, les nœuds suivent des règles précises pour la rediffusion des messages, dans une limite de 8 rebonds

niveau matériel, la plupart des nœuds s’utilisent avec un ordinateur ou un téléphone, connecté en bluetooth BLE ou en USB série, mais certains modules ont un écran et un clavier pour être utilisés comme des terminaux sans besoin d’un ordi/téléphone externe

(via les différents fabricants)

le réseau meshtastic parisien

les presets

les presets sont des définitions de couple trouple fréquence, bande passante et facteur d’étalement

le choix de ce preset pour tout le réseau va permettre de tirer partie de l’algo de diffusion de meshtastic

sur Paris on utilise Medium Fast, au Chaos Communication Congress, avec des milliers de nœuds, le preset utilisé était Short Turbo

les rôles

le firmware est identique pour tous

  • CLIENT : terminal qui rediffuse
    • CLIENT_BASE : rediffuse en priorité à ses favoris
    • CLIENT_MUTE : reçoit mais ne rediffuse pas
    • CLIENT_HIDDEN : le plus discret possible
  • ROUTER : nœud d’infrastructure, souvent non surveillé
    • ROUTER_LATE : rediffuse largement après les autres

les canaux

  • on a jusqu’à 8 canaux de discussion
  • le canal public est toujours présent, au niveau 0, sans nom et sans clé
  • les canaux secondaires sont définis par un nom et une clé de chiffrement
  • on peut aussi discuter en privé (c’est chiffré)
  • un nœud qui n’a pas la clé ne rediffuse pas

meshcore

c’est grosso modo la même chose que meshtastic, mais avec une approche différente

meshcore utilise le même matériel et les mêmes fréquences

la philosophie est différente, plus adaptée à une topologie fixe

meshcore a une organisation en trois rôles, chacun a son firmware spécifique :

  • companion : comme CLIENT_MUTE, le terminal qui accède et écrit des messages et ne les retransmet pas
  • repeater : comme ROUTER, rediffuse tous les messages avec un algo de routage
  • room_server : boîte aux lettres pour companions autorisés

le fonctionnement de meshcore n’a pas la limite de 8 rebonds, donc les messages peuvent se répandre bien plus loin tant qu’il y a des repeaters

là où meshtastic inonde de paquets, meshcore établit une table de destinataires ciblés et organise ses envois en conséquence

à quoi c’est utilisé ?

  • communication off-grid (zone blanche)
  • communication offline (blackout/brownout électrique)
  • catastrophes naturelle
  • contournement de censure
  • mise à jour de position en temps réel

à quoi est-ce que je l’utilise ?

mes notes : 🌿 fourbi.eu/billets/mesh

  • pour m’amuser avec les camarades
  • un premier pied dans le monde radio-amateur
  • … une rando à vélo en groupe ? (en projet)
  • c’est bidouillable

bidouillabilité

le fait que les éléments basiques des modules sont petits permet beaucoup de choses

  • nœud modulaire imprimé en 3d
    (via r/meshtastic)
  • répéteur USB filtre cavité / antenne moxon
    (via Mesh IDF)
  • nœud en lego
    (via martin)

les modules LoRa de base sont en ESP32 ou nRF52, des plateformes matérielles de développement plutôt accessibles

ça permet notamment de greffer un microcontrolleur en ESP32 sur un Raspberry Pi, ou de brancher des capteurs (GPS, météo…) sur les cartes, pour diffusion sur le mesh

limites

ça reste des ondes radio, donc la limite principale est liée à la saturation de la fréquence

  • “facile” à faire pour une entité qui en a les moyens
  • environnement dense saturé d’IoT
  • géographie/architecture urbaine
  • mauvais paramétrage : collision de paquets
  • un module a peu de mémoire, et ne garde qu’une trentaine de messages les plus récents
  • si ton module n’est pas en ligne ou pas bien exposé, il ne recevra pas de message
  • ➡️ pas de discussion asynchrone

mais il y a d’autres limites :

  • pas de moyens de modération
    • si on veut bannir quelqu’un, on change le nom du canal ou on change la clé
    • on peut ignorer un nœud mais il reçoit ce qui est sur les ondes
  • honeypot repeater pour une attaque MITM ou surtout pour surveiller les metadonnées (gps, etc.)

pour se lancer

pour avoir la bidouillabilité et une bonne portée dès le début pour une cinquantaine d’euros, je recommande :

🔗 recommandations d’achat

documentations officielles

projets communautaires

NarvaLoRa

projet (en phase initiale) dans les communes de l’est parisien

  • meshcore ou meshtastic ?
  • est-ce qu’on installe des nœuds en boy-scout ou en pirate ?
  • modules “grand public” dans les endroits sympa (la BOM, le Fuz, fablabs, maison populaire, hacker spaces…)

questions, discussions, tests…

(là non plus on ne spamme pas le canal Public et on reste sur NarvaLoRa svp)

Merci !

@joachim@boitam.eu

partage Creative Commons BY-NC-SA
les illustrations appartiennent à leurs auteurs