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.
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
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.
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.
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