Meshtastic HOPS, how it works, True 0 Hop Android CLI 2.5.1

Published on:

Hop Limit, Hop Count, Hops Away, Android & Python CLI 2.5.1 software

Meshtastic Hope Count explained

At the beginning of 2024 Meshtastic could not even report how many HOPS AWAY another node was until the introduction of FIRMWARE VERSION 2.3 but since then t it always flagged 0 hop nodes as 0/unknown.

Recently the new Python CLI introduced a change in their 2.5.1 Release and can now differentiate between a true 0 hop and 0/unknown. This will help local meshes understand the hop count and routing with more confidence and help build a better mesh.


  1. Every so often each Meshtastic radio node transmits a data-packet and in that packet is your setting for MAX HOPS. If nodes receive a node and their MAX HOPS = HOP COUNT they know its from the original source a ZERO HOP
  2. When another radio nodes receives a packet, they log your MAX HOPS (e.g. 3) and compare to HOP COUNT they then reduce HOP COUNT by -1 then that node resend's the packet with HOP COUNT = 2
  3. The next node to receive the second nodes packet Looks at HOP COUNT which is 2 reduces it again by -1 so HOP COUNT = 1 and Rebroadcasts the packet.
  4. The 3rd node receives the packet looks at HOP COUNT which is now 1 and reduces it again by -1 so and rebroadcasts the packet with HOP COUNT set to 0
  5. Any other nodes that now Receive the packet from the last node will see the HOP COUNT = 0 and will not rebroadcast.

Where it goes wrong is when incomplete data is received and the MAX HOP or HOP COUNT maybe missing or corrupt and hop-count can't tell if MAX HOPS = HOP COUNT and why it used to say 0/unknown but after Python CLI and Android updated to 2.5.1 it now flags Those as UNKNOWN and if complete data shows >HOP 0 (In future releases "unknown" will show as "?" )

I have updated the Pole1 reports so NODE LIST MAP PLOT and SNR GRAPH all show true hops from unknown hops "?"

Meshtastic Message sending


  1. When your radio node 📻 sends a message If your node doesn't receive a confirmation from another node after a certain timeout, it will retransmit the message up to three times.
  2. When a receiving radio captures a packet, it checks to see if it has heard that message before. If it has it ignores the message. If it hasn't heard the message, it will rebroadcast it (if you role allows re-broadcast)
  3. For each message a radio rebroadcasts, it takes note of your set HOP MAX decrements HOP COUNT down by one. When a radio node receives a packet with a hop limit of zero, it will not rebroadcast the message further.
  4. Each radio node will store a small amount of packets (around 30) in its memory for when it's not connected to a client app. If it's full, it will replace the oldest packets with newly incoming text messages only.

Check out the last blog post: Local Traffic Lights wiped out all my Meshtastic Nodes.

Look out for more Meshtastic news and projects. at Pole1 Blog

If you have A Meshtastic project or story to share get in touch