Skip to content

v0.1.0-alpha.4

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Oct 19:55
· 219 commits to main since this release
046722b

The 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>, and groups to 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. contact on 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.