Quand quelqu’un partage un canal Meshtastic, il vous envoie un lien du genre https://meshtastic.org/e/#<données> — ou le code QR qui encode la même chose. Ce lien paraît opaque, mais il n’est pas chiffré : tout ce qui suit le # est un blob base64 (sûr pour les URL) que n’importe qui peut décoder. Cette référence explique exactement ce que contient ce blob, champ par champ, et — surtout — ce que vous révélez en partageant une URL de canal. Chaque détail structurel provient des définitions Protobuf canoniques de Meshtastic (apponly.proto, channel.proto, config.proto).
La version en une phrase, si vous ne lisez rien d’autre : une URL de canal transporte la clé pré-partagée du canal en clair. Quiconque détient l’URL peut déchiffrer ce canal. Traitez un lien de canal avec le même soin que la clé qu’il contient.
Ce que l’URL encode réellement : un ChannelSet
Le fragment après le # est un message ChannelSet encodé en base64url — la représentation compacte, chez Meshtastic, d’un canal primaire et de tout canal secondaire. Sa structure est petite :
| Champ nº | Nom | Type | Signification |
|---|---|---|---|
| 1 | settings |
repeated ChannelSettings | Une entrée par canal partagé |
| 2 | lora_config |
Config.LoRaConfig | Les réglages radio (preset de modem, région) |
Une URL partagée n’est donc pas simplement « un canal » — elle peut transporter tout votre ensemble de canaux et votre configuration radio.
À l’intérieur de chaque canal : ChannelSettings
Chaque entrée de settings est un message ChannelSettings. Voici les champs qui définissent un canal :
| Champ nº | Nom | Type | Contenu |
|---|---|---|---|
| 1 | channel_num |
uint32 | Déprécié — numéro de canal hérité. |
| 2 | psk |
bytes | La clé pré-partagée. 0, 16 ou 32 octets (voir le tableau de force de clé plus bas). |
| 3 | name |
string | Nom court du canal, sous 12 octets (p. ex. un nom vide s’affiche comme le « LongFast » par défaut). |
| 4 | id |
fixed32 | Un identifiant de canal globalement unique. |
| 5 | uplink_enabled |
bool | Transférer les messages de ce canal vers l’internet public (MQTT). |
| 6 | downlink_enabled |
bool | Transférer les messages depuis l’internet vers le mesh. |
| 7 | module_settings |
ModuleSettings | Configuration de module propre au canal. |
La paire uplink_enabled / downlink_enabled compte pour la vie privée : un canal avec l’uplink activé est ponté vers un serveur MQTT sur internet, donc son trafic quitte entièrement le mesh RF local. Si une URL partagée les a activés, vous rejoignez un canal qui parle à l’internet.
Le champ PSK : ce que « chiffré » signifie vraiment ici
La sécurité d’un canal réside entièrement dans ce champ psk, et sa longueur vous indique la force de la clé :
| Longueur du PSK | Signification |
|---|---|
| 0 octet (vide) | Aucune clé propre au canal. |
| 16 octets | Clé AES-128. |
| 32 octets | Clé AES-256. |
Il existe aussi un raccourci d’un seul octet, très utilisé par les applis, pour référencer la clé par défaut bien connue (la clé derrière le canal public « LongFast »), plutôt que d’intégrer une clé aléatoire complète. Cette convention de clé par défaut — et pourquoi un canal qui l’utilise est en pratique public malgré l’affichage d’un cadenas — est la plus grande méprise de Meshtastic, que nous couvrons en profondeur dans notre guide du chiffrement Meshtastic. Le point structurel de cette référence : parce que le PSK voyage dans l’URL, partager le lien partage la clé. Il n’y a pas d’« échange de clés » distinct — l’URL est l’échange de clés.
Rôles de canal : PRIMARY vs SECONDARY
Quand les canaux sont représentés dans le message Channel plus complet (par opposition à l’ensemble compact de l’URL), chacun porte un role :
| Rôle | Valeur | Comportement |
|---|---|---|
DISABLED |
0 | Canal inutilisé. |
PRIMARY |
1 | Définit le créneau de fréquence radio — un seul primaire autorisé par appareil. |
SECONDARY |
2 | Sert au chiffrement/déchiffrement seulement; ses réglages radio sont ignorés (il roule sur la fréquence du primaire). |
C’est pourquoi vous pouvez avoir plusieurs canaux actifs à la fois : un PRIMARY définit la fréquence que la radio utilise réellement, et les canaux SECONDARY ne sont que des contextes de chiffrement supplémentaires superposés.
Les réglages radio : LoRaConfig
La moitié lora_config d’un ChannelSet porte les paramètres radio. Deux champs comptent le plus pour l’interopérabilité — si deux nœuds ne concordent pas sur eux, ils ne s’entendront pas :
modem_preset(champ 2) — le compromis vitesse/portée. Les presets, par valeur d’énumération, sont :LONG_FAST(0, le défaut),LONG_SLOW(1),VERY_LONG_SLOW(2),MEDIUM_SLOW(3),MEDIUM_FAST(4),SHORT_SLOW(5),SHORT_FAST(6),LONG_MODERATE(7),SHORT_TURBO(8),LONG_TURBO(9), et d’autres presets compacts/étroits dans les firmwares ultérieurs. Pour ce que chaque preset signifie en pratique, voyez notre référence des presets de modem.region(champ 7) — sélectionne le plan de fréquences régional sous lequel l’appareil opère. (Un nœud doit être réglé sur une région légale pour l’endroit où il se trouve; la région régit quelles fréquences et limites de rapport cyclique s’appliquent.)use_preset(champ 1) — si l’appareil utilise un preset nommé (true) ou des valeurs manuelles complètes de bande passante/facteur d’étalement/taux de codage.
Ce que partager une URL de canal expose — la liste
Mis ensemble, voici ce qu’une personne reçoit quand vous lui remettez un lien de canal :
- La clé de chiffrement de chaque canal de l’ensemble — elle peut désormais lire et émettre sur ces canaux.
- Les noms des canaux et leurs identifiants uniques.
- Si les canaux pontent vers l’internet (uplink/downlink).
- Votre configuration radio — preset de modem et région.
Le conseil pratique : pour tout ce qui est privé, générez une clé complète de 32 octets (AES-256) plutôt que de vous fier au défaut, partagez l’URL sur un canal en qui vous avez déjà confiance, et rappelez-vous que révoquer un accès signifie faire tourner la clé et re-partager une nouvelle URL — il n’y a pas de révocation par membre. Pour le modèle cryptographique en profondeur, les nuances d’usurpation, et les métadonnées qui fuient même sur un canal chiffré, lisez le guide du chiffrement Meshtastic. Pour la couche de paquets sur laquelle roulent ces canaux, voyez la référence de la structure des paquets, et pour le vertical élargi, le pôle mesh souverain.
Sources : définitions Protobuf de Meshtastic — apponly.proto (ChannelSet), channel.proto (ChannelSettings, Channel, Role) et config.proto (LoRaConfig, ModemPreset). Les numéros de champ et valeurs d’énumération reflètent le schéma protobuf actuel; confirmez avec votre version de firmware pour les cas limites.






