Meshtastic – how and what for?
I’ve heard this name from some time, I was asked to write few words about it. So, first, Meshtastic – what is it? On website You can find it’s tagline: An open source, off-grid, decentralized, mesh network built to run on affordable, low-power devices.
But what does it mean? Meshtastic is a network for passing messages. As it is decentralized and off-grid means that it relays on all participating nodes for passing messages. No base stations, no gateways, no operator, no telco company. All transmission is encrypted and organized into channels. Everyone who has URL for channel can send and receive messages to/from that channel. And of course – you have to be in range.
With range we have two concepts related. First is radio transmission range. This is similar like in LoRaWAN – we use the same radios/devices so we can get similar results. But this is only range between two devices, and as I wrote – each client device (in default config) passes all heard messages, so range is extended, but not forever.
To avoid exponential growth of messages number each message has hop count (default is 3 and it is strongly not recommend to increase that number) and each node before pass message lowers that number. If node sees message with hop number 0 – does not send it further.
So, in other words, to get message from other node you don’t have to be in direct range, but not further than 3 hops from source.
What can it be used for?
Since it is decentralized and off-grid this is perfect tool for establishing communication in case of lack of communication infrastructure. Think about camping/games in wilderness, communicate with friends on some events, etc. Also – it seems to be great tool for all voluntary teams involved into assistance after natural disasters.
OK, so how to use it?
For text messaging each user needs two things. One you probably already have – smartphone with bluetooth. Second piece is LoRa capable device. Meshatstic provides some precompiled binaries for many devices and Heltec WiFi LoRa 32 v3 is supported. Second board You can use is Heltec Wireless Stick Lite v3 but the former one has two advantages. First it has OLED display builtin, so You can see recent activities in network and have matching plastic case for it making using much easier.
Now, with Heltec board in hand you need to upload firmware. There are two ways, first seems to be easier and it is Meshtastic web firmware flasher. You need browser with WebSerial API support (currently Google Chrome or Edge). Select Heltec v3 as device, latest stable firmware and click Flash.
![](https://starter-kit.nettigo.eu/wp-content/uploads/2024/12/Screenshot-from-2024-12-07-12-10-35-1024x406.png)
Popup will open:
![](https://starter-kit.nettigo.eu/wp-content/uploads/2024/12/Screenshot-from-2024-12-07-12-10-48.png)
Before you connect board to computer – have you remembered to attach antenna to board? Do not power on it without antenna connected.
When connecting to computer keep PRG button on Heltec pressed. You can release it once board is connected. Click Update and browser will open new window with list of available serial ports. Select the correct one and click Confirm. Upload process should start. If output stops on Connecting........
wait 15-20 seconds and start process over if no further messages (should be series of messages with upload progress).
In case you wont be able to upload firmware there is second way – use command line tool called esptool
to upload firmware. I won’t describe how to install and use esptool in detail, you can find easily guides on this topic I will give you two infos. First – example of command I have used on my Ubuntu machine:
esptool.py --port /dev/ttyUSB1 -b 921600 write_flash 0 firmware-heltec-v3-2.5.14.f2ee0df.bin
Second info is how to find correct firmware. Go to Meshtastic downloads page and in Firmware section click on Download stable. You will be redirected to GitHub release with last stable fw. In Assets section find correct package based on processor type. Both Heltec modules use ESP32-S3 processor so download firmware-esp32s3-VERSION.zip
package.
![](https://starter-kit.nettigo.eu/wp-content/uploads/2024/12/Screenshot-from-2024-12-07-12-23-06-1024x641.png)
Unzip it and find correct image. Search for firmware-heltec-v3
bin file – this is your file to upload to board.
Meshtastic app
Now, install Meshtastic app in your smartphone. I will use here some screenshots from Android version. Run app and power on Heltec device. Click on last tab and click plus sign to pair new device. New popup will show and there should be your Heltec listed. If you have more of them – on OLED display you can find its code. Pair device with phone using pin shown on OLED. Name Your device and select correct region. For our Heltec in Europe use EU_868
.
Go to channel configuration. This QR code is generated for each channel (I have deleted this channel so using it you will not be able to send me a message :) )
![](https://starter-kit.nettigo.eu/wp-content/uploads/2024/12/andr1-526x1024.jpg)
![](https://starter-kit.nettigo.eu/wp-content/uploads/2024/12/andr2-529x1024.jpg)
![](https://starter-kit.nettigo.eu/wp-content/uploads/2024/12/andr3-5-542x1024.jpg)
![](https://starter-kit.nettigo.eu/wp-content/uploads/2024/12/andr3-528x1024.jpg)
![](https://starter-kit.nettigo.eu/wp-content/uploads/2024/12/ard5-534x1024.jpg)
![](https://starter-kit.nettigo.eu/wp-content/uploads/2024/12/andr4-530x1024.jpg)
Generally – I don’t have much experience with Meshtastic yet, there are a lot nuances when configuring channels. It can lead to problems with receiving messages – please search for help in Meshtastic documentation
If You click on Edit you can define channel details – it’s name and if uplink/downlik is allowed. Your node can have access to internet – if you enable uplink/downlink then messages from mesh can be forwarded to internet (uplink) or vice versa (downlink). You can also select if update on channel should send your position. You can provide precision of your location – from disabling sending position at all to sending most accurate available data. PSK field is key used to cipher messages. You can generate new one by click in round arrow icon. If You leave empty field (AQ==
) then messages wont be encrypted (?) and you can consider it as ‘public‘ channel (anyone can join to such channel).
Every change in channel config require all devices to scan its QR code to get access to it. Below QR code (you have to scroll page, it is not on screenshot) there is button called Scan. Using it you can load config of channels to second app.
Channel options also include speed/range from Short Range/Turbo
to Long Range/Slow
by default channels have Long Range/Fast
selected and I suggest to keep that unless you know what are doing.
Your device can several channels assigned, but always first one (with zero index) is most important – will be used to determine some LoRa parameters to send packets, so please be sure that all your devices have the same set as first one.
OK, when You are connected to device if You click three dots in upper right corner you can configure device (Radio configuration). Read more about these settings in Meshtastic documentation.
Quick recap
To get communication between two (or more) persons you need Heltec device for each person. Then flash firmware on each device.
Pair and configure (channel params!) first device with first phone. Minimum is to make sure that channel has PSK set (not just default AQ==
).
Pair second phone with another device. Using Scan button on channel page load channel configuration from first pair. Now – test sending messages, should work! If you need more devices add more and scan channels config from previous one.
Range?
In last few days I did some tests. I was using two Heltec with included spring antenna, in plastic cases. First device was placed on skylight window over my desk (in the attic) and second one was run from powerbank and I carried it in the pocket of my coat or have it lying next to me on passenger seat in car (no external antenna). Some results:
![](https://starter-kit.nettigo.eu/wp-content/uploads/2024/12/window-1024x576.jpg)
![](https://starter-kit.nettigo.eu/wp-content/uploads/2024/12/range-1024x480.jpg)
So, at least 700-800 meters of range. Not bad. I will test it more, I think that results are better than 800 m in this setup. I was using ‘Share your location from phone‘ and probably not always application was updating my location in realtime (some of points represent multiple packets received). I also remember I got messages in bigger distance than those shown on map.s