A Beginner's Guide to Meshtastic: Part 2
Setting up your first node and using Meshtastic as an everyday peer-to-peer messenger
This is Part 2 of a multi-part series on Meshtastic. For an introduction to the project, please refer to “A Beginner’s Guide to Meshtastic”.
Meshtastic, a mesh network used for text communication, can be difficult to break into without extensive effort and research. For example, Meshtastic runs on three different types of SoC manufactured by multiple vendors, including Seeed Studio, Heltec, LilyGo, RAKwireless, and others. Some devices are handhelds, some are repeaters, and some are just boards or kits in case you want to build your own node. The choices are abundant and daunting. That’s why I spent a considerable amount of time evaluating different devices in order to pick the one I believe is the easiest to get started with for most people.
Therefore, after much deliberation and research, I purchased the Seeed Studio SenseCAP Card Tracker T1000-E for Meshtastic. I based my decision on its affordability, IP65 rating, ease of setup, and the fact that it comes pre-flashed with the Meshtastic firmware, so no hardware hacking was required to get started. It’s available directly from Seeed Studio or on Amazon.
A fun story about RP2040 devices: Before purchasing the T1000-E, I picked up two custom RP2040-based units from an Etsy seller in January of 2024. These units lacked instructions on how to flash them with newer firmware, as they were clearly not meant for a Meshtastic novice. My many attempts to follow the generic flashing instructions on the Meshtastic website only led to repeated failure. Defeated, I left the devices on the shelf until just before starting this series, determined to try again in the future.
What was unbeknownst to me at the time is that RP2040 devices have a small boot select, or BOOTSEL, button used for putting the device into a state where it can be flashed easily. The instructions I eventually found mentioned double-clicking or holding this button down while starting the device, but I found no such button on either of the devices I purchased, at first. It wasn’t until I, in a moment of “f- it” annoyance, looked up the RP2040 and WisBlock 11300 LoRa module schematics, disassembled the units, and found a nondescript button that looked like it belonged to the LoRa chip instead of the RP2040 board to which it was affixed.
As I knowingly pressed the button while connecting the unit to my laptop (did I mention there was no battery or bluetooth either? Not. for. beginners), I was greeted by a prompt to mount the drive on my computer’s desktop. I then slowly and shamefully dragged the firmware file onto the drive to complete the update while trying not to notice my CompSci degree, silently judging me from the office wall.
This experience is the reason why I recommend purchasing your first Meshtastic radio from a manufacturer as opposed to buying one from Etsy or building one from a kit. Documentation and community support will save you a lot of headaches!
With new radio in hand, I then surveyed over 130 devices in four different states and found the top three most often encountered devices were:
Heltec V3 (ESP32)
LilyGo T-Deck (ESP32)
Seeed Studio T1000-E (nRF52)
It was interesting to see ESP32 devices topping the list, but devices built around that chip have been around a long time and are a community favorite, despite their shortcomings. If ESP32 fits your needs better than nRF52 or RP2040, either of the two devices listed above have plenty of documentation and support within the community.
Meshtastic App Setup
The setup process is similar for most mobile Meshtastic devices. After unboxing and charging or connecting your new device to power, download the Meshtastic app for your mobile platform. For the more privacy-conscious, app install via sideloading or F-Droid is also available for Android and Graphene OS users.
While downloading an app can seem odd for what's supposed to be an off-grid messenger, the app functions without a subscription (shocking, nowadays) and makes using the radio much easier. Standalone Meshtastic nodes that don’t require a connected device are available, but are more complex to use and therefore outside the scope of this guide.
Note: The mobile device app isn’t the only way to interact with Meshtastic radios, but I’ve found it to be the easiest by far. Meshtastic also makes a web client or Python CLI (command line interface) available, but I would strongly recommend saving those for when you’re more comfortable with the platform.
Note: After each of the following numbered steps, click the Save button after changing settings and before leaving the Settings screen. This will prompt a restart of the device. Reconnect and continue on to the next step until config is completed. Continuing on…
Turn on your Meshtastic device as per the manufacturer’s instructions and place in pairing mode if required
Open the Meshtastic app on your mobile device or computer. These instructions were compiled on iOS, but shouldn’t differ too much on other platforms.
Allow the app to find Bluetooth devices
(Optional) Allow the app to use your location. This allows the app to share mobile-generated GPS coordinates to your Meshtastic node
Allow notifications, if desired
Under Bluetooth > Available radios, find and tap your node
Pair with the PIN code. This will most likely be found in your device’s packaging or on the manufacturer’s website.
At this point, you’ll have to choose your region. This determines which radio band your device will communicate on. Tap Set LoRa Region.
Note: If in the USA, your band is 915 MHz. Europe, 868/443 MHz.
This setting can also be found under Settings > LoRa > Region
Change your node name under Settings > User > Long Name/Short Name
Long Name has a limit of 36 bytes or characters; Short Name is limited to just four characters. The last four digits of your device’s MAC address (a unique hardware identifier) are appended to the short name to create the Bluetooth device name.
Now change your node’s PIN. This will prevent anyone with the default PIN from pairing with your node:
Settings > Bluetooth > Pairing Mode > Fixed PIN: Set a new PIN
Before going any further, please flash your Meshtastic device’s firmware to v2.6.11 or later. A critical vulnerability was disclosed in June 2025 that makes this a non-negotiable step. Steps to flash the T1000-E can be found here or follow your device’s firmware flash procedure. The Meshtastic Web Flasher is an invaluable tool that makes this process much easier.
An additional note on firmware upgrades: Before future flash upgrades, remember to back up your keys under Settings > Security > Key Backup (or copy the keys manually). After the flash has completed, restore the keys on the same screen. This will maintain your end-to-end encryption within Direct Messages.
The basic device setup is now complete and your Meshtastic node is almost ready to use.
Optional Settings
However, there are a few optional settings I changed that you might find useful too:
Disable reporting usage and crash data -
Settings > App Settings > Usage and Crash Data: Disable
Disable position -
Settings > Position > Device GPS: Disabled
Smart Position: Disable
Position Flags > Disable All
(iPhone) Phone Settings > Apps > Meshtastic >
Location: Never
Share Location: Disable
Disable device speaker when receiving a message -
Settings > External Notification >
Options >
Enabled: Disable
Alert when receiving a message: Disable
Use PWM Buzzer > Disable
Optional GPIO > Disable All
Output pin buzzer GPIO: Unset
Output pin vibra GPIO: Unset
Resetting Primary Channel -
Warning: Changing the primary channel will prevent your node from receiving messages from other nodes configured with the default settings.
Periodic telemetry broadcasts like position and telemetry are sent over this default channel to any nodes within range. To control this information, rename the primary channel and create a new key:
Settings > Channels > Primary Channel > Chanel Details >
Name: Pick a name
Key Size: Pick a key size (larger is better)
Key: Enter a key or tap the generate key button to create one automatically
Settings > Channels > Primary Channel > Position >
Positions Enabled: Disable
Note: You can automatically share your location on a private secondary channel while keeping the primary channel unencrypted as of firmware v2.6.10. The Meshtastic site refers to this new capability, but I haven’t tested it yet.
STOP! Put on your tinfoil hat and nerd goggles! This bit’s important!
You may notice there is one topic I haven’t approached until now and that is security. Meshtastic employs AES256 encryption to protect channel communication, but there are some very important caveats you should be aware of before using Meshtastic for sensitive conversations in channels:
Meshtastic does not employ Perfect-Forward-Secrecy in channels. This means any previous communications can be decrypted if an attacker gets ahold of the channel key through another means, such as node theft or inadvertent leakage.
Meshtastic does not authenticate channel messages. This means anyone can trivially impersonate someone else within the same channel.
Meshtastic does not verify the integrity of messages sent in channels. This means messages and nodes can be tampered with in transit. The bug report on this issue refers to its use against the admin module and therefore recommends not using the admin module as a workaround for node admin tasks, but it’s important to keep in mind for all messages.
Many of these limitations are due to the limited nature of the Meshtastic hardware. In my opinion, if you are using Meshtastic as a personal messenger and carry your node on you, you will most likely not be impacted by at least two of these in a worst-case scenario. However, the rules change when setting up unattended nodes…
Meshtastic:
Recommendations for users using private channels
Do not configure private channels on unattended nodes. Nodes will relay Meshtastic traffic even if they are not able to decrypt it. Your unattended routers should not have the private PSK configured as it is easy to gain physical access and extract the channel key.
Keep in mind that everything sent on a channel can be stored and decrypted later by anyone who gains access to the key, even if you locally delete the messages.
Change your Channel Keys from time to time.
Source: https://meshtastic.org/docs/overview/encryption/
I prefer to think of Meshtastic channels as “Walkie-Textie”: It’s cheap and convenient to use, but not inherently secure without some legwork.
So where does that leave privacy-conscious users? Depending on your threat model, you may not want to use Meshtastic for secure group communication at the moment. If you do, please do so at your own risk.
However, it’s not all doom and gloom. The project is aware of its deficits and actively works to address them or provide workarounds where possible. Direct Messages are also not impacted by these issues, as they employ PKC (Public Key Cryptography) as of firmware v2.5 to secure them. Which brings us nicely along to…
Using Meshtastic as a Peer-to-Peer Messenger
Your Meshtastic device can now send and receive messages to any device within range on the Primary Channel. But what about sending secure messages to individual devices? This is where Direct Messages come in. To send a direct message to a node:
Open the Messages tab in the Meshtastic app and tap Direct Messages
In the Contacts list, choose the node you want to message
Pay attention to the icon between the device icon and name:
Green (locked): End-to-end encrypted using the new public key infrastructure method
Yellow (unlocked): Firmware version prior to v2.5 and using the channel shared key. This chat is not end-to-end encrypted.
Red key with a strike: Public key changed and is now different from what was first recorded. Reach out via another secure means and verify you are speaking with the same node. Although this scenario can happen as a result of a factory reset, it’s good practice to make sure this wasn’t the result of a security breach.
Enter a message and tap the send arrow to send your message. Delivery status messages are shown under the sent message. “Acknowledged” means the message was received by the recipient node. “Acknowledged by another node” means the message was received by another node in the mesh, but not the intended recipient. No worries though, that other node won’t be able to read the contents of the message. Other status messages are available within the chat window by tapping the (i) icon.
At this point you’ve set up your first Meshtastic node. Give yourself a round of applause! You can now browse the public channel and send direct messages to another node. But, what if you want to chat in your own channel? What if you’re going on a trip somewhere with bad cellular reception? In the next entry, we’ll approach setting up a temporary mesh between two or more nodes.
Thanks for reading!
Sources:
https://meshtastic.org/docs/getting-started/initial-config/#set-regional-settings
https://meshtastic.org/zh-CN/docs/configuration/radio/security/#
https://meshtastic.org/docs/configuration/radio/device/#roles
https://www.reddit.com/r/meshtastic/comments/1adaerx/how_to_completely_disable_position_updates/
https://meshtastic.org/docs/configuration/tips/#not-sharing-your-location