Référence des champs MeshPacket et Data de Meshtastic : l’enveloppe radio des paquets
Réponse rapide
Le MeshPacket est l’enveloppe radio de chaque message Meshtastic. Il transporte les numéros de nœud de l’expéditeur (from) et du destinataire (to), le channel, un id unique, la charge utile (octets encrypted bruts sur les ondes, ou un sous-message Data decoded une fois qu’un nœud possédant la bonne clé le déchiffre), les champs de routage (hop_limit, hop_start, want_ack, next_hop) et les métadonnées de réception (rx_snr, rx_rssi). Le sous-message Data transporte ensuite le portnum (quelle application) et le payload. Chaque champ ci-dessous est tiré mot à mot de mesh.proto.
Télécharger le CSV Télécharger le JSON API REST →
L’enveloppe radio des paquets Meshtastic, transcrite mot à mot depuis
meshtastic/protobufs → mesh.proto (MeshPacket + Data, en date du
2026-07-21). Les numéros de champ et les types sont exacts; les lignes du tableau et les
fichiers de données restent en anglais parce qu’ils indexent le fichier source anglais. Le comportement de
routage et de chiffrement est volontairement laissé aux pages spécialisées liées plutôt que
reformulé ici; aucune valeur RF/fréquence/puissance n’apparaît sur une référence
protobuf.
| Message | Groupe | Champ | nº | Type | Rôle (en anglais — littéral) |
|---|---|---|---|---|---|
MeshPacket |
Addressing | from |
1 | fixed32 |
The sending node number. The crypto implementation also uses this field. |
MeshPacket |
Addressing | to |
2 | fixed32 |
The immediate destination. 4,294,967,295 (max uint32) means the packet is a broadcast on the channel; any other value is a direct message to that specific node. |
MeshPacket |
Addressing | channel |
3 | uint32 |
Index into the secondary-channels table the packet was sent/received on; unset means the primary channel. Deep inside the router (while the payload is encrypted) this field instead holds the channel hash. It is a local concept, meaningless to send between nodes. |
MeshPacket |
Addressing | id |
6 | fixed32 |
A unique ID for this packet, used by the flooding algorithm. Always 0 for no-ack or non-broadcast packets; otherwise unique on a per-sender basis. |
MeshPacket |
Payload (oneof) | decoded |
4 | Data |
The decoded payload (a Data sub-message). Present only once a node with the correct key has decrypted the packet — software outside the mesh radios only ever sees this form. |
MeshPacket |
Payload (oneof) | encrypted |
5 | bytes |
The encrypted payload bytes, as the packet travels over the air before decryption. |
MeshPacket |
Routing | hop_limit |
9 | uint32 |
Hops remaining before the packet is dropped — decrements at each relay (managed-flood routing). |
MeshPacket |
Routing | want_ack |
10 | bool |
Request that the destination return an acknowledgement for this packet. |
MeshPacket |
Routing | priority |
11 | Priority |
Transmit-queue priority (UNSET/MIN/BACKGROUND/DEFAULT/RELIABLE/RESPONSE/HIGH/ALERT/ACK/MAX). Internal only — never sent over the air; it orders the local priority queue so acks and routing go out before background traffic. |
MeshPacket |
Routing | via_mqtt |
14 | bool |
Set when the packet arrived (or is going) via an MQTT connection rather than the LoRa radio. |
MeshPacket |
Routing | hop_start |
15 | uint32 |
The original hop_limit at send time, so a receiver can compute how many hops the packet actually took. |
MeshPacket |
Routing | next_hop |
18 | uint32 |
The next-hop node (last byte of the node number) used by next-hop routing. |
MeshPacket |
Routing | relay_node |
19 | uint32 |
The relay node (last byte of the node number) that forwarded this packet. |
MeshPacket |
Routing | tx_after |
20 | uint32 |
Requests that the node delay transmission of this packet by this many seconds. |
MeshPacket |
Routing | transport_mechanism |
21 | TransportMechanism |
Which transport the packet arrived over: INTERNAL, LORA (+ALT1/ALT2/ALT3), MQTT, MULTICAST_UDP, API or UNICAST_UDP. |
MeshPacket |
Crypto | public_key |
16 | bytes |
The sender public key, used for PKC (public-key) encrypted direct messages. |
MeshPacket |
Crypto | pki_encrypted |
17 | bool |
True when the packet was encrypted with PKC (per-node public-key) rather than a shared channel PSK. |
MeshPacket |
Crypto | xeddsa_signed |
22 | bool |
True when the packet carries an XEdDSA signature. |
MeshPacket |
Receive metadata | rx_time |
7 | fixed32 |
The timestamp (seconds) at which the packet was received. |
MeshPacket |
Receive metadata | rx_snr |
8 | float |
The measured signal-to-noise ratio of the received packet. |
MeshPacket |
Receive metadata | rx_rssi |
12 | int32 |
The measured received signal strength (RSSI) of the packet, in dBm. |
Data |
Data payload | portnum |
1 | PortNum |
Which application the payload is for — the PortNum enum (see the PortNum registry). Formerly named "typ". |
Data |
Data payload | payload |
2 | bytes |
The application payload bytes. |
Data |
Data payload | want_response |
3 | bool |
Ask the recipient to respond in kind (e.g. reply with its own position). On a broadcast this yields many replies. |
Data |
Data payload | dest |
4 | fixed32 |
The destination node address, filled in by the mesh radio software; RouteDiscovery and multihop-routing messages populate it. |
Data |
Data payload | source |
5 | fixed32 |
The original sender address, populated only for reliable multihop packets (to keep packets small). |
Data |
Data payload | request_id |
6 | fixed32 |
The original message ID this message reports failure/response on (routing or response messages). Formerly original_id. |
Data |
Data payload | reply_id |
7 | fixed32 |
If set, this message is a reply to a previously sent message with this ID. |
Data |
Data payload | emoji |
8 | fixed32 |
When set, the payload should be treated as an emoji reaction (e.g. a heart or thumbs-up) to a message. |
Data |
Data payload | bitfield |
9 | uint32 (optional) |
Bitfield of extra flags; the first use indicates the user approves uploading this packet to MQTT. |
Data |
Data payload | xeddsa_signature |
10 | bytes |
The XEdDSA signature over the payload. |
Comment le paquet s’assemble
- Adressage —
from/tosont des numéros de nœud; untode 4,294,967,295 est une diffusion sur le canal, toute autre valeur un message direct.idrend chaque paquet unique pour l’algorithme d’inondation. - Charge utile — sur les ondes, la charge utile est constituée d’octets
encrypted; un nœud avec la bonne PSK de canal ou clé PKC la déchiffre en sous-messageDatadecoded, que les applications lisent réellement. - Routage —
hop_limitdécroît à chaque relais (routage par inondation gérée, en anglais);hop_startpermet au récepteur de savoir combien de sauts ont été utilisés;next_hop/relay_nodeservent au routage au prochain saut. - Chiffrement —
pki_encrypted+public_keymarquent les messages directs à clé publique (PKC); détails sur la page chiffrement (en anglais). - Métadonnées de réception —
rx_snretrx_rssi(dBm) sont fixés localement quand un nœud entend le paquet; ils ne voyagent jamais sur les ondes.
Pages reliées
Registre des PortNum Meshtastic (en anglais — le champ portnum de cette enveloppe) ·
Modèle de chiffrement PSK/PKC (en anglais) ·
Réglages régionaux LoRa (en anglais) ·
Référence Store & Forward ·
Balise Bitcoin via Meshtastic ·
Pôle mesh souverain (en français).
Crédit : les messages MeshPacket et Data sont définis et
maintenus par le projet Meshtastic dans
meshtastic/protobufs
(GPL-3.0). Cette page est un index daté, lisible par les humains et les machines, de ce fichier.
Produits, réparations et guides connexes
- hub de souveraineté pour Bitcoiners
- la stack souveraine des plebs
- Nostr pour les Bitcoiners
- héberger votre propre relais Nostr
- débuter avec Meshtastic
- Bitcoin sur les réseaux mesh Meshtastic
- répertoire d’outils matériels open source
- minage Bitcoin hors réseau
Dernière révision: 23 juillet 2026.
