What Meshtastic is and how the mesh works
Meshtastic is open-source firmware for small LoRa radio boards. Each board, a node, connects to your phone over Bluetooth (or to a computer over USB or Wi-Fi), and the nodes pass text messages, positions and sensor readings to each other by radio. No internet connection, mobile network or SIM card is involved.
There is no central router. A node that hears a message for the first time can repeat it, so the message hops from node to node. Meshtastic calls this managed flooding: nodes that hear a packet more weakly, usually the farther ones, wait less before repeating it, so the message spreads outwards quickly, and a node that hears someone else repeat it first stays quiet.
Every packet carries a hop limit, 3 by default. A node that receives it with a hop limit above zero lowers it by one and rebroadcasts it; at zero, nobody repeats it. That stops messages from circling the mesh forever, and it’s why you can reach someone a few relays away but not across a whole region.
LoRa trades speed for range. On the default preset a 40-character message spends about 0.7 seconds on air, so Meshtastic is made for messages, positions and telemetry, not for photos or voice. Our LoRa calculator shows the airtime for any preset and message length.
What you need
A node is a microcontroller, a LoRa radio chip and an antenna, usually with a battery. You can buy one ready-made in a case or as a bare development board. You also need a USB data cable: a charge-only cable is the classic reason a board isn’t detected.
What to look for
- The right band for where you live. Boards are sold in 868 MHz versions for Europe and 915 MHz versions for the Americas (the US band is 902–928 MHz). The antenna is tuned for one band, so buy the version, antenna included, that matches your region.
- A recent radio chip. The Meshtastic documentation strongly recommends the Semtech SX126x (such as the SX1262) or LR11xx families over the older SX127x.
- nRF52 or ESP32. Boards with the nRF52840 use much less power: they’re the usual choice for handhelds and solar nodes, and you update them by copying a file onto a USB drive. ESP32 boards cost less and add Wi-Fi, but drain a battery faster.
- A decent antenna. The small antennas bundled with many boards come from “mixed bags”, as the docs put it, and may not be tuned for your frequency. A good antenna for your band helps both sending and receiving.
- Screen, GPS and battery are optional. A screen shows messages and the Bluetooth PIN; GPS lets the node share its position without your phone. If you want it portable, check how a battery connects (a lead, a cell holder, or built in) before you buy.
Boards to start with
| Board | Microcontroller | LoRa chip | Why pick it |
|---|---|---|---|
| Heltec LoRa32 V3 / V4 | ESP32-S3 | SX1262 | Cheap first node with a small OLED screen and Wi-Fi. The V4 adds a power amplifier: in Europe, read the power note. |
| LILYGO T-Beam Supreme | ESP32-S3 | SX1262 | GPS on board. |
| LILYGO T-Echo | nRF52840 | SX1262 | Handheld in a case: e-ink screen, GPS and battery. |
| RAK WisBlock RAK4631 | nRF52840 | SX1262 | Modular and frugal, suits solar nodes. Get the RAK4631, not the RAK4631-R: Meshtastic needs the Arduino bootloader. |
| Seeed SenseCAP T1000-E | nRF52840 | LR1110 | Card-size tracker with GPS, a 700 mAh battery and an IP65 case. |
| Seeed XIAO kit with Wio-SX1262 | ESP32-S3 or nRF52840 | SX1262 | Thumb-sized and cheap, for tinkering. |
All listed on the official Meshtastic hardware pages (checked October 2026). No prices: they change too often. Most boards come in more than one frequency version, so check before you buy.
Install the firmware
If your node came with Meshtastic installed, you can go straight to the app and update later. Otherwise:
ESP32 boards (Heltec, T-Beam, XIAO ESP32-S3)
- Connect the board to a computer with the USB data cable.
- Open the web flasher in Chrome or Edge: it needs one of them, because it talks to the board through the browser’s serial support.
- Choose your board and a stable firmware release, then follow the prompts.
- If the computer doesn’t see the board, install the USB serial driver for its chip: Silicon Labs CP210x, or WCH CH9102 (CH340/CH341). If an ESP32-S3 board won’t connect, the flasher’s 1200bps reset button puts it into download mode.
nRF52 boards (T-Echo, RAK4631, XIAO nRF52840)
- Connect the board over USB and double-press the reset button. It shows up as a USB drive with
CURRENT.UF2,INDEX.HTMandINFO_UF2.TXTon it. - Copy the
.uf2firmware file for your board onto that drive. The web flasher can download the right file and copy it for you. - When the copy finishes, the board reboots into Meshtastic. To leave the bootloader without flashing, press reset once.
The T1000-E has a single button and no reset button, so the double-press doesn’t apply. With the Meshtastic nRF52 bootloader 2.5 or later, connect the USB cable, then hold the button while the tracker powers on and keep holding it for 3 seconds: the drive appears a few seconds later. To leave without flashing, eject the drive. With the bootloader Seeed ships, the button won’t get you into this mode: the T1000-E page in the Meshtastic docs explains the alternatives.
Connect the app
You use your node through a client app:
- Android: the Meshtastic app, from Google Play or F-Droid.
- iPhone, iPad and Mac: the Meshtastic app from the App Store.
- Any computer: the web client. Its Bluetooth and USB connections work best in Chrome or Edge.
Over Bluetooth, the first connection asks for a PIN. A board with a screen shows a random six-digit PIN; a board without a screen uses the fixed PIN 123456. The docs strongly recommend changing that fixed PIN in the Bluetooth settings, since every screenless board starts with the same one.
First setup: the settings that matter
1. Region, before anything else
A new node’s region is UNSET, and as long as it stays that way the node shows a message on its screen and doesn’t transmit at all. In the LoRa settings, choose US in the United States (902–928 MHz) or EU_868 in the European Union (869.4–869.65 MHz). The region sets the frequencies, the maximum power and, in Europe, the duty-cycle limit the firmware enforces.
One US quirk on the 2.8 alpha: a node whose region is first set from its own screen starts on the Long Turbo preset (see the US rules for why), while the stable 2.7 firmware stays on Long Fast however you set it. Long Turbo and Long Fast nodes can’t hear each other, so check the preset after setting the region.
2. Your names
Pick a long name and a short name, shown in other people’s node lists and maps. The stable firmware stores up to 39 bytes for the long name (the 2.8 alpha, 24) and 4 bytes for the short one. Accented letters take two bytes and most emoji four, so a short name holds four plain letters or one emoji. Everyone in range can read them, so don’t use your full name or your address.
3. Modem preset: the one your area uses
A modem preset bundles the LoRa spreading factor, bandwidth and coding rate. Long Fast (written LongFast on the node’s screen) is the default and a good balance of range and speed. Two nodes on different presets don’t get a slower link: they can’t hear each other at all. Many busy meshes have moved to faster presets such as Medium Fast, so find out what’s used near you: ask a local group or run Local Mesh Discovery in the Android or Apple app, which listens on each preset in turn and ranks what it hears.
In the EU_868 region the Turbo presets don’t fit: their 500 kHz bandwidth is wider than the whole 869.4–869.65 MHz band. The stable firmware falls back to Long Fast if you pick one, and the 2.8 alpha no longer offers them there. Our LoRa calculator compares the presets by airtime and link budget.
4. Channels: public by default, private by choice
Out of the box your node is on the default primary channel, whose encryption key (AQ==) ships with every node. Anyone running Meshtastic can read it, so treat it as a public channel.
For a private group, add a secondary channel (slots 1 to 7) with a random key, which gives 256-bit encryption, and share it with your group as a QR code or link. Don’t rename or re-key the primary channel instead: your node’s periodic broadcasts go out on it (its node information every three hours and, if enabled, its position and telemetry), so a private primary hides you from the public mesh, and in the US band its name also picks the frequency slot, which can leave you alone on another frequency.
5. Role: stay a client
The default role, CLIENT, already relays other people’s messages. ROUTER is meant only for fixed nodes in truly strategic places (the docs’ example is a tower on a mountain peak rather than a tall building): neighbouring nodes start preferring a router for rebroadcasts, so a badly placed one makes the mesh worse for everyone. If you own several nodes, the docs suggest one CLIENT (or CLIENT_BASE for a roof node) and CLIENT_MUTE, which doesn’t relay, for the rest.
6. Hop limit: leave it at 3
The maximum is 7, but the docs are blunt: “Really, 3 is fine.” Every extra hop lets your packets be repeated by more nodes, using airtime that everyone shares. Raise it only if you know a destination can’t be reached otherwise.
7. Position and privacy
If your node has GPS, or the app shares your phone’s location, the node broadcasts its position. On the stable firmware the default primary channel sends it at 13 bits of precision, about 2.9 km, and you set the precision of each channel yourself, from exact to off; nothing stops you from choosing exact on the public channel, so don’t. The 2.8 alpha is stricter: new nodes don’t share their position on the default channel, and on a channel with a publicly known key (no key, the default key or any one-byte key) it never sends more than 15 bits, about 729 m. Lower the precision, or switch position sharing off, if you’d rather not put your home on everyone’s map.
Your first message: is anyone hearing you?
Open the node list. Every node you’ve heard appears with the time it was last heard and, for nodes heard directly, the signal of their last packet: RSSI, how strong it is, and SNR, how far it stands above the noise. LoRa can decode signals below the noise, so negative SNR values are normal: the Long Fast preset still decodes down to about −17.5 dB.
To test a link, send a direct message: the recipient acknowledges it, and only that acknowledgement confirms delivery. A channel message counts as delivered as soon as your node hears another node repeat it, which proves less.
Traceroute shows the path to a node hop by hop, with the SNR of each link (from firmware 2.5, the way back as well). It costs more airtime than a message and a node can start one every 30 seconds at most, so use it to diagnose, not to monitor.
Range: height beats power
LoRa range depends far more on what lies between the antennas than on transmit power.
- Get height. The radio horizon grows with the square root of antenna height, about 4.12 × √h km (h in metres) with standard refraction: roughly 5 km for an antenna held at 1.5 m and 14 km for one on a roof at 12 m. Two antennas add their horizons.
- Keep the path clear. Even with line of sight, obstacles near the straight line, in the Fresnel zone, absorb the signal. Hills, buildings and trees in between matter more than a few decibels of power.
- Antenna before power. A better antenna helps in both directions; extra transmit power helps only one, and in Europe you reach the legal limit quickly.
- Walls, not bodies. At these frequencies people absorb little and buildings a lot: a node on a windowsill or a roof does far better than one in a drawer.
Estimate your own link: our calculator, prefilled with a handheld at 1.5 m and a roof node at 12 m, 5 km apart, on Long Fast in the US band.Open the calculator
For the EU band, open it with the EU_868 settings instead.
Power and batteries
Battery life depends mostly on the board. The docs recommend nRF52 boards for handhelds and solar nodes because they use far less power than ESP32 boards, which suit nodes on mains power or handhelds that only need a day or two of runtime.
Power saving, in the power settings, turns off Bluetooth, serial, Wi-Fi and the screen. It’s meant for nodes on solar panels or small batteries; once it’s on, you reach the settings again with the user button, a reset or remote administration. On ESP32 boards the node then spends its idle time in light sleep: the processor is suspended, the LoRa radio keeps listening, and an incoming packet wakes it.
To size a battery or a solar panel for a fixed node, measure its average current with a USB power meter and use our tools: off-grid solar sizing for the panel and battery, the battery comparison to choose between LiFePO4, Li-ion and the rest, and the battery voltage chart to read the charge from the voltage.
Rules and etiquette
United States
The US region uses the 902–928 MHz band under FCC Part 15, which needs no licence. Part 15 requires transmitters to be certified before they’re sold (§ 15.201), so prefer boards and modules with an FCC ID.
The firmware lets the US region use up to 30 dBm (1 W), but that’s a ceiling, not a permission. § 15.247 allows 1 W, less any antenna gain above 6 dBi, to frequency-hopping systems with at least 50 channels and to digitally modulated systems whose 6 dB bandwidth is at least 500 kHz. Meshtastic stays on one channel, so it doesn’t hop. Long Fast, the default on the stable firmware, and the other presets of 250 kHz or less fit neither case at full power; the 500 kHz Turbo presets aim at the second, which is why the 2.8 alpha starts new US nodes set up from the screen on Long Turbo. It’s a compliance trade-off, not a bug: a wider preset gives up some sensitivity, and its nodes can’t hear Long Fast ones. Check what your device’s FCC certification covers, and use the preset your area uses. An SX1262 on its own tops out at 22 dBm (about 160 mW); boards with a power amplifier, such as the Heltec V4, go higher.
Licensed (ham) mode is only for licensed radio amateurs, on bands their licence covers; in the US, 902–928 MHz is also the 33 cm amateur band. It turns encryption off, makes the node transmit its call sign, lifts the firmware’s power cap and turns off the duty-cycle limit.
European Union
EU_868 transmits in 869.4–869.65 MHz, a band harmonised across the EU for short-range devices (band 54 of Decision 2006/771/EC, whose annex was last replaced by Implementing Decision (EU) 2025/105): at most 500 mW e.r.p. and, for devices that don’t use the spectrum-access techniques of the harmonised standard, such as listen before talk, at most 10% of the time on air. No individual licence is needed; Italy and France, for example, say so explicitly in their national rules.
The firmware enforces the duty cycle: it adds up your node’s own airtime over a rolling hour, holds back routine broadcasts such as telemetry and node information once that passes 5%, and stops transmitting at 10% until enough time has passed. It also caps the transmitter at 27 dBm (500 mW), but it doesn’t know your antenna, and e.r.p. counts the antenna gain over a half-wave dipole, 2.15 dBi. A plain SX1262 board tops out at 22 dBm, well under the limit with a small antenna. Boards with a power amplifier are different: the Heltec V4, at the default transmit power, puts out the full 27 dBm, which with a 2.15 dBi antenna is already exactly 500 mW e.r.p. On EU_868, lower the transmit power by the antenna gain minus 2.15 dB (3 dB for a 5.15 dBi antenna, for example); our calculator does the sum.
There’s an Override Duty Cycle Limit setting. Leave it off: with it on, your node can exceed the legal limit. Licensed (ham) mode switches it on and lifts the power cap, so never use it on EU_868: 869.4–869.65 MHz isn’t an amateur band, and you’d break both limits. Licensed amateurs can use it only on amateur bands their licence covers, such as 70 cm (EU_433 sits at 433–434 MHz) where national rules allow. The firmware applies the band’s rules, but staying within them, with your antenna and your settings, is your responsibility.
Etiquette
- Keep the hop limit at 3 and the role at CLIENT unless the local community asks otherwise.
- Leave telemetry and position broadcasts at their default intervals or longer: every packet uses airtime the whole mesh shares.
- Use the public channel for public chat and a secondary channel for your group’s traffic.
- If the local mesh uses another preset, join it rather than asking everyone to switch.
Frequently asked questions
Do I need a licence to use Meshtastic?
Not in the US or the EU, as long as you use the right region and certified hardware and stay within the power and duty-cycle limits. Licensed (ham) mode is only for licensed amateurs on amateur bands: never on EU_868, where it would lift the power cap and turn off the duty-cycle limit.
Does Meshtastic need the internet or a mobile network?
No. Nodes talk to each other directly by radio, and your phone talks to your node over Bluetooth. A bridge to the internet (MQTT) exists, but nothing needs it.
How far can two nodes reach?
It depends on antenna height and on what lies in between far more than on power. Our LoRa calculator estimates the link budget, the radio horizon and the Fresnel zone for your heights and distance.
Can I use an 868 MHz board in the US, or a 915 MHz board in Europe?
Buy the version for your region. Its antenna is tuned for that band, and the Meshtastic docs list the regions that apply in each country: US for the United States, EU_868 (or EU_433) for EU countries. A node set to another region also won’t hear the local mesh.
Are my messages private?
Messages on the default channel can be read by anyone with Meshtastic. Direct messages between nodes on firmware 2.5 or later are encrypted with public-key cryptography, and a secondary channel with your own random key can only be read by those who have the key. The packet header, with the sender and recipient node numbers, is never encrypted.
Why can’t I see any other nodes?
Check, in this order: that the antenna is on, that the region is right, that your preset matches the local one, and that you haven’t renamed the primary channel. If all is well, there may simply be nobody on the public settings within range: ask a local group what they use.
Should I set my node as a router?
Almost certainly not. CLIENT already relays messages. ROUTER is for fixed nodes in strategic, high places, usually agreed with the local community, because the nodes around it start relying on it.
How long does the battery last?
It depends on the board, the screen, GPS and how busy the mesh is; nRF52 boards last much longer than ESP32 boards on the same battery. For a fixed node, measure the average current and size the battery and panel with our off-grid solar tool.
Sources
- Meshtastic firmware releases (stable and alpha)
- Meshtastic blog: Let’s talk about 2.8
- Meshtastic docs: Getting Started
- Meshtastic docs: Initial Configuration
- Meshtastic docs: Joining your local mesh
- Meshtastic docs: Supported devices
- Meshtastic docs: LoRa antennas
- Meshtastic docs: Web Flasher
- Meshtastic docs: ESP32 serial drivers
- Meshtastic docs: Drag & Drop firmware updates (nRF52)
- Meshtastic docs: SenseCAP Card Tracker T1000-E
- Meshtastic docs: Bluetooth configuration
- Meshtastic docs: LoRa configuration
- Meshtastic docs: Channel configuration
- Meshtastic docs: Device configuration (roles)
- Meshtastic blog: Choosing the right device role
- Meshtastic docs: Power configuration
- Meshtastic docs: Traceroute module
- Meshtastic docs: Mesh broadcast algorithm
- Meshtastic docs: Encryption
- Meshtastic docs: Android app, signal meter
- Meshtastic docs: Apple app, getting started
- Meshtastic docs: Web client
- Meshtastic firmware 2.7.26: region table and power cap (RadioInterface.cpp)
- Meshtastic firmware 2.7.26: duty-cycle accounting (airtime.cpp)
- Meshtastic firmware 2.7.26: sending above the duty cycle (Router.cpp)
- Meshtastic firmware 2.7.26: SX126x power limit (SX126xInterface.cpp)
- Meshtastic firmware 2.7.26: default channel position precision (Channels.cpp)
- Meshtastic firmware 2.7.26: name lengths (mesh.pb.h)
- Meshtastic firmware 2.7.26: licensed (ham) mode (AdminModule.cpp)
- Meshtastic firmware 2.7.26: Heltec V4 power amplifier (variant.h)
- Meshtastic firmware 2.7.26: power-amplifier control (LoRaFEMInterface.cpp)
- Meshtastic firmware 2.8.2 (alpha): position precision on public channels (PositionModule.cpp)
- Meshtastic firmware 2.8.2 (alpha): long-name limit (meshUtils.h)
- FCC, 47 CFR § 15.247
- FCC, 47 CFR § 15.201
- Commission Implementing Decision (EU) 2025/105 replacing the annex of Decision 2006/771/EC (band 54)
- Italy: Codice delle comunicazioni elettroniche, art. 105
- France: Arcep decision 2021-1589 amending decision 2014-1263
- France: CPCE, article L. 33-3