MeshCore Packet Format Reference

Packet Format

This document describes the MeshCore packet format.

Version 1 Packet Format

This is the protocol level packet structure used in MeshCore firmware v1.12.0

[header][transport_codes(optional)][path_length][path][payload]

Packet Format

FieldSize (bytes)Description
header1Contains routing type, payload type, and payload version
transport_codes4 (optional)2x 16-bit transport codes (if ROUTE_TYPE_TRANSPORT_*)
path_length1Encodes path hash size in bits 6-7 and hop count in bits 0-5
pathup to 64 (MAX_PATH_SIZE)Stores hop_count * hash_size bytes of path data if applicable
payloadup to 184 (MAX_PACKET_PAYLOAD)Data for the provided Payload Type

NOTE: see the Payloads documentation for more information about the content of specific payload types.

Header Format

Bit 0 means the lowest bit (1s place)

BitsMaskFieldDescription
0-10x03Route TypeFlood, Direct, etc
2-50x3CPayload TypeRequest, Response, ACK, etc
6-70xC0Payload VersionVersioning of the payload format

Route Types

ValueNameDescription
0x00ROUTE_TYPE_TRANSPORT_FLOODFlood Routing + Transport Codes
0x01ROUTE_TYPE_FLOODFlood Routing
0x02ROUTE_TYPE_DIRECTDirect Routing
0x03ROUTE_TYPE_TRANSPORT_DIRECTDirect Routing + Transport Codes

Path Length Encoding

path_length is not a raw byte count. It packs both hash size and hop count:

BitsFieldMeaning
0-5Hop CountNumber of path hashes (0-63)
6-7Hash Size CodeStored as hash_size - 1

Hash size codes:

Bits 6-7Hash SizeNotes
0b001 byteLegacy / default mode
0b012 bytesSupported in current firmware
0b103 bytesSupported in current firmware
0b114 bytesReserved / invalid

Examples:

Payload Types

ValueNameDescription
0x00PAYLOAD_TYPE_REQRequest (destination/source hashes + MAC)
0x01PAYLOAD_TYPE_RESPONSEResponse to REQ or ANON_REQ
0x02PAYLOAD_TYPE_TXT_MSGPlain text message
0x03PAYLOAD_TYPE_ACKAcknowledgment
0x04PAYLOAD_TYPE_ADVERTNode advertisement
0x05PAYLOAD_TYPE_GRP_TXTGroup text message (unverified)
0x06PAYLOAD_TYPE_GRP_DATAGroup datagram (unverified)
0x07PAYLOAD_TYPE_ANON_REQAnonymous request
0x08PAYLOAD_TYPE_PATHReturned path
0x09PAYLOAD_TYPE_TRACETrace a path, collecting SNR for each hop
0x0APAYLOAD_TYPE_MULTIPARTPacket is part of a sequence of packets
0x0BPAYLOAD_TYPE_CONTROLControl packet data (unencrypted)
0x0Creservedreserved
0x0Dreservedreserved
0x0Ereservedreserved
0x0FPAYLOAD_TYPE_RAW_CUSTOMCustom packet (raw bytes, custom encryption)

Payload Versions

ValueVersionDescription
0x0011-byte src/dest hashes, 2-byte MAC
0x012Future version (e.g., 2-byte hashes, 4-byte MAC)
0x023Future version
0x034Future version

Revision #1
Created 2026-05-03 05:05:14 UTC by Mesh America Admin
Updated 2026-05-03 05:05:14 UTC by Mesh America Admin