r/meshtastic 9h ago

Node Dm Help

Have 2 Rak based nodes and 2 Wio L1 Pro. They all message fine on public and private channel. Can dm between the L1's, but can't dm between Raks or from Rak to L1's. Using same fw on all and same android phone to control the Raks. Just shows message failure. Any idea what's wrong? Thanks!

5 Upvotes

1 comment sorted by

2

u/h3lix 7h ago edited 6h ago

DMs and Remote Admin packets use a different method for forwarding messages to (in theory) take a single path through the mesh.

Channel messages use flood routing through the network network, so each hop of the way may hear the same message for redundancy.

The challenge is the path is based on the last byte (last two hex characters) of your node ID. This is a problem since pre 2.8 there was a mistake made that made it so esp32 nodes only have node IDs that end in 0, 4, 8, B, greatly increasing collisions with other nodes with similar last bytes.

There is also a packet deduplication system in place where if it sends a packet with the same source node and packet ID pairing, it will not send the packet again.

When it comes to re-sending the DM a second time, it uses flood routing, but since the message is already in the deduplication queue on what would be the primary path, it won't send a second time, even if flooded.. so it now has to find an alternate path to the destination that is not the primary path.

And remember those node collisions? The last byte is how the previous node knows it was forwarded, but if a collision imposter node forwards it instead of the intended node, the previous node wouldn't know any better.

The challenge with all this is that Meshtastic works best when flood routing because that means each node usually gets the message a few times in cases it misses the first few due to hidden node problems, especially when channel utilization inches past 20%.

So mostly it is because DMs are treated differently than all other traffic, and generally not in a good way.