Skip to content

Visual examples and simulations

This page “connects the dots” by showing how LowMesh frames map from raw PHY bytes to parsed fields.

Wire status: The current mesh header layout uses verFlags (LE uint16) with VERSION bits 15–14, a dynamic ≥16-byte base (20 with HAS_DST_ID), mandatory sessionId, 16-bit channelHash / messageId, optional Region / Fragment / Routing blocks, and no payloadLen field — see Packet layout. payloadType still selects the inner application tail — see Payloads.

Raw bytes to meaning

Live hex stream (auto-scrolling demo)

This component cycles sample Mesh PDUs and parses them using the current modular layout (see reference parseBaseHeader / parseModularPdu in firmware).

Maintainers: Update HexStreamSimulator when verFlags / block order changes; do not resurrect the legacy 23-byte + payloadLen walkthrough.

Network roles in one picture

Roles and paths

Animated roles and traffic

Animated device roles and traffic

Use this as your mental model:

  • Gateway: repeats + optional internet backhaul, can provide services (when those payload types exist).
  • Repeater: stable backbone node, forwards, can host services (when those payload types exist).
  • Client: not always-on infrastructure. Standard Clients have Dynamic Repeater Mode enabled by default and may temporarily relay third-party traffic when no stable Repeater or Gateway is available.

Worked bytes

Normative field tables and PHY sizing (255-byte ceiling, prefixBytes, appTailLen, cipherLen) live in Packet layout and Payload limits. Host-side JavaScript parsers SHOULD mirror the C++ modular parser (dynamic offsets), not a single fixed HDR = 23 slice.

What to add next (when the payload registry ships)

  • A Mermaid sequence diagram for fragmented messages (transport layer): fragments, ACK, retransmits
  • A Mermaid sequence diagram for IoT sleep/ACK (once IOT_UPLINK / IOT_ACK bodies are normative again)

LowMeshOS — always open-source mesh protocol documentation