Repository navigation
v0.1.0-alpha.4
Pre-releaseThe fourth alpha, for Heltec WiFi LoRa 32 V3 boards. It adds groups: a conversation among several
boards, where every message so far was to one. The board's screen is also now one for the person
carrying it, and shows its address as a code a phone can scan.
It is an alpha. The protocol is a draft and will change, and a later build may not talk to this
one or keep its sessions. Nobody outside the project has reviewed the cryptography. Do not rely
on it for anything that matters.
What changed
- Groups. A group is the boards that hold one secret. A message to it is one frame that
every relay in reach passes on once, unless it hears another do so first, and every board that
holds the secret reads. A board holds up to four. From the console:group new <name>,
group invite <number>,group join <id>,group send <number> <text>,group leave <number>, andgroupsto list them. The app at https://ternmesh.org/app does the same. - Invites. A board is handed a group by one that has it, over the session the two share. It
is shown the invite, and holds the group only once someone joins. - The companion protocol is at version 2, which is how a client reaches groups. A client that
speaks version 1 works as before, and is told nothing of them. - A screen for the person carrying the board. Pressing PRG moves through Home, Messages, Air,
Share and This node. A message that arrives turns the screen on and shows it. The pages of
routing ids and frame counts are still there for a bench:screen bench on. - An address a phone can scan. The Share page shows the board's address as a QR code, which
opens a page on ternmesh.org that shows the address and a twelve-digit short code to check it
by.contacton the console takes that link as well as the sixty-four digits. - The battery is read, and Home and the app show the charge, where they showed nothing.
What to know about groups
- Any member can write as any other. Everyone in a group holds the same key. A message says
who wrote it, and any member could have said so. - Whoever gets the secret reads everything, frames they recorded before included, and nobody
can be put out of a group. The others start a new one. - Nothing says a message arrived. A group message is waiting, then sent once it has gone on
the air. No board answers it. - A board writes only so much. Its own group messages take at most 0.5% of its time: about
two dozen short ones at once and one every 25 seconds after. It spends up to 3% of its time
passing on other boards'. Neither number has been measured against anything. - An old message can be sent again by anyone who recorded it, and is read as new. A board
knows a group frame it has had only by the last 64 it read in that group, and forgets those
when it restarts. A frame older than that, recorded off the air and sent again, shows as a new
message with its old words. Nobody need hold the group's secret to do it. - An invite not joined before a restart is gone.
Groups were run between two boards in range of each other, from the console and from the app's
own code over USB: a group made, an invite sent and joined, messages each way. A group message
has not been further than one hop on real radios, and relays staying silent on hearing another
pass a frame on has only run in tests on a computer. The app's pages for groups, the new screen,
the QR code and the battery reading were not checked on a board as part of this release's own
testing. If you have three boards, or see any of these misbehave, those are the reports we most
want.
Updating
Update every board that should carry a group's messages. A board on 0.1.0-alpha.3 does not
pass group messages on and cannot take an invite. Everything else works between this build and
that one: first contact, sessions they already have, and messages.
A board running an earlier alpha keeps its address, sessions and contacts if you write the
-app.bin image at 0x10000; https://ternmesh.org/flash does that when you say the board runs
Tern already.
tern-heltec-v3-us915-0.1.0-alpha.4.bin |
United States, Canada: 921.25 MHz |
tern-heltec-v3-eu868-0.1.0-alpha.4.bin |
Europe: 869.475 MHz, at most 10% of any hour |
The full images are written at 0x0, replace whatever is on the board, and give it a new
address. Never power a board with nothing on the antenna connector. SHA256SUMS has the
SHA-256 of each image.
What is still not in it
- No message to everyone. A group is those who were invited; there is no public channel.
- Messages are kept only in memory on the board. The web client keeps what it has seen in
the browser; a message that arrives while no client is connected is lost if the board restarts
before one connects. - No phone app. The web client reaches a board over Bluetooth from Chrome on Android, and
not from an iPhone. - Boards start at 2 dBm, a bench setting that reaches across a building, not a town, until
you raise it. - Keys sit in flash unencrypted, a group's secret among them. Anyone holding the board can
read them. - One board only. An nRF52 port is next.