ChatNode can send messages by radio. A small LoRa board beside your computer or phone talks to other boards kilometres away, with no internet, no mobile network and no company in between. Boards pass messages on for each other, so a network grows with every person who joins it.
This page explains how it works, what you need, and what the ChatNode firmware on the board does.
01Messaging Without Internet
The internet is easy to switch off: a power cut, a damaged cable, a provider told to stop. People who need to talk most are often the ones who lose it first, and some can't get an internet connection at all.
LoRa is a long-range, low-power radio. It sends slowly, but far: a few kilometres between ordinary boards, more from a rooftop or a high window. ChatNode uses it as a second way to deliver your messages:
No internet needed. Board to board, by radio, on a licence-free band.
Further when boards relay. Every board passes other people's messages on, so the network reaches as far as its boards do.
End-to-end encrypted. The same encryption as ChatNode's internet messages. Boards carry messages they cannot read.
Works with what you already have. Your contacts, your identity and your conversations are the same ones you use online. A conversation simply goes by radio when the internet can't carry it.
02What You Need
A LilyGO T3 V1.6.1 board (868 MHz), with its antenna screwed on before it is powered. It is one of the cheapest LoRa boards and has a microSD slot. More boards will follow.
A microSD card in the board. Without one the board still sends, receives and relays, but it can't hold messages for people who are away.
ChatNode on a computer (Windows, macOS, Linux) or an Android phone. All of them connect to the board by USB, Bluetooth or Wi-Fi.
The board needs ChatNode for your own messages: it holds no keys, so it can't write or read anything on its own. On its own it keeps relaying for everyone else, and holds messages for others on its card — useful on a rooftop or in a window, powered and left alone.
03Getting Started
1
Get a board and a microSD card
A LilyGO T3 V1.6.1 with an 868 MHz antenna, and a microSD card in its slot. The card is what lets the board hold messages for people who are away.
Any card works; ChatNode can format it for you.
2
Plug it in once by USB
Open Settings → LoRa Radio and choose Connect a board. ChatNode finds the board on the cable and puts its own firmware on it — the firmware travels inside the app, so there is nothing else to download.
Use a data cable: many USB cables only charge.
3
Connect the way that suits you
After that, connect by USB, Bluetooth or Wi-Fi, from a computer or an Android phone. The first time over Bluetooth or Wi-Fi, the board shows a 6-digit code on its screen and you type it into ChatNode.
No system pairing dialogs: ChatNode pairs with the board itself.
4
Message by radio
Contacts in radio reach show in the LoRa Network page with a Message button. In Messages, switch a conversation to LoRa and send as usual — the board carries it, no internet involved.
The board keeps relaying for others even when ChatNode is closed.
Connecting over Wi-Fi
While the board is on a cable or Bluetooth, choose a Wi-Fi network for it in Settings → LoRa Radio and type the password. From then on, any ChatNode on the same network can find the board and connect to it — useful for a board in a window or on a roof while your computer sits elsewhere. ChatNode looks for the board afresh every time, so it doesn't matter if its address on the network changes.
A connected board shows as a button in the app's header, with a small badge for how it is linked.
04How Messages Travel
When you send a message by radio, ChatNode encrypts it for your contact and hands it to your board, which sends it as a single short radio packet.
Packets name no one
A radio packet carries no sender and no recipient — only a random number, a hop count and the encrypted message. Every ChatNode that hears it tries its own contacts' keys on it; the one whose key fits knows it was meant for it. Everyone else learns nothing about who is talking to whom.
Boards relay for each other
A board that hears a packet passes it on, up to a hop limit. ChatNode picks that limit for each message from where your contact was last heard: one hop further than they were, so a message goes as far as it needs and no further. Each board waits a moment before relaying; if it hears another board relay the same packet first, it stays quiet, so a packet crosses an area once rather than echoing around it. A message to someone your board hears directly isn't relayed at all — that would only use up airtime.
"Delivered" means delivered
Your contact's ChatNode answers every message with an encrypted "delivered". Until it comes, ChatNode tries again a few times. When it comes, the message shows as delivered — and you know it really arrived, not just that it was sent.
05Messages for Someone Who Is Away
People aren't always in reach. Their phone is off, they are on the other side of town, or their ChatNode is closed. A message for them shouldn't simply be lost.
When a message gets no "delivered", ChatNode leaves it with the network:
Every board passes it on once. It spreads from board to board across the whole area — not just a few hops from where it was sent, because your contact might turn up anywhere.
Boards with a microSD card keep it. They become mailboxes for everyone, holding messages they can't read.
Your contact collects it wherever they are. When their ChatNode connects, it asks the boards around it for anything waiting, and whichever board has it sends it — once.
Then every copy is dropped. Your contact's ChatNode announces what it collected, the announcement spreads the same way, and every mailbox deletes its copy. Your message then shows as delivered, even if your own ChatNode was closed when it happened.
Spreading is careful with airtime: a board stays quiet if it already heard enough neighbours pass the message on, so a dense area isn't flooded with copies. We chose these numbers with a simulation of whole cities of boards before building it.
Mailboxes can't read what they hold. A message is still end-to-end encrypted over LoRa: your ChatNode encrypts it for your contact before it ever reaches your board, and it stays that way on every board it passes and every card that keeps it.
Opening it takes your contact's private key, and that key exists only in their ChatNode app — never on a board, never on a card. A mailbox holds a sealed message it has no way to unlock, and so does anyone who takes the board or copies the card.
Only text messages can be left for someone who is away. Pictures, files and voice messages take many radio packets each — spreading them across a city would use the airtime everyone shares — so they go only while both people are in reach. ChatNode shows this before you send.
City-wide mailboxes are new and in field testing on the first networks.
06What You Can Send
Text — a short message (up to 171 characters) fits one radio packet. Longer messages, up to 1,000 characters, go in pieces.
Pictures — shrunk to fit the radio, up to 4 KB.
Files — small ones, up to 8 KB.
Voice messages — up to 15 seconds, compressed to about 6 kilobits a second so they still sound like the person.
A message in pieces is put back together on the other side; any piece that went missing is asked for again. Everything except short text needs your contact in radio reach (see above).
07Who Is Around
The LoRa Network page lists everyone in radio reach: their .chat name or Peer ID, how strong their signal is, and how many boards it passed through. Anyone there can be messaged straight away — you don't need to have met online first.
To make that work, your ChatNode announces itself by radio now and then, signed so nobody can pretend to be you. Your board keeps a short heartbeat going while ChatNode is open, and says goodbye for you when it closes, so others see quickly whether you are around.
Being visible is a choice. Your presence announcements are open: anyone in reach with a board can see that your identity is nearby. If you'd rather not be seen, switch off "Visible to others" on the LoRa Network page — you can still send and receive, but nothing announces you.
08Privacy and Security
End-to-end encryption, over LoRa too. Every radio message is encrypted on your device for one contact (XChaCha20-Poly1305, with keys from the same X25519 identity keys as ChatNode's internet messages), and only that contact's ChatNode app can decrypt it: it takes their private key, which never leaves their device. Unencrypted messages are refused.
Forward secrecy. Keys move forward as you talk and used keys are deleted, so recorded radio traffic can't be opened later, even with a seized device.
Boards and mailboxes hold no keys. No board can read your messages or anyone else's — not the ones it relays, and not the ones it keeps on its card for someone who is away. A lost or stolen board, or a copied card, reveals nothing.
Packets name no sender or recipient, as above.
Your link to the board is encrypted too. Over Bluetooth and Wi-Fi only a ChatNode paired with the board — by the code on its screen, or over a USB cable — can use it, read it or change it. Someone nearby who can't see the screen has three guesses in a million.
The screen shows status only: how many people are in reach, how many messages were relayed, how many are unread. Never message text, names or Peer IDs.
What a listener can still tell
Radio is radio: anyone with a receiver can see that packets are being sent, roughly where from, and when. They can see presence announcements (unless you switch them off), and that a message is being left for someone who is away — but not who sent it, who it is for, or what it says.
09The ChatNode Firmware
The board runs our own firmware, written from scratch for ChatNode — not a fork of an existing mesh project. It treats the board as a radio and a relay, and leaves everything personal to ChatNode on your device.
Radio and relaying
869.525 MHz, in the European licence-free band, with three speeds to choose from: Long range (the default), Balanced (about three times faster, half the range) and Fast (about ten times faster, a third of the range). Every board in a network uses the same speed.
Every board relays for everyone, with a duplicate check, a hop limit, and a short random wait that lets it skip a packet another board already passed on.
Fair use of the air: each board listens before it talks, and keeps to the band's 10% of each hour, relays included.
17 dBm transmit power (50 mW): the most the board's radio chip is made to send around the clock, so relays can run day and night.
Radio settings on trial: changing a setting every board must share runs on trial for 5 minutes and switches back by itself unless you keep it, so a board can't lose its network by accident.
Mailbox on the microSD card
Keeps messages left for people who are away, and passes them on across the network once.
Hands them over when their recipient asks, and deletes them when they have been collected.
Keeps messages for its own ChatNode while that is closed, so they are there when it reconnects.
Holds messages you sent until the recipient comes into reach of your own board, and sends them then — even with ChatNode closed.
Formats the card from ChatNode if needed (FAT32).
Connections to ChatNode
USB, Bluetooth and Wi-Fi, from computers and Android alike, all carrying the same protocol.
Pairing in ChatNode, not in your system settings: a 6-digit code on the board's screen, typed into ChatNode once. One pairing covers Bluetooth and Wi-Fi; a USB connection pairs without a code. Up to four ChatNodes can be paired with one board.
Wi-Fi: the board joins one network you choose, answers ChatNodes looking for it on that network, and accepts only paired ones. With no network set, its Wi-Fi stays off.
Updates
From ChatNode: each ChatNode release carries the newest board firmware, and updates the board from Settings → LoRa Radio, over USB, Bluetooth or Wi-Fi.
Signed and checked twice: by ChatNode, and again by the board, against the release key built into it. Anything unsigned or altered is refused.
Automatic rollback: new firmware goes into a spare slot. If it doesn't start properly, the board goes back to the old one by itself.
Over the internet, if you want: a board on Wi-Fi with internet can check for new firmware about once a day and install it by itself. It is off by default; when on, installs are spread over several days, so a bad release would reach only a few boards before it could be withdrawn, and the board never installs an older version than it runs.
Built to last
Forward compatible: a board passes on packets from newer firmware it doesn't understand, so mixed versions never split a network.
Tunable from ChatNode: how messages spread is set by the sending ChatNode, so the network can be tuned without updating every board.
Few settings, on purpose: the radio speed, the screen (on, off, or off after a while) and the send light. Everything else — power, relaying, airtime, Bluetooth — follows the network's rules, so every board behaves the same. Settings survive restarts and updates.
10Range, Speed and Limits
Range depends on height more than anything. Indoors at street level, expect a few kilometres at most; from a rooftop with a good antenna, much more. Boards placed high are what tie neighbourhoods together.
It is slow by design. At the default speed a full packet takes about two seconds on air. That is what buys the range. Short text arrives in seconds; a voice message takes a couple of minutes.
Airtime is shared. Everyone in an area uses the same channel, which is why pictures and voice only go while both people are in reach, and why each board keeps to its airtime limit.
868 MHz boards. The firmware is built for the European band today.
LoRa in ChatNode is new, and the first networks are being set up now. If you want to help — by placing a board somewhere high, or by trying it in your area — get in touch.