Home/Get started
Flash your radio. Keep your hardware.
A phone and one board is the whole bill of materials
Same boards, same antennas, same enclosures. Or just a phone, if the people you’re messaging are within Bluetooth or WiFi range.
Step one
What you need
A phone
Android or iOS. The phone is the node: it holds the store, does the cryptography, and makes the decisions. With BLE and WiFi it participates fully on its own — carrying other people’s traffic and sending its own.
One supported LoRa board optional
The radio makes you reach further — kilometers instead of a room. It isn’t the price of entry. If you already own one, you almost certainly don’t need to buy anything.
Hardware
Supported boards
MeshDTN supports 95 boards, and publishes 202 firmware images for them. Every image on this list is served — nothing is named here that the web flasher cannot hand you. If you already own a LoRa mesh radio, it is almost certainly below.
Seeed Studio SenseCAP Solar Node P1-Pro
Solar, GPS, IPX6. The board a station is built from, and the one this project runs on a pole.
Seeed Studio Wio Tracker L1
Small, cheap, carries well, and the second board with a station build published for it.
Seeed Studio SenseCAP T1000-E
Pocket-sized, sealed, LR1110. Nothing to hold and nothing to break.
Heltec v3
Cheap, everywhere, and has a screen. The board to put on a bench while you learn what the mesh is doing.
| Board | Radio | MCU | Companion link | Station build |
|---|---|---|---|---|
| Ebyte EoRa-S3 | SX1262 | ESP32-S3 | Bluetooth, USB | — |
| Elecrow ThinkNode M1 | SX1262 | nRF52840 | Bluetooth, USB | — |
| Elecrow ThinkNode M2 | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi, USB, Serial | — |
| Elecrow ThinkNode M3 | LR1110 | nRF52840 | Bluetooth, USB | — |
| Elecrow ThinkNode M5 | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi, USB | — |
| Elecrow ThinkNode M6 | SX1262 | nRF52840 | Bluetooth, USB | — |
| Elecrow ThinkNode M7 | LR1110 | ESP32-S3 | Bluetooth, Wi-Fi, USB, Ethernet | — |
| Elecrow ThinkNode M9 | LR1110 | ESP32-S3 | Bluetooth, Wi-Fi, USB | — |
| GAT-IoT GAT562 30s | SX1262 | nRF52840 | Bluetooth, USB | — |
| GAT-IoT GAT562 Mesh Watch13 | SX1262 | nRF52840 | Bluetooth | — |
| GAT-IoT GAT562 Tracker | SX1262 | nRF52840 | Bluetooth, USB | — |
| Heltec CT62 | SX1262 | ESP32-C3 | Bluetooth, USB | — |
| Heltec Mesh Node T1 | SX1262 | nRF52840 | Bluetooth, USB | — |
| Heltec MeshPocket | SX1262 | nRF52840 | Bluetooth, USB | — |
| Heltec MeshSolar / MeshTower | SX1262 | nRF52840 | Bluetooth, USB | — |
| Heltec RC32 | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi, USB | — |
| Heltec RC32 (no display) | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi, USB | — |
| Heltec T096 | SX1262 | nRF52840 | Bluetooth, USB | — |
| Heltec T114 | SX1262 | nRF52840 | Bluetooth, USB | — |
| Heltec T114 (no display) | SX1262 | nRF52840 | Bluetooth, USB | — |
| Heltec Tower V2 | SX1262 | nRF52840 | Bluetooth, USB | — |
| Heltec v2 | SX1276 | ESP32 | Bluetooth, Wi-Fi, USB | — |
| Heltec v3 | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi, USB | — |
| Heltec v4 | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi, USB | — |
| Heltec v4 (TFT) | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi, USB | — |
| Heltec v4 R8 | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi, USB | — |
| Heltec v4 R8 (TFT) | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi, USB | — |
| Heltec Vision Master E213 | SX1262 | ESP32-S3 | Bluetooth, USB | — |
| Heltec Vision Master E290 | SX1262 | ESP32-S3 | Bluetooth, USB | — |
| Heltec Vision Master T190 | SX1262 | ESP32-S3 | Bluetooth, USB | — |
| Heltec Wireless Paper | SX1262 | ESP32-S3 | Bluetooth, USB | — |
| Heltec Wireless Tracker | SX1262 | ESP32-S3 | Bluetooth, USB | — |
| Heltec Wireless Tracker v2 | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi, USB | — |
| Heltec WSL3 | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi, USB | — |
| Ikoka Handheld (E22 30 dBm, 096) | SX1262 | nRF52840 | Bluetooth, USB | — |
| Ikoka Handheld (E22 30 dBm, 096, rotated) | SX1262 | nRF52840 | Bluetooth, USB | — |
| Ikoka Nano (22 dBm) | SX1262 | nRF52840 | Bluetooth, USB | — |
| Ikoka Nano (30 dBm) | SX1262 | nRF52840 | Bluetooth, USB | — |
| Ikoka Nano (33 dBm) | SX1262 | nRF52840 | Bluetooth, USB | — |
| Ikoka Stick (22 dBm) | SX1262 | nRF52840 | Bluetooth, USB | — |
| Ikoka Stick (30 dBm) | SX1262 | nRF52840 | Bluetooth, USB | — |
| Ikoka Stick (33 dBm) | SX1262 | nRF52840 | Bluetooth, USB | — |
| Keepteen LT1 | SX1262 | nRF52840 | Bluetooth, USB | — |
| LilyGo LoRa32 V2.1_1.6 | SX1276 | ESP32 | Bluetooth, Wi-Fi, USB | — |
| LilyGo T-Beam (SX1262) | SX1262 | ESP32 | Bluetooth | — |
| LilyGo T-Beam 1.2 (SX1276) | SX1276 | ESP32 | Bluetooth | — |
| LilyGo T-Beam 1W | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi, USB | — |
| LilyGo T-Beam Supreme (SX1262) | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi | — |
| LilyGo T-Deck | SX1262 | ESP32-S3 | Bluetooth, USB | — |
| LilyGo T-Echo | SX1262 | nRF52840 | Bluetooth, USB | — |
| LilyGo T-Echo Card | SX1262 | nRF52840 | Bluetooth, USB | — |
| LilyGo T-Echo Lite | SX1262 | nRF52840 | Bluetooth | — |
| LilyGo T-Echo Lite (no shell) | SX1262 | nRF52840 | Bluetooth, USB | — |
| LilyGo T-ETH Elite (SX1262) | SX1262 | ESP32-S3 | Bluetooth, USB | — |
| LilyGo T-Impulse Plus | SX1262 | nRF52840 | Bluetooth | — |
| LilyGo T-LoRa C6 | SX1262 | ESP32-C6 | Bluetooth | — |
| LilyGo T3 S3 (SX126x) | SX1262 | ESP32-S3 | Bluetooth, USB | — |
| LilyGo T3 S3 (SX127x) | SX1276 | ESP32-S3 | Bluetooth, USB | — |
| M5Stack Unit C6L | SX1262 | ESP32-C6 | Bluetooth, USB | — |
| Meshadventurer (SX1262) | SX1262 | ESP32 | Bluetooth, USB | — |
| Meshadventurer (SX1268) | SX1268 | ESP32 | Bluetooth, USB | — |
| Meshimi | SX1262 | ESP32-C6 | Bluetooth | — |
| Meshnology W12 | LR2021 | ESP32-S3 | Bluetooth, Wi-Fi, USB | — |
| Meshtiny | SX1262 | nRF52840 | Bluetooth, USB | — |
| Minewsemi ME25LS01 | LR1110 | nRF52840 | Bluetooth, USB | — |
| MuziWorks R1 Neo | SX1262 | nRF52840 | Bluetooth, USB | — |
| Nibble Screen Connect | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi, USB | — |
| Nibble Zero Connect | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi, USB | — |
| ProMicro nRF52840 | SX1262 | nRF52840 | Bluetooth, USB | — |
| RAK 11310 | SX1262 | RP2040 | USB | — |
| RAK 3x72 | STM32WLx (on-chip) | STM32WLE5 | USB | — |
| RAK WisBlock / WisMesh (RAK 4631) | SX1262 | nRF52840 | Bluetooth, USB, Ethernet | — |
| RAK WisBlock 3112 | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi, USB | — |
| RAK WisMesh 1W Booster (3401 + 13302) | SX1262 | nRF52840 | Bluetooth, USB | — |
| RAK WisMesh Tag | SX1262 | nRF52840 | Bluetooth, USB | — |
| RPI Pico 2040 + WaveShare SX1262 | SX1262 | RP2040 | USB | — |
| Seeed LoRa-E5 Dev Board | STM32WLx (on-chip) | STM32WLE5 | USB | — |
| Seeed LoRa-E5 mini | STM32WLx (on-chip) | STM32WLE5 | USB | — |
| Seeed SenseCAP MeshTracker X1 | LR2021 | nRF52840 | Bluetooth, USB | — |
| Seeed Studio SenseCAP Solar Node P1-Pro | SX1262 | nRF52840 | Bluetooth, USB | Yes |
| Seeed Studio SenseCAP T1000-E | LR1110 | nRF52840 | Bluetooth, USB | — |
| Seeed Studio Wio Tracker L1 | SX1262 | nRF52840 | Bluetooth, USB | Yes |
| Seeed Studio Wio Tracker L1 EINK | SX1262 | nRF52840 | Bluetooth | — |
| Seeed Studio Xiao C3 | SX1262 | ESP32-C3 | Bluetooth, Wi-Fi, USB | — |
| Seeed Studio Xiao C6 | SX1262 | ESP32-C6 | Bluetooth | — |
| Seeed Studio Xiao nRF52 WIO | SX1262 | nRF52840 | Bluetooth, USB | — |
| Seeed Studio Xiao RP2040 | SX1262 | RP2040 | USB | — |
| Seeed Studio Xiao S3 | SX1262 | ESP32-S3 | Bluetooth, USB | — |
| Seeed Studio Xiao S3 WIO | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi, USB, Serial | — |
| Station G3 ESP32 | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi, USB | — |
| Tiny Relay | STM32WLx (on-chip) | STM32WLE5 | USB | — |
| UnitEng Nano G2 Ultra | SX1262 | nRF52840 | Bluetooth, USB | — |
| UnitEng Station G2 | SX1262 | ESP32-S3 | Bluetooth, Wi-Fi, USB | — |
| Waveshare RP2040 LoRa | SX1262 | RP2040 | USB | — |
| WHY2025 badge | SX1262 | ESP32-C6 | Bluetooth | — |
Scroll the table sideways to see every column.
Board names match the flasher exactly, so whatever you find here you can pick there. Companion link is how the radio talks to your phone or computer — not how it talks to the mesh, which is always LoRa. Station build marks the boards that have store-and-forward firmware published; any board on the list can carry.
Ten minutes
From download to first carried message
Install the app
Android and iOS builds, plus desktop targets, are produced from the meshdtn-app repository. Build instructions and release artifacts live with the source.
Flash the firmware
Build the meshdtn_companion environment for your board from the meshdtn-firmware repository, or take the published image straight from the web flasher. Your antennas, enclosures and mounts are unchanged.
Pair phone and radio
The companion link is BLE between a phone and its own radio. The app finds the board, and from then on the radio is a stateless adapter — it advertises capability, passes frames, and transmits. Nothing about you is stored on it.
Add a contact
Scan their QR code. That’s a Tier 2 contact — verified out of band — and it persists like a real messenger, not like a radio scanner. You cannot message a stranger, and the app tells you so at the moment you try.
Write, and let it go
In Auto, the default: if they’re reachable, it goes now; if they’re not, your phone keeps it and hands a copy to the next node that passes. A contact or a single message can be set to MeshCore or MeshDTN instead. Either way you find out what happened to it.
Where the builds live
MeshDTN is three repositories: meshdtn for the specifications, meshdtn-firmware for the radio, and meshdtn-app for the phone. Current build and flashing instructions ship with each repository rather than on this page, so they can’t drift out of date here.
Keeping a radio current
Updates come from your phone, over Bluetooth
Any MeshDTN radio, not only a Station. Open Update a radio over Bluetooth in the app’s settings. It finds the radios near you, says what each one is running and what is published for that exact board, and waits to be told. No cable, and nothing to do at the radio.
It only offers an update when there is a newer one for that board, and it tells you what the radio is running after the update by asking the radio — not by repeating what it meant to install.
If an update is interrupted
A radio that loses the connection part-way through stops behaving like a radio and waits to be finished. It is not damaged. It appears at the top of that same screen, by name, with Finish the update beside it — over the air, still there after you close and reopen the app.
It has to be within a few meters to be reached. If it stays out of sight, press its reset button twice, plug it into a computer, and install the firmware over the cable.
One board needs a one-time job first. Over-the-air updates need the OTAFIX bootloader; the app checks before it offers anything and tells you if yours needs it. What that is and how to install it.
Build a station
Put one on a pole and walk away
A station is a radio with a persistent store, no phone, no user, and no key to anything it carries. It holds sealed messages it cannot read and hands them to whoever comes along next — which is how two people who are never in the same place on the same day exchange messages at all.
Flash the station role onto a SenseCAP Solar Node P1-Pro, mount it, and manage it from your phone over Bluetooth: records held, uptime, clock state, radio status, and over-the-air firmware updates. No laptop up a ladder in the rain.
Reference station BOM
- Board
- Seeed Studio SenseCAP Solar Node P1-Pro
- Radio
- Wio-SX1262
- Power
- Solar panel, 4×18650 cells
- Enclosure
- IPX6, onboard GPS
- Role
- Carrier, station, or both — configuration, not firmware
- Management
- Bluetooth on demand, off by default
Before you transmit
Operating a radio lawfully is your responsibility
MeshDTN runs on license-free bands. The radio’s frequency, spreading factor, bandwidth and coding rate are fixed in the firmware build and cannot be changed from the app or the command line — but nothing in the software knows where you are, so choosing a build that is legal where you are is yours to get right.
That is not legal advice and does not make any configuration lawful where you are. NOTICE.md sets out the relevant regulatory facts with citations and draws no conclusions. Read it before you transmit.
Every phone is a mailbag.
Questions first? The FAQ answers the ones people actually ask.