Skip to content

v0.4.0-alpha.1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Oct 22:28
· 55 commits to main since this release
3daf908

The first alpha of 0.4. A board can be set to five more regions, so it is lawful in Chile,
Malaysia, Thailand, Russia and Kazakhstan, as well as the United States, Europe, Australia, New
Zealand and the countries whose rules match theirs. Routing announces are signed. A board shows
who is about through presence cards, and a group can be joined from a code. There are images
for thirteen more boards, none of which has run on one yet.

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.

Routes do not form between this release and any before it. Update every board in a network
together: see Updating.

What changed

  • Nine regions. A board can now be set to US915, EU868, AU915, NZ915, CL915,
    MY919, TH920, RU868 or KZ863, the profiles of the specification's
    draft/phy.md, which also
    says which countries each one serves. Every release image is built for each of the nine.
    • TH920 radiates at least 17 dBm. Thailand allows 10% of an hour only from 50 mW up. A
      board set to TH920 from a client raises its power to the least that reaches 17 dBm if it
      was lower. Power control goes no lower than that, and its images are built at +14 dBm.
    • A new region moves the power into its own limits, up or down, since one region's
      limits need not overlap another's: KZ863 allows at most 13 dBm radiated.
  • Signed announces. Every routing announce ends with an Ed25519 signature by the node's
    identity, and a router takes nothing from one it cannot check, so a node can no longer
    announce routes as another. Announce numbers are kept through a restart.
  • A leaf with no relay up sends by its nearest relay, as the routing draft's default route
    has it, instead of waiting for a route.
  • More of everything. A board keeps routes to 1024 destinations and room for 128 neighbours; a
    classic ESP32 takes its table from the heap, and keeps 512, 256 or 128 if that is all the heap
    leaves room for. On the ESP32-S3 and nRF52840, it keeps 16 sessions, 32 contacts, 8 groups and 64
    cards: a session is saved in 253 bytes, not 844. A session saved by an earlier release is saved
    again the new way at start, so an update keeps it.
  • Presence cards (companion protocol version 6). A board can send a card with a name, and
    hand on the cards it hears, two hops at most, so a client can show who is about. Cards are off
    until a client turns them on.
  • Join codes (companion protocol version 7). A client can show a group's code, and join a
    group from one, without an invitation over a session. The code is the group's secret: whoever
    holds it reads the group.
  • Thirteen more boards: the Heltec Wireless Stick Lite V3, Wireless Tracker, Vision Master
    E290 and E213, Wireless Paper, WiFi LoRa 32 V2 and V2.1; the LilyGo T-Beam (V1.0 to V1.2), T3
    V1.6.1 and T3-S3; the RAKwireless RAK4631 and the Seeed Wio Tracker L1. The classic ESP32 and
    the SX1276 are new to the firmware with them. Nobody has run any of these on a board.
  • Bluetooth advertises as Tern and a random tag, so two nodes can be told apart.

First contact, sessions, messages to one board, group messages and positions are the same on
the air as in 0.3.0-alpha.1.

What was tested, and what was not

CI built every image of this release, for every board and region, and ran the suite on a
computer: the specification's vectors, the companion protocol, and a mesh in the simulator.

This release has not been run on a board. In particular, nothing here has been tried on
hardware: an update from 0.3.0-alpha.1 over the link, the five new regions on the air, TH920's
power floor, signed announces between two boards, presence cards, join codes, and any of the
thirteen new boards. If you have a board, what it does when it starts is the report we most
want, and the checklist is in docs/boards.md.

Updating

A Heltec V3 on 0.2.0-alpha.1 or later takes this release over the link, and keeps its address,
sessions, contacts, groups, messages, settings and paired phones:

tools/companion.py --port <port> update tern-heltec-v3-<region>-0.4.0-alpha.1-app.bin

A board that has had this release does not take routes from one that has not, since it cannot
check their announces. Update every board in a network, and routes form again.

For a new node, or to start a board afresh with a new address, write the full image at 0x0:
it replaces whatever is on the board.

tern-<board>-us915-0.4.0-alpha.1.bin United States, Canada, Mexico, Brazil, Argentina, Peru
tern-<board>-eu868-0.4.0-alpha.1.bin Europe, UK, Ukraine, South Africa: 10% of any hour
tern-<board>-au915-0.4.0-alpha.1.bin Australia
tern-<board>-nz915-0.4.0-alpha.1.bin New Zealand
tern-<board>-cl915-0.4.0-alpha.1.bin Chile
tern-<board>-my919-0.4.0-alpha.1.bin Malaysia
tern-<board>-th920-0.4.0-alpha.1.bin Thailand: 17 dBm radiated or more, 10% of any hour
tern-<board>-ru868-0.4.0-alpha.1.bin Russia: at most 10% of any hour
tern-<board>-kz863-0.4.0-alpha.1.bin Kazakhstan: not within airports

<board> is the board's name in docs/boards.md, such as heltec-v3. An
nRF52840 board takes tern-<board>-<region>-0.4.0-alpha.1.uf2: press RST twice, and copy the
file onto the drive that appears (ports/nrf52). Never
power a board with nothing on the antenna connector.
SHA256SUMS has the SHA-256 of each
image.

What to know

  • An update is not signed. Anyone who has paired with a board can give it firmware, as they
    can change its region.
  • Saved messages and keys are not encrypted, a group's secret among them. Anyone holding
    the board can read them.
  • A join code is a group's secret. Share it as you would the group itself.
  • A card is public. Its name goes to every board within two hops, unsealed.
  • The rules are yours to keep. The regions follow each country's rules as written, but
    nothing here is certified, and whoever operates a radio answers for it.

What is still not in it

  • No message to everyone. A group is those who were invited or given its code; there is no
    public channel.
  • Boards start at 2 dBm, a bench setting that reaches across a building, not a town, until
    you raise it. A V4 starts at 4 dBm, and TH920 images at 14 dBm.
  • No region yet for India, Japan, Korea, Singapore, Vietnam, Indonesia or Hong Kong, whose
    rules need features the specification does not have yet.