{
"$type": "site.standard.document",
"description": "feat: flash Meshtastic firmware to a Heltec ESP32 LoRa V3 board via CLI",
"path": "/posts/setting-up-a-simple-meshtastic-device/",
"publishedAt": "2026-02-09T00:00:00.000Z",
"site": "https://read.ryancowl.es",
"tags": [
"Projects"
],
"textContent": "I’ve been wanting to experiment with Meshtastic for off-grid communication for a while now. It’s an open-source, decentralized mesh network that runs on low-cost LoRa (Long Range) radios (a technology that allows for sending small amounts of data over very long distances with very little power). After doing a bit of research, I picked up a MakerFocus ESP32 LoRa V3 Development Board (a Heltec V3 clone) to get started.\n\ntl;dr: I attached the antenna, connected the board to my Mac via USB-C, and used the CLI to flash the latest stable Meshtastic firmware.\n\n \n\nA Quick Warning\n\nWhen my device arrived, it didn't come with any instructions. My first instinct was to plug it in and see what happened. Don't do that.\n\nIf you power on a LoRa board without an antenna attached, you risk frying the radio module. Before you plug anything in, make sure you snap the included 915 MHz antenna onto the small U.FL connector (a small, gold-colored plug near the antenna label on the board).\n\n \n\nEnvironment Setup\n\nIf you're new to using a Terminal, it's simply a way to give your computer direct text-based instructions instead of clicking through a graphical interface.\n\nOn a Mac, you can open it by pressing and typing \"Terminal,\" or by finding it in your Applications > Utilities folder. Once it's open, you'll see a window where you can type commands and press to run them.\n\nMeshtastic also offers a Web Flasher that handles all of this through the browser, which is the recommended approach for most people. I went with the CLI because I wanted to understand what was happening under the hood.\n\nI decided to flash the firmware via the command line. \"Flashing\" is just a technical term for installing or updating the software (called firmware) that lives directly on the hardware of your device. I already had Python 3 installed, but if you're on a Mac and need it, Homebrew is the easiest way to get up and running.\n\nIf you're not familiar with Homebrew, it's a package manager for macOS. Homebrew makes it simple to install, update, and manage software (like Python, Git, or other tools) directly from your terminal, without having to hunt for installers online.\n\nYou can check your Python version by running:\n\nOnce Python is ready, install from PyPI:\n\nNote: Depending on your setup, the command may be instead of .\n\nWith the antenna attached and the board plugged into my laptop via USB-C, I ran a quick check to make sure everything was communicating properly:\n\nThis confirmed the connection and gave me the specific chip details, which is helpful for making sure you download the right firmware.\n\n \n\nDownload the Firmware\n\nNext, head over to the Meshtastic downloads page. Finding the right firmware can be confusing because Meshtastic supports many different boards. The key is to match the firmware to the specific microcontroller and hardware layout of your device.\nClick the \"Download Stable\" button, which redirects to the latest release on GitHub (it was at the time of writing).\nLook for the zip file that matches your hardware architecture. For the Heltec V3, which is an ESP32-S3 based board, I downloaded .\nExtract the contents locally.\n\nInside the extracted folder, you'll see a lot of files. This is where it gets specific. You need the (binary) file that matches your exact board model. Since I'm doing a fresh install on a new board, I'm looking for the full installation binary. Based on my check and the board's name, I needed: . \n\nIf you're using a different board, like a T-Beam or a Lora32, make sure the filename explicitly mentions your hardware to avoid bricking the device or having features like the screen not work.\n\n \n\nFlashing the Board\n\nMeshtastic includes a script to make flashing easier. In your terminal, with the device still connected via USB, navigate to the extracted firmware folder and run:\n\nThe flag tells the script exactly which firmware file to use. The process takes a few minutes to complete. If you ever need to update the firmware in the future, you'll follow the same process but use the \"update\" file.\nInitial Configuration\n\nOnce the CLI finishes and the board reboots, you can connect to it using the Meshtastic app on your phone. Here are the basic steps to get everything configured:\nDownload the App: Get the Meshtastic app for iOS or Android.\nPair via Bluetooth: Open the app and ensure Bluetooth is enabled on your phone. The app should automatically scan for nearby devices. Look for a device named something like (the last four characters usually match the end of your device's MAC address, which is a unique identifier assigned to every piece of network hardware).\nSet Your Region: This is the most important step for regulatory compliance. In the app, go to Settings > LoRa and select your region (e.g., for 915 MHz). The device will reboot once the change is saved.\nConfigure Your Profile: Under Settings > User, set your Display Name (what others see) and a four-character Short Name (used for identification in compact lists).\nSend a Test Message: Go to the Messages tab and try sending a message to the channel. Even if no one else is around, you should see your message appear on the device's screen (if it has one).\n\nNow that your node is configured, you're part of the mesh! You can join additional channels, set up private encrypted groups, or even use your node as a gateway to the internet via MQTT.",
"title": "Setting up a Meshtastic Node with the ESP32 LoRa V3"
}