Understanding MeshCore: Channels, Rooms, and DMs

As I talk to people new to MeshCore, some of the common areas of confusion I hear are around the options for communication. The public channel, hashtag channels, Rooms, and DMs. Let's explore how these differ and when you might want to choose one over another.

💡
Statewide, we use the channel "#idahomesh"
If you're able to connect to the SW Idaho Mesh, join us on the "IdahoMesh Room" server.

Quick Reference

Type Security Catch-up Best For
Public Channel None No Public conversations, broadcasts
Room (public) None Yes reliable group messaging
Hash Channel None No Topic organization
Private Channel Good No Secure group communications
Room (private) Good Yes Reliable, secure group communication
Direct Message (DM) Best No Private 1:1 conversations

Channels vs Rooms

Before we go through each option noted above, I think it's best to explain the key differences between Channels and Rooms.

Channels, regardless of type (Public, Hashtag, or Private), are broadcast only and are flood routed. The message gets sent to the entire mesh, and everyone who can hear mesh repeaters and has that channel configured on their companion node will get the message. If a node isn't in a place where it can hear a repeater on the mesh, the node will not (ever) get that message. This can be annoying if you're trying to have a long conversation with someone in sketchy coverage.

Rooms are kind of a cross between a channel and a DM. For those of us old enough to remember BBS systems, Rooms are basically that. Each room requires a room server, a node that hosts the room and stores messages. You must have a path to the room server to use the room. When you log into a room server you'll get any unread messages sent to your node (MeshCore Rooms currently store the last 16 messages for syncing). This means if you lose your connection to the mesh, when you get in range again any recent messages will be synced to your companion. This is extremely handy in many situations.

Want to talk with MeshCore and Meshtastic enthusiasts all over Idaho?
Come join us on our Discord

IdahoMesh Discord

Channels

Please keep in mind that all Channels are flood routed. Messages on channels (public, hash, or private) exist in the moment they're transmitted. If you're out of range or your device is off, you miss messages silently. The sender gets no indication that you didn't receive it, and you have no idea you missed anything.

⚠️
There is no indication that users received a channel message, and users will not know if they are missing messages

Public Channel

Not much to explain here, messages sent to "Public" and thus seen by everyone on the mesh, assuming they haven't removed the Public channel. If a user isn't on the mesh at the time the message is sent, they will not get it.

Hashtag Channels

Hashtag channels are like private channels, but the name is basically the password. Don't consider hashtag channels private; anyone who guesses or learns the channel name can read all messages. Hashtag channels are great for organizing messages by topic. For example, we have an #idahomesh channel where we discuss our mesh, hardware, repeater coverage, and growth plans. #testing is a channel used in lots of places for test messages, testing repeater coverage, and other related tests.

🔒
If you need security, use Private channels, a Private Room or DMs

Private Channels

Private channels use strong encryption and randomly generated keys. To send or receive messages on private channels, you must have the encryption key. If you create a private channel, you'll need to share the key with everyone you want to join. Like all other channel types, if someone is out of mesh range when a message gets posted, they never get the message. If that's a problem, consider a room server.

Rooms

A Room Server stores messages and delivers them when you connect. When you log into a room, you receive the last 16 messages you haven't seen. Rooms can be public or private. Public rooms often have a blank password, or a password that is widely shared or easily guessable. Private rooms can also be set to read-only, meaning that only admins can post messages; these can be used for announcement boards or other asymmetrical communication needs.

Direct Messages

DMs are end-to-end encrypted messages between two companion nodes. They're the strongest privacy on MeshCore and also the most efficient