Skip to content

Channel configuration

If you want to go a little further, you should know that MeshCore supports the concept of "channels" which are essentially different communities separated by their own private keys.

Many of those are "public", in the sense that the encryption key is derived from an easy to guess name, like #testing, so those are not "really" encrypted.

But you can use channels to really create your own secret communication channels. Contents will be encrypted as long as the channel name remains secret, but who is talking to who, the number of messages sent will be visible to an attacker.

Public channels

We know about the follow channels currently in use1:

Name Purpose Hexadecimal secret key Base64 secret key
Public General conversations 8b3387e9c5cdea6ac9e5edbaa115cd72 izOH6cXN6mrJ5e26oRXNcg==
#911 Emergency communications (french) 907a3dd4b73b9d1324b4d6c83425c186 kHo91Lc7nRMktNbINCXBhg==
#emergency Emergency communications (English) e1ad578d25108e344808f30dfdaaf926 4a1XjSUQjjRICPMN/ar5Jg==
#operators Operator coordination, previously #meshcore-ops 1d2c8ee2ee25af1c7a25f6eb6fbbf020 HSyO4u4lrxx6Jfbrb7vwIA==
#montreal Montreal-specific traffic, see also #ottawa 0c4c03b5fbea5b80f89e2a2a16ed3f40 DEwDtfvqW4D4nioqFu0/QA==
#wardriving Used by Meshmapper pings e3c26491e9cd321e3a6be50d57d54acf 48JkkenNMh46a+UNV9VKzw==
#habs Far from real time game updates and gossip e570409412b40c123b4ab787351ab30b 5XBAlBK0DBI7SreHNRqzCw==
#bots Where to run bots, a bot replies to test and pingthere 0d24f5830b449668b8c221759b6c50d2 DST1gwtElmi4wiF1m2xQ0g==
#betabots Run bots here before joining #bots, to test 964072df07723403a611c5cec6d6db95 lkBy3wdyNAOmEcXOxtbblQ==
#testing A message that just says test? send it here or #test cde5e82cf515647dcb547a79a4f065d1 zeXoLPUVZH3LVHp5pPBl0Q==
#devtest To test messages while developing, do not answer messages here 0fd265aa14c00829af942771c742176e D9JlqhTACCmvlCdxx0IXbg==
#ceuxquimarchemoyen Another test channel for people who have trouble 751be125eb7d167e07a95603c9e9a5dd dRvhJet9Fn4HqVYDyeml3Q==

You should generally not need the hex and Base64 keys. They are only provided here as a reference for some rate situations where you need to enter the secret key directly. For example, some standalone firmware like the T-Deck might require this although you might get away with popping up the menu to select the Enter # option.

Other channels

See also the channels used in other communities:

Private channels

All the above channels are, obviously, not really secret. First, they are documented here publicly, but also their private key is derived from the name of the channel which is a single, easy to guess word.

Those spaces are not for private conversations! It's possible to have more private channels by creating a new channel with randomly generated key. The way to do this will vary according to the client, but generally, you absolutely want to let the software generate the key automatically, and not make one yourself, as otherwise you are likely going to create an easily guessable key.

Then your next problem is to share the key across devices. If you use a phone app, you can share the key by scanning it with a bar code on some software. Otherwise you will need to copy the hexadecimal key between devices.

You may send the key over a direct message. This has the important vulnerability that someone may "machine-in-the-middle" attack your connection and learn the key. But if you are in an isolated area, it can work relatively securely.


  1. Those hashes were generated with the one-liner:

    python -c 'import base64; import hashlib; import sys; bytes = hashlib.sha256(sys.argv[1].encode("utf-8")).digest()[:16]; print(bytes.hex(), base64.b64encode(bytes).decode("utf-8"))' '#testing'
    

    A more readable version is available as hashchan.py. ↩