<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel>
    <title><![CDATA[LoRaMeshDevices]]></title>
    <link>https://www.lorameshdevices.com</link>
    <meta property="og:title" content="LoRaMeshDevices.com"/>
    <meta property="og:type" content="article"/>
    <meta property="og:url" content="https%3A%2F%2Fwww.lorameshdevices.com%2Fblog%2F"/>
    <meta property="og:description" content=""/>
            <meta property="og:image" content="https://media.cdnws.com/_i/384141/344/2808/47/lorameshdevices.png"/>
        <description></description>
    <pubDate>Sat, 13 Jun 2026 13:12:28 +0200</pubDate>
    <atom:link xmlns:atom10="http://www.w3.org/2005/Atom" href="https://www.lorameshdevices.com/rss.xml" rel="self" type="application/rss+xml"/>
    <language>fr</language>
    <copyright>WiziShop</copyright>
                <item>
                <title><![CDATA[Build a Private Off-Grid Mesh Network With No Cell Service or Wi-Fi]]></title>
                <link>https://www.lorameshdevices.com/blog/meshcore/build-a-private-off-grid-mesh-network-with-no-cell-service-or-wi-fi.html</link>
                <guid>https://www.lorameshdevices.com/blog/meshcore/build-a-private-off-grid-mesh-network-with-no-cell-service-or-wi-fi.html</guid>
                <pubDate>Wed, 10 Jun 2026 22:49:38 +0200</pubDate>
                <dc:creator><![CDATA[Vivian van Zyl]]></dc:creator>
                <description><![CDATA[ 

Sending messages over more than a mile without cell towers, without Wi-Fi, and without paying a monthly fee sounds like a gimmick until you actually do it. 

That is exactly what a small MeshCore setup can do. With one solar repeater mounted outside and one handheld companion node in your hand, you can create a private off-grid communication network that keeps working independently of the internet. 

This setup uses the Seeed Studio MeshCore starter kit, which includes the MeshCore Starter Kit with a SenseCAP Solar Node P1 Pro and a Wio Tracker L1 Pro. Both come ready for MeshCore, which makes this one of the easiest ways to get a practical LoRa mesh up and running. 

 

Table of Contents


	What MeshCore actually is
	The two pieces that make this network work
	Set up the repeater first
	Mount the repeater where it can actually do its job
	Set up the companion node
	Verify the repeater is visible from the companion node
	Manage the repeater remotely from the app
	How discovery and privacy work in MeshCore
	Test direct messaging across the mesh
	Use public channels too
	What you end up with
	Practical setup checklist
	FAQ


What MeshCore actually is

Before touching the hardware, it helps to understand what MeshCore is doing differently. 

MeshCore is firmware built around LoRa, which stands for long range radio. LoRa is designed for tiny packets of data traveling surprisingly long distances while using very little power. It is not about streaming video or moving huge files. It is about reliable low-power communication. 

The important part is the network model. 

MeshCore uses a routed mesh architecture. Instead of blasting every packet through every node in the network, messages are routed through a better path. In practical terms, that gives you a few advantages: 


	better reliability
	better scalability as the network grows
	better battery life
	less unnecessary traffic across the mesh


That is the big distinction from flooding-style mesh systems, where every node gets hammered with every packet. Routed mesh is simply a cleaner approach when you want a network that can grow and keep working efficiently. 


The routing difference is the whole story here. MeshCore aims for an efficient path instead of spraying traffic everywhere.


The two pieces that make this network work

The starter kit gives you the core building blocks you need. 


1. SenseCAP Solar Node P1 Pro


This is the repeater. It is the part you mount outside somewhere elevated so it can stay alive around the clock and extend your network. 

It comes preloaded with MeshCore repeater firmware. Internally it is built around a low-power nRF52840 class architecture and an SX1262 LoRa radio, which is exactly the kind of combination you want for a solar-powered always-on node. There is also a built-in GPS module. 

On the outside, you get: 


	an integrated solar panel on the front
	mounting hardware on the back
	an antenna connection
	a USB port for maintenance or updates
	indicator lights and buttons



2. Wio Tracker L1 Pro


This is the companion node. Think of it as the handheld part of your setup. 

It also comes preconfigured with MeshCore companion firmware and pairs to the MeshCore mobile app over Bluetooth. It has a rechargeable internal battery, a small display, USB charging, and a rugged enclosure. There is no assembly drama here. It is ready to use. 


This is the basic off-grid toolkit. One solar repeater for the network backbone and one handheld companion for messaging.


If you want the individual hardware pieces, the handheld is the Wio Tracker L1 Pro and the repeater is the SenseCAP Solar Node P1 Pro. 

Set up the repeater first

Start with the solar repeater. 

The first rule is simple and important: attach the antenna before powering the unit on. Do not skip that. 

Screw the antenna onto the repeater first. If you want more flexibility in placement, the kit also includes an antenna extension so you can separate antenna placement from the main body if needed. 

Once the antenna is attached, put the unit where it can see sunlight and power it on using the onboard power button. If the panel is getting solar input, you should see the relevant indication from the unit. 


Configure the repeater from a computer


Even though the device arrives preflashed, you still want to configure it correctly for your region and network settings. 

Connect the repeater to your PC with USB, then open the MeshCore flasher and configuration tool at MeshCore flasher. 


This is where the repeater setup happens. You are not just flashing firmware here. You are also setting the node up properly.


From there: 


	Choose Repeater Setup.
	Click Connect.
	Select the repeater from the USB device list.
	Set an admin password.
	Optionally leave the guest password blank if you want telemetry to be viewable without logging in.
	Set the correct region. This is the most important part.
	Optionally fill in owner information.
	Save and reboot the device.


If you are on Windows and the device does not appear in the USB selection popup, you may need a driver. The walkthrough points to this Windows driver guide. On many Linux and Mac setups, that extra step is usually not needed. 


Do not gloss over the region setting. If your devices are not on the same region, they are not going to talk to each other.


Mount the repeater where it can actually do its job

Once the repeater is configured, get it outside. 

The number one thing that improves range is elevation. Higher placement generally means better line of sight, and with LoRa that matters a lot. These radios can handle some walls and trees, but height still makes a dramatic difference. 

Good mounting spots include: 


	under a roof edge
	on a second-story exterior wall
	on a fence post
	on a mast or rooftop location
	on a tree or elevated structure if mounted safely


Also make sure the solar panel faces the sun well enough to keep the repeater charged. A perfect solar angle is nice, but a bad radio location will hurt you more than a slightly imperfect solar angle. You want a practical balance between sun exposure and elevation. 


You want the panel seeing daylight and the antenna sitting high enough to give the radio a fair shot at distance.


Set up the companion node

Now move on to the Wio Tracker L1 Pro. 

Same rule as before: attach the antenna before powering it on. 

After attaching the antenna, use the side button to turn it on. The display should show that MeshCore is loading, along with the firmware version installed on the unit. 


Pair it to the MeshCore mobile app


Install the MeshCore app from the Android or iOS app store, then open it and scan for nearby devices. 

The companion node should appear in the list. Select it, then confirm the pairing PIN shown on the device screen. Once paired, the app connects over Bluetooth. 


Pairing is straightforward. The device shows the PIN and the app handles the Bluetooth side.


After pairing, give the node a meaningful name so it is easier to identify later. Something like a location, role, or personal label is far better than leaving a generic default. 

Then set the region on the companion node to match the repeater. If the repeater is configured for USA and Canada, the companion node must use that same region too. 

At that point, the handheld should remain connected to your phone and be ready to discover nearby nodes. 

Verify the repeater is visible from the companion node

Once both devices share the same region, the companion node should discover the solar repeater automatically when it boots and joins the local mesh. 

If it does not show up right away, you can manually scan from within the app by going into the tools area and using the nearby node discovery options. 

When the repeater appears, you can inspect telemetry. If you left the guest password blank, you can immediately see useful information such as battery charge and temperature. That gives you quick confirmation that the repeater is online and healthy. 

Manage the repeater remotely from the app

This is one of the nicer parts of the setup. 

Once your companion node can reach the repeater over MeshCore, you can log in to the repeater from the app using the admin password you set earlier. That means your handheld can act as a management tool for the repeater even after it is mounted outside. 

From the repeater management screen you can: 


	request full status details
	check battery voltage
	rename the repeater
	update owner information
	change passwords
	sync the repeater clock
	view GPS position data if available
	send an advert so other nodes can discover it
	confirm the configured region



Once the repeater is reachable, you can manage it from the handheld side instead of climbing back outside every time.


The GPS lock on a repeater is not always urgent, but it is there if you want positional data. Clock sync, however, is worth doing so the repeater stays properly aligned. 

How discovery and privacy work in MeshCore

MeshCore is built with privacy in mind, and that affects how messaging behaves. 

If one companion node tries to send a direct private message to another node that has not yet added it as a contact, that message will fail. That is expected behavior. 

The way around that is node discovery. 

A flood route message, which in this context is effectively an advert, announces your presence so nearby nodes can become aware of you. If the receiving node is configured to auto-add discovered nodes, the two sides can then recognize each other and private direct messaging starts working. 


This is the key concept for first contact. If nodes do not know each other yet, advertise first and then move to direct messages.


So the flow looks like this: 


	Node A sends an advert or flood route message.
	Node B discovers Node A.
	The nodes are added to each other, manually or automatically.
	Private direct messages can now be delivered.


Test direct messaging across the mesh

With the repeater mounted outside and the handheld node connected to the phone, it is time to send messages. 

In the demo, one companion node first advertises itself, then a second companion node discovers it. Once both nodes know about each other, direct messaging starts working normally. 

The important point is that the message travels over the LoRa mesh, not over the internet. No Wi-Fi connection is needed for the network path itself, and the setup was specifically demonstrated with Wi-Fi disabled to make that point clear. 

If you attempt a private message before the nodes know each other, it fails. After discovery and auto-add kick in, the same message goes through and is received on the second node. 

Use public channels too

MeshCore is not limited to one-to-one messages. 

You can also post into public channels. In the app, the public channel is available for non-direct messaging, and messages sent there can be seen by nodes participating in that channel. 

This gives you two useful communication patterns: 


	Direct private messages for one-to-one communication
	Public channel messages for broader shared communication


That combination makes the network flexible. You can keep some conversations private while still maintaining an open coordination channel. 


Direct messages are not the whole story. Public channels give you a simple shared space for group communication across the mesh.


What you end up with

Once both devices are configured, the repeater is mounted, and the companion node is paired, you have a real off-grid communication network. 

At the smallest scale, it is just two building blocks: 


	one solar repeater keeping a local MeshCore network alive
	one companion node that lets you access that network from your phone


From there, you can expand with more repeaters, more handhelds, or more fixed nodes. The routed architecture is what makes that growth practical. 

For preppers, outdoor use, emergency communication, or just plain curiosity, this is one of the more compelling ways to stay connected when the normal network stack is gone. 

Practical setup checklist


	Attach both antennas before powering either device on.
	Configure the repeater from USB using the MeshCore flasher.
	Set a proper admin password.
	Make sure both devices use the same region.
	Mount the repeater high and in good sunlight.
	Pair the companion node to the MeshCore mobile app over Bluetooth.
	Name the companion node clearly.
	Confirm the repeater shows up in nearby nodes.
	Use adverts or flood route messages for initial discovery.
	Then move on to private messages or public channels.


FAQ



Do I need internet access for messages to travel across the mesh?




No. The messages move over LoRa radio through the MeshCore network. The phone only connects locally to the companion node over Bluetooth. 




What happens if my direct message fails?




Usually it means the destination node has not added your node yet. Send an advert or flood route message first so discovery can happen, then try the direct message again. 




Why is the region setting so important?




Both the repeater and the companion node must use the same regional radio settings. If the regions do not match, the devices will not communicate properly. 




Can the solar repeater be managed after it is mounted outside?




Yes. Once it is reachable through the mesh, you can log in from the app using the repeater admin password and manage status, settings, clock sync, and other details remotely. 




Do these devices need to be flashed before use?




The kit arrives preflashed with MeshCore firmware, so you do not need to start from a blank device. You still need to configure the repeater and verify settings like passwords and region. 




Where should I mount the repeater for best range?




As high as you can place it while still giving the solar panel decent exposure. Elevation has a major impact on range, so rooftops, upper walls, poles, or high fence locations are all better than low placements. 

]]></description>
                <content:encoded><![CDATA[<h1> </h1>

<p>Sending messages over more than a mile without cell towers, without Wi-Fi, and without paying a monthly fee sounds like a gimmick until you actually do it.</p>

<p>That is exactly what a small MeshCore setup can do. With one solar repeater mounted outside and one handheld companion node in your hand, you can create a private off-grid communication network that keeps working independently of the internet.</p>

<p>This setup uses the Seeed Studio MeshCore starter kit, which includes the <a href="https://www.seeedstudio.com/MeshCore-Starter-Kit-Ready-to-Use-Off-Grid-Instant-Reliable-Communication.html?sensecap_affiliate=agiE1S0&referring_service=link">MeshCore Starter Kit</a> with a SenseCAP Solar Node P1 Pro and a Wio Tracker L1 Pro. Both come ready for MeshCore, which makes this one of the easiest ways to get a practical LoRa mesh up and running.</p>

<p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/2Is1vevYKmE" style="display: block; width: 100%; aspect-ratio: 16/9;" title="YouTube video player"></iframe></p>

<h2>Table of Contents</h2>

<ul>
	<li><a href="#what-meshcore-actually-is">What MeshCore actually is</a></li>
	<li><a href="#the-two-pieces-that-make-this-network-work">The two pieces that make this network work</a></li>
	<li><a href="#set-up-the-repeater-first">Set up the repeater first</a></li>
	<li><a href="#mount-the-repeater-where-it-can-actually-do-its-job">Mount the repeater where it can actually do its job</a></li>
	<li><a href="#set-up-the-companion-node">Set up the companion node</a></li>
	<li><a href="#verify-the-repeater-is-visible-from-the-companion-node">Verify the repeater is visible from the companion node</a></li>
	<li><a href="#manage-the-repeater-remotely-from-the-app">Manage the repeater remotely from the app</a></li>
	<li><a href="#how-discovery-and-privacy-work-in-meshcore">How discovery and privacy work in MeshCore</a></li>
	<li><a href="#test-direct-messaging-across-the-mesh">Test direct messaging across the mesh</a></li>
	<li><a href="#use-public-channels-too">Use public channels too</a></li>
	<li><a href="#what-you-end-up-with">What you end up with</a></li>
	<li><a href="#practical-setup-checklist">Practical setup checklist</a></li>
	<li><a href="#faq">FAQ</a></li>
</ul>

<h2 id="what-meshcore-actually-is">What MeshCore actually is</h2>

<p>Before touching the hardware, it helps to understand what MeshCore is doing differently.</p>

<p>MeshCore is firmware built around <strong>LoRa</strong>, which stands for long range radio. LoRa is designed for tiny packets of data traveling surprisingly long distances while using very little power. It is not about streaming video or moving huge files. It is about reliable low-power communication.</p>

<p>The important part is the network model.</p>

<p>MeshCore uses a <strong>routed mesh architecture</strong>. Instead of blasting every packet through every node in the network, messages are routed through a better path. In practical terms, that gives you a few advantages:</p>

<ul>
	<li>better reliability</li>
	<li>better scalability as the network grows</li>
	<li>better battery life</li>
	<li>less unnecessary traffic across the mesh</li>
</ul>

<p>That is the big distinction from flooding-style mesh systems, where every node gets hammered with every packet. Routed mesh is simply a cleaner approach when you want a network that can grow and keep working efficiently.</p>

<figure style="justify-self: center"><img alt="Comparison diagram showing Meshtastic flooding and MeshCore routing" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FsuQ395al5eJ8tQsSEaHM%2Fscreenshots%2Fmeshcore-vs-meshtastic-routing-0e0e19.webp?alt=media&token=6c93a8b7-0a35-48e6-8fb5-bdf2fe9ff1bc" style="object-fit: cover;" width="100%">
<figcaption id="cap-0367fcf" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">The routing difference is the whole story here. MeshCore aims for an efficient path instead of spraying traffic everywhere.</figcaption>
</figure>

<h2 id="the-two-pieces-that-make-this-network-work">The two pieces that make this network work</h2>

<p>The starter kit gives you the core building blocks you need.</p>

<h1>1. SenseCAP Solar Node P1 Pro</h1>

<p>This is the repeater. It is the part you mount outside somewhere elevated so it can stay alive around the clock and extend your network.</p>

<p>It comes preloaded with MeshCore repeater firmware. Internally it is built around a low-power nRF52840 class architecture and an SX1262 LoRa radio, which is exactly the kind of combination you want for a solar-powered always-on node. There is also a built-in GPS module.</p>

<p>On the outside, you get:</p>

<ul>
	<li>an integrated solar panel on the front</li>
	<li>mounting hardware on the back</li>
	<li>an antenna connection</li>
	<li>a USB port for maintenance or updates</li>
	<li>indicator lights and buttons</li>
</ul>

<h1>2. Wio Tracker L1 Pro</h1>

<p>This is the companion node. Think of it as the handheld part of your setup.</p>

<p>It also comes preconfigured with MeshCore companion firmware and pairs to the MeshCore mobile app over Bluetooth. It has a rechargeable internal battery, a small display, USB charging, and a rugged enclosure. There is no assembly drama here. It is ready to use.</p>

<figure style="justify-self: center"><img alt="Solar panel repeater, companion node, and two antennas laid out on a table" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FsuQ395al5eJ8tQsSEaHM%2Fscreenshots%2Fmeshcore-kit-components-1a6713.webp?alt=media&token=c712e6da-50d7-4e30-a38b-6f90f7b35705" style="object-fit: cover;" width="100%">
<figcaption id="cap-d74db0e" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">This is the basic off-grid toolkit. One solar repeater for the network backbone and one handheld companion for messaging.</figcaption>
</figure>

<p>If you want the individual hardware pieces, the handheld is the <a href="https://www.seeedstudio.com/Wio-Tracker-L1-Pro-for-Meshcore-p-6717.html?sensecap_affiliate=agiE1S0&referring_service=link">Wio Tracker L1 Pro</a> and the repeater is the <a href="https://www.seeedstudio.com/SenseCAP-Solar-Node-P1-Pro-for-Meshcore-p-6741.html?sensecap_affiliate=agiE1S0&referring_service=link">SenseCAP Solar Node P1 Pro</a>.</p>

<h2 id="set-up-the-repeater-first">Set up the repeater first</h2>

<p>Start with the solar repeater.</p>

<p>The first rule is simple and important: <strong>attach the antenna before powering the unit on</strong>. Do not skip that.</p>

<p>Screw the antenna onto the repeater first. If you want more flexibility in placement, the kit also includes an antenna extension so you can separate antenna placement from the main body if needed.</p>

<p>Once the antenna is attached, put the unit where it can see sunlight and power it on using the onboard power button. If the panel is getting solar input, you should see the relevant indication from the unit.</p>

<h1>Configure the repeater from a computer</h1>

<p>Even though the device arrives preflashed, you still want to configure it correctly for your region and network settings.</p>

<p>Connect the repeater to your PC with USB, then open the MeshCore flasher and configuration tool at <a href="https://meshcore.io/flasher">MeshCore flasher</a>.</p>

<figure style="justify-self: center"><img alt="MeshCore flasher website open on a desktop browser" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FsuQ395al5eJ8tQsSEaHM%2Fscreenshots%2Fmeshcore-flasher-page-a34b7a.webp?alt=media&token=12a4c078-0f25-4b95-b596-b9234859573d" style="object-fit: cover;" width="100%">
<figcaption id="cap-e75d3b3" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">This is where the repeater setup happens. You are not just flashing firmware here. You are also setting the node up properly.</figcaption>
</figure>

<p>From there:</p>

<ol>
	<li>Choose <strong>Repeater Setup</strong>.</li>
	<li>Click <strong>Connect</strong>.</li>
	<li>Select the repeater from the USB device list.</li>
	<li>Set an <strong>admin password</strong>.</li>
	<li>Optionally leave the guest password blank if you want telemetry to be viewable without logging in.</li>
	<li>Set the correct <strong>region</strong>. This is the most important part.</li>
	<li>Optionally fill in owner information.</li>
	<li>Save and reboot the device.</li>
</ol>

<p>If you are on Windows and the device does not appear in the USB selection popup, you may need a driver. The walkthrough points to this <a href="https://hub.lorameshdevices.com/discussions/how-to-fix-windows-not-recognizing-heltec-v3-%E2%80%93-install-the-cp210x-driver">Windows driver guide</a>. On many Linux and Mac setups, that extra step is usually not needed.</p>

<figure style="justify-self: center"><img alt="MeshCore repeater setup screen showing fields for role, passwords, and region" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FsuQ395al5eJ8tQsSEaHM%2Fscreenshots%2Frepeater-setup-screen-36eb2b.webp?alt=media&token=e74a9b6a-b915-4fd4-895d-c305e88e0683" style="object-fit: cover;" width="100%">
<figcaption id="cap-f5b33b7" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Do not gloss over the region setting. If your devices are not on the same region, they are not going to talk to each other.</figcaption>
</figure>

<h2 id="mount-the-repeater-where-it-can-actually-do-its-job">Mount the repeater where it can actually do its job</h2>

<p>Once the repeater is configured, get it outside.</p>

<p>The number one thing that improves range is <strong>elevation</strong>. Higher placement generally means better line of sight, and with LoRa that matters a lot. These radios can handle some walls and trees, but height still makes a dramatic difference.</p>

<p>Good mounting spots include:</p>

<ul>
	<li>under a roof edge</li>
	<li>on a second-story exterior wall</li>
	<li>on a fence post</li>
	<li>on a mast or rooftop location</li>
	<li>on a tree or elevated structure if mounted safely</li>
</ul>

<p>Also make sure the solar panel faces the sun well enough to keep the repeater charged. A perfect solar angle is nice, but a bad radio location will hurt you more than a slightly imperfect solar angle. You want a practical balance between sun exposure and elevation.</p>

<figure style="justify-self: center"><img alt="Side view of the solar repeater showing the panel angle and antenna in front of a wooden fence" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FsuQ395al5eJ8tQsSEaHM%2Fscreenshots%2Fsolar-repeater-angle-bab05c.webp?alt=media&token=37082c4f-6e7f-4a9b-8851-07d386cf969e" style="object-fit: cover;" width="100%">
<figcaption id="cap-85ad004" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">You want the panel seeing daylight and the antenna sitting high enough to give the radio a fair shot at distance.</figcaption>
</figure>

<h2 id="set-up-the-companion-node">Set up the companion node</h2>

<p>Now move on to the Wio Tracker L1 Pro.</p>

<p>Same rule as before: <strong>attach the antenna before powering it on</strong>.</p>

<p>After attaching the antenna, use the side button to turn it on. The display should show that MeshCore is loading, along with the firmware version installed on the unit.</p>

<h1>Pair it to the MeshCore mobile app</h1>

<p>Install the MeshCore app from the Android or iOS app store, then open it and scan for nearby devices.</p>

<p>The companion node should appear in the list. Select it, then confirm the pairing PIN shown on the device screen. Once paired, the app connects over Bluetooth.</p>

<figure style="justify-self: center"><img alt="Hand holding the companion node beside a phone showing the MeshCore app pairing screen" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FsuQ395al5eJ8tQsSEaHM%2Fscreenshots%2Fmeshcore-companion-pairing-f92018.webp?alt=media&token=a9386f54-5eec-47d4-8c1f-39e736d23ec4" style="object-fit: cover;" width="100%">
<figcaption id="cap-d389417" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Pairing is straightforward. The device shows the PIN and the app handles the Bluetooth side.</figcaption>
</figure>

<p>After pairing, give the node a meaningful name so it is easier to identify later. Something like a location, role, or personal label is far better than leaving a generic default.</p>

<p>Then set the <strong>region</strong> on the companion node to match the repeater. If the repeater is configured for USA and Canada, the companion node must use that same region too.</p>

<p>At that point, the handheld should remain connected to your phone and be ready to discover nearby nodes.</p>

<h2 id="verify-the-repeater-is-visible-from-the-companion-node">Verify the repeater is visible from the companion node</h2>

<p>Once both devices share the same region, the companion node should discover the solar repeater automatically when it boots and joins the local mesh.</p>

<p>If it does not show up right away, you can manually scan from within the app by going into the tools area and using the nearby node discovery options.</p>

<p>When the repeater appears, you can inspect telemetry. If you left the guest password blank, you can immediately see useful information such as battery charge and temperature. That gives you quick confirmation that the repeater is online and healthy.</p>

<h2 id="manage-the-repeater-remotely-from-the-app">Manage the repeater remotely from the app</h2>

<p>This is one of the nicer parts of the setup.</p>

<p>Once your companion node can reach the repeater over MeshCore, you can log in to the repeater from the app using the admin password you set earlier. That means your handheld can act as a management tool for the repeater even after it is mounted outside.</p>

<p>From the repeater management screen you can:</p>

<ul>
	<li>request full status details</li>
	<li>check battery voltage</li>
	<li>rename the repeater</li>
	<li>update owner information</li>
	<li>change passwords</li>
	<li>sync the repeater clock</li>
	<li>view GPS position data if available</li>
	<li>send an advert so other nodes can discover it</li>
	<li>confirm the configured region</li>
</ul>

<figure style="justify-self: center"><img alt="Phone screen showing repeater management details including status and settings" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FsuQ395al5eJ8tQsSEaHM%2Fscreenshots%2Fremote-repeater-management-ab0b6e.webp?alt=media&token=d9421a4d-df8d-41cc-a962-e017e4c69bc1" style="object-fit: cover;" width="100%">
<figcaption id="cap-cfbea79" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Once the repeater is reachable, you can manage it from the handheld side instead of climbing back outside every time.</figcaption>
</figure>

<p>The GPS lock on a repeater is not always urgent, but it is there if you want positional data. Clock sync, however, is worth doing so the repeater stays properly aligned.</p>

<h2 id="how-discovery-and-privacy-work-in-meshcore">How discovery and privacy work in MeshCore</h2>

<p>MeshCore is built with privacy in mind, and that affects how messaging behaves.</p>

<p>If one companion node tries to send a direct private message to another node that has not yet added it as a contact, that message will fail. That is expected behavior.</p>

<p>The way around that is node discovery.</p>

<p>A <strong>flood route message</strong>, which in this context is effectively an advert, announces your presence so nearby nodes can become aware of you. If the receiving node is configured to auto-add discovered nodes, the two sides can then recognize each other and private direct messaging starts working.</p>

<figure style="justify-self: center"><img alt="On-screen text explaining flood route message equals advert and advert lets nearby nodes know I am here" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FsuQ395al5eJ8tQsSEaHM%2Fscreenshots%2Fflood-route-advert-explained-26c121.webp?alt=media&token=0eb7bd31-54aa-458f-bf98-503f9f4ef03d" style="object-fit: cover;" width="100%">
<figcaption id="cap-0d73bd7" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">This is the key concept for first contact. If nodes do not know each other yet, advertise first and then move to direct messages.</figcaption>
</figure>

<p>So the flow looks like this:</p>

<ol>
	<li>Node A sends an advert or flood route message.</li>
	<li>Node B discovers Node A.</li>
	<li>The nodes are added to each other, manually or automatically.</li>
	<li>Private direct messages can now be delivered.</li>
</ol>

<h2 id="test-direct-messaging-across-the-mesh">Test direct messaging across the mesh</h2>

<p>With the repeater mounted outside and the handheld node connected to the phone, it is time to send messages.</p>

<p>In the demo, one companion node first advertises itself, then a second companion node discovers it. Once both nodes know about each other, direct messaging starts working normally.</p>

<p>The important point is that the message travels over the LoRa mesh, not over the internet. No Wi-Fi connection is needed for the network path itself, and the setup was specifically demonstrated with Wi-Fi disabled to make that point clear.</p>

<p>If you attempt a private message before the nodes know each other, it fails. After discovery and auto-add kick in, the same message goes through and is received on the second node.</p>

<h2 id="use-public-channels-too">Use public channels too</h2>

<p>MeshCore is not limited to one-to-one messages.</p>

<p>You can also post into public channels. In the app, the public channel is available for non-direct messaging, and messages sent there can be seen by nodes participating in that channel.</p>

<p>This gives you two useful communication patterns:</p>

<ul>
	<li><strong>Direct private messages</strong> for one-to-one communication</li>
	<li><strong>Public channel messages</strong> for broader shared communication</li>
</ul>

<p>That combination makes the network flexible. You can keep some conversations private while still maintaining an open coordination channel.</p>

<figure style="justify-self: center"><img alt="Phone screen showing the channels section of the MeshCore app" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FsuQ395al5eJ8tQsSEaHM%2Fscreenshots%2Fmeshcore-public-channel-95136e.webp?alt=media&token=5e754e9d-7f28-461b-a34d-c649f1ac5aa9" style="object-fit: cover;" width="100%">
<figcaption id="cap-d54d7b0" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Direct messages are not the whole story. Public channels give you a simple shared space for group communication across the mesh.</figcaption>
</figure>

<h2 id="what-you-end-up-with">What you end up with</h2>

<p>Once both devices are configured, the repeater is mounted, and the companion node is paired, you have a real off-grid communication network.</p>

<p>At the smallest scale, it is just two building blocks:</p>

<ul>
	<li>one solar repeater keeping a local MeshCore network alive</li>
	<li>one companion node that lets you access that network from your phone</li>
</ul>

<p>From there, you can expand with more repeaters, more handhelds, or more fixed nodes. The routed architecture is what makes that growth practical.</p>

<p>For preppers, outdoor use, emergency communication, or just plain curiosity, this is one of the more compelling ways to stay connected when the normal network stack is gone.</p>

<h2 id="practical-setup-checklist">Practical setup checklist</h2>

<ul>
	<li>Attach both antennas before powering either device on.</li>
	<li>Configure the repeater from USB using the MeshCore flasher.</li>
	<li>Set a proper admin password.</li>
	<li>Make sure both devices use the same region.</li>
	<li>Mount the repeater high and in good sunlight.</li>
	<li>Pair the companion node to the MeshCore mobile app over Bluetooth.</li>
	<li>Name the companion node clearly.</li>
	<li>Confirm the repeater shows up in nearby nodes.</li>
	<li>Use adverts or flood route messages for initial discovery.</li>
	<li>Then move on to private messages or public channels.</li>
</ul>

<h2 id="faq">FAQ</h2>

<div data-faq-question="true">
<h1>Do I need internet access for messages to travel across the mesh?</h1>
</div>

<div data-faq-answer="true">
<p>No. The messages move over LoRa radio through the MeshCore network. The phone only connects locally to the companion node over Bluetooth.</p>
</div>

<div data-faq-question="true">
<h1>What happens if my direct message fails?</h1>
</div>

<div data-faq-answer="true">
<p>Usually it means the destination node has not added your node yet. Send an advert or flood route message first so discovery can happen, then try the direct message again.</p>
</div>

<div data-faq-question="true">
<h1>Why is the region setting so important?</h1>
</div>

<div data-faq-answer="true">
<p>Both the repeater and the companion node must use the same regional radio settings. If the regions do not match, the devices will not communicate properly.</p>
</div>

<div data-faq-question="true">
<h1>Can the solar repeater be managed after it is mounted outside?</h1>
</div>

<div data-faq-answer="true">
<p>Yes. Once it is reachable through the mesh, you can log in from the app using the repeater admin password and manage status, settings, clock sync, and other details remotely.</p>
</div>

<div data-faq-question="true">
<h1>Do these devices need to be flashed before use?</h1>
</div>

<div data-faq-answer="true">
<p>The kit arrives preflashed with MeshCore firmware, so you do not need to start from a blank device. You still need to configure the repeater and verify settings like passwords and region.</p>
</div>

<div data-faq-question="true">
<h1>Where should I mount the repeater for best range?</h1>
</div>

<div data-faq-answer="true">
<p>As high as you can place it while still giving the solar panel decent exposure. Elevation has a major impact on range, so rooftops, upper walls, poles, or high fence locations are all better than low placements.</p>
</div>]]></content:encoded>
            </item>
                        <item>
                <title><![CDATA[Meshtastic Telegram Bridge with WireClaw AI on an ESP32-S3]]></title>
                <link>https://www.lorameshdevices.com/blog/meshtastic/meshtastic-telegram-bridge-with-wireclaw-ai-on-an-esp32-s3.html</link>
                <guid>https://www.lorameshdevices.com/blog/meshtastic/meshtastic-telegram-bridge-with-wireclaw-ai-on-an-esp32-s3.html</guid>
                <pubDate>Thu, 28 May 2026 15:52:09 +0200</pubDate>
                <dc:creator><![CDATA[Vivian van Zyl]]></dc:creator>
                <description><![CDATA[If you want to bridge Meshtastic to Telegram, the obvious route is a Raspberry Pi, a PC, or some scripts running somewhere in the background. That works, but it is not very elegant. A much more interesting approach is to do it with a tiny standalone box that runs its own AI agent on an ESP32 and handles the job itself. 

That is exactly what this setup does. A Heltec V4 runs normal Meshtastic firmware, an ESP32-S3 runs WireClaw AI, and together they form a low-cost hardware bridge that can forward mesh messages to Telegram. The same little AI agent can also read sensors, remember custom names for devices, and create automation rules in plain language. 

This is part one of the project and focuses on getting WireClaw running on the ESP32-S3, connecting it to Wi-Fi, linking it to an AI model, and controlling the hardware through Telegram. The Meshtastic wiring and takeover side comes in the second part, but this first stage already shows why the idea is so useful. 

 

Table of Contents


	The idea: a standalone Meshtastic-to-Telegram box
	What WireClaw actually is
	The hardware used in this build
	Flashing WireClaw to the ESP32-S3
	First boot: connecting to the WireClaw setup access point
	Configuring Wi-Fi and the AI model
	Setting up Telegram with BotFather and IDBot
	After reboot: local dashboard and device status
	Controlling the ESP32 hardware from Telegram
	Reading sensor values through natural language
	Creating automation rules with plain English
	Reboots, persistence, and why this is practical
	How this fits into a larger Meshtastic setup
	What part one proves
	FAQ


The idea: a standalone Meshtastic-to-Telegram box

The end goal is simple. You send a message into the Meshtastic network and a Telegram message appears on your phone. No full computer. No always-on Raspberry Pi. Just a small hardware box doing the work. 

Inside that box are two controllers: 


	Heltec V4 running standard Meshtastic firmware
	ESP32-S3 running WireClaw AI


The ESP32 is not a LoRa radio in this setup. It is the smart controller. Its job is to connect to Wi-Fi, talk to Telegram, and use AI logic to interact with the connected hardware. The Heltec handles the Meshtastic side. Together, they make a neat little bridge. 


Best context for readers: the ESP32-S3 inside the enclosure is clearly shown with the phone UI in the foreground—this is the core “standalone box” controller.


What WireClaw actually is

WireClaw is an AI agent designed to live directly on a microcontroller. The basic pitch is that it is AI that lives on a wire. In practical terms, it means you can flash an ESP32, connect it to an AI backend, and then chat with it over Telegram to control pins, sensors, rules, and devices. 

That makes it a very nice fit for hardware projects around Meshtastic, ESP32 development, and small automation jobs. If you enjoy this kind of ESP32 experimentation, you may also like this hands-on guide to using AI with microcontrollers. 

One of the really fun parts here is that WireClaw is not limited to one exact board. It can run on several ESP32 variants, including very small ones. For this build, though, the ESP32-S3 from Lonely Binary is a good choice because it is basically a reference platform. A lot of ESP32 work tends to be tested first on boards like this, so it is a safe place to start. 


A clearer WireClaw example run on the “WireClaw - serial” terminal, illustrating sensor registration and Telegram-triggered automation logic.


The hardware used in this build

The ESP32-S3 board is just a microcontroller board with Wi-Fi, GPIO pins, and a built-in RGB LED. It is not a LoRa board. That matters, because the attached antenna is for Wi-Fi, not for Meshtastic radio. 

The core hardware pieces are: 


	ESP32-S3 board for running WireClaw AI
	Wi-Fi antenna connected to the board’s IPX connector
	Heltec V4 for the Meshtastic side of the bridge
	A good USB cable for flashing and power


The ESP32-S3 used here is the Lonely Binary ESP32-S3, and the Meshtastic radio on the other side of the box is the Heltec V4. 

Once the antenna is connected, you are ready to flash the board and turn it into a tiny network-connected AI appliance. 


Connecting a cable to the ESP32-S3—this is the moment you’ll want to confirm you’re using the correct USB-C port.


Flashing WireClaw to the ESP32-S3

The flashing process starts at WireClaw’s website. The installer runs in the browser and expects a supported ESP32 board, Chrome, and a USB connection. 

The first gotcha is an easy one to miss: on this specific ESP32-S3 board there are two USB-C ports. One is for UART and the other is the normal USB port. If the board does not appear in the flasher, check the port first. 

That was the exact issue here. Plugging into the UART port did not expose the board the right way. After moving the cable to the USB port, the device appeared as a JTAG USB device and flashing could continue. 


	Connect the ESP32-S3 with a known good USB cable.
	Open the WireClaw flasher page.
	Select the detected board.
	Install WireClaw and allow the tool to erase the device.
	Wait for the flash process to complete.


If needed, you can also manually place the board into boot mode by holding boot, pressing reset, releasing reset, and then releasing boot. 


Physically connecting the ESP32-S3 for flashing—hands-on setup before the WireClaw process completes.


First boot: connecting to the WireClaw setup access point

After flashing, the board boots with no configuration. WireClaw solves that by creating its own temporary Wi-Fi access point called something like WireClaw Setup. 

Connect to that access point and open the setup page. On some systems this opens automatically. Otherwise, you browse to the local setup address shown by the device. That brings up the configuration form where you tell WireClaw how to reach Wi-Fi, Telegram, and your AI provider. 


The WireClaw-Setup form is where you configure the captive portal, including your Wi‑Fi network details and AI provider settings.


Configuring Wi-Fi and the AI model

The configuration page is where the project becomes useful. At minimum, WireClaw needs: 


	Your Wi-Fi SSID
	Your Wi-Fi password
	An API key for your AI provider
	The model name
	The API URL
	A device name


In this setup, the AI backend used was DeepSeek. The API URL entered was the DeepSeek chat completions endpoint, and the chosen model was DeepSeekChat. 

If you are already using internet services alongside Meshtastic, this type of cloud link will feel familiar. It is a different mechanism to MQTT, but the idea of extending your network beyond pure radio range is very much in the same spirit as using Meshtastic MQTT to communicate globally. 

The device also gets a name. In the example here, it was named something like WireClaw VZH, which then shows up in status and local network access later. 


On the WireClaw setup page, you configure the AI model (DeepSeek in this example), along with Wi‑Fi and the device name.


Setting up Telegram with BotFather and IDBot

Telegram integration is one of the nicest parts of WireClaw because it gives you a simple chat interface to your hardware. To make that work, you need two values: 


	Telegram bot token
	Telegram chat ID


The bot token comes from BotFather. You create a new bot using the /newbot command, give it a name, and Telegram returns the token. 

The chat ID comes from IDBot. That gives you either your personal ID or the channel ID you want to use for notifications. 

Those values get entered into the WireClaw configuration page along with a timezone. Once everything is filled in, save the configuration and reboot the device. 


BotFather chat clearly shows the /newbot flow entry, which is part of the process for obtaining the bot token used by WireClaw.


After reboot: local dashboard and device status

Once the configuration is saved, reconnect to your normal Wi-Fi network and reset the device. At that point, WireClaw comes up on your LAN and reports back through Telegram that it has started. 

It also exposes a local dashboard via IP address or local DNS name. Inside that dashboard you can inspect: 


	Configuration
	Prompt
	Memory
	Devices
	Rules
	Status


On the ESP32-S3 used here, WireClaw detected built-in devices including: 


	An internal temperature sensor
	A clock
	An RGB LED



Telegram chat with the WireClaw bot: commands are sent and the bot replies with mesh activity and where the ESP32-S3 is reaching (including the config URL).


Controlling the ESP32 hardware from Telegram

This is where the whole thing starts to feel a bit magical. You can simply send a plain-language command in Telegram and the AI maps that to the actual hardware device names. 

For example, the board exposes an LED called RGB_LED. Sending a command such as set the RGB_LED to blue changes the on-board LED immediately. The AI then responds in Telegram confirming that it made the change. 

The same works for red, green, and so on. That alone is a nice proof that WireClaw is reading the device list correctly and can trigger real actions from a normal chat. 


Telegram conversation with WireClaw—this is where you send commands like setting the RGB LED and WireClaw confirms the action back in chat.



Teaching the AI simpler names


WireClaw is not just executing commands. It is also building memory. So instead of always using the exact hardware label, you can tell it: 

From now on call the RGB_LED LED 

After that, the AI remembers the alias. Then you can simply say: 

Set the LED to green 

and it knows what you mean. That memory shows up in the dashboard as well, so you can actually see that the alias was stored. 


WireClaw confirms the LED color and then shows how it will start using your simpler alias for the RGB_LED going forward.


Reading sensor values through natural language

The same idea works with sensor data. The board has an internal temperature reading exposed as something like internal_temp. Ask the AI what the internal temperature is, and it returns the current value, around 36°C in the example shown. 

Then, just as with the LED, you can rename it: 

From now on call the internal temp temp 

After that, asking What is the temp? works exactly as expected. Again, the alias is stored in memory. 

Creating automation rules with plain English

One of the most useful features in WireClaw is that it can create rules from natural language. Instead of writing logic manually, you describe what you want. 

A simple example used here was: 

If the temp goes above 36C, send me a message 

WireClaw interpreted that as a monitoring rule. It wanted the Telegram chat ID for the notification target, even though the ID had already been configured. That is one of those moments where you can see the AI is useful, but not infallible. Supplying the chat ID manually solved it immediately. 

Once accepted, the AI created a rule to check the chip temperature every five seconds and send a Telegram alert if the value exceeded 36°C. 

The generated rule then appeared in the dashboard under the Rules section. 


WireClaw finalizes the monitoring rule and indicates it will notify you repeatedly while the temperature stays above 36°C.



Why this matters beyond a demo


This is not limited to onboard devices like LEDs and temperature sensors. The same approach can be used for GPIO pins and external hardware. The basic pattern is: 


	Read a condition on one pin or sensor
	Trigger an action on another pin or service
	Notify you through Telegram


So you could define logic such as: 


	If input 5 goes high, set output 7 high
	If a threshold is crossed, send an alert
	If a device state changes, report it remotely


That makes the ESP32 a very capable automation companion for Meshtastic gear, especially when you want a self-contained system instead of another Linux box to maintain. 

Reboots, persistence, and why this is practical

A project like this only becomes genuinely useful if it survives a power cycle. WireClaw does. After unplugging and reconnecting the board, it boots back up, rejoins Wi-Fi, reconnects to Telegram, and keeps its stored memory and rules. 

Asking it something like What are your rules? after a reboot confirms that the configuration is still there. That persistence is a big deal, because it turns the board from a fun experiment into something you can actually deploy. 


Clear view of the ESP32-S3 module connected to the cable, helping reinforce that the board is the “smart controller” in this setup.


How this fits into a larger Meshtastic setup

On its own, WireClaw gives you AI-assisted control and remote messaging on a cheap microcontroller. Combined with a Heltec V4, it becomes something more interesting for Meshtastic: a dedicated bridge between local mesh traffic and internet-based messaging. 

That is especially attractive if you want to expand what your Meshtastic network can do without dragging in a full computer. It is also a nice complement to other techniques such as MQTT for Meshtastic, where cloud connectivity can extend the usefulness of the mesh far beyond direct radio range. 

If you are building out your own hardware stack, you can also browse more Meshtastic devices here. 

What part one proves

By the end of this setup, the ESP32-S3 is doing all of the following: 


	Running WireClaw AI locally on the microcontroller
	Connecting to Wi-Fi
	Talking to a cloud AI model through API calls
	Receiving commands in Telegram
	Controlling onboard hardware like the RGB LED
	Reading onboard sensor values like temperature
	Remembering aliases and conversational context
	Creating and storing automation rules
	Persisting that configuration across reboots


That is already a powerful little platform before even getting into the full Meshtastic bridge wiring. The second half of the project is where the ESP32 starts taking control of the attached Meshtastic node and forwarding network messages, but the foundation is all here. 

FAQ


Do I need a Raspberry Pi to bridge Meshtastic to Telegram in this setup? 



No. That is the whole point of this build. The bridge logic is moved onto a small ESP32-S3 running WireClaw AI, paired with a Meshtastic device such as a Heltec V4. 



What board was used to run WireClaw? 



An ESP32-S3 board from Lonely Binary was used. It is a good reference-style board for ESP32 projects and includes Wi-Fi, GPIO, and an onboard RGB LED. 



Does the ESP32-S3 in this project provide the LoRa radio for Meshtastic? 



No. In this build, the ESP32-S3 is the AI and Wi-Fi side of the system. The Meshtastic radio side is handled by a separate Heltec V4 board. 



What do I need to configure WireClaw after flashing? 



You need your Wi-Fi SSID and password, an AI provider API key, model name, API URL, a Telegram bot token, and a Telegram chat ID. 



How do I get the Telegram bot token and chat ID? 



Create the bot with BotFather using the /newbot command to get the token. Use IDBot to retrieve the chat ID you want WireClaw to message. 



Can WireClaw control hardware using normal language? 



Yes. In the example setup, Telegram commands were used to change the onboard RGB LED color, read internal temperature, rename device labels, and create alert rules without manual scripting. 



Do rules and memory survive a reboot? 



Yes. After power cycling the board, WireClaw came back online with its saved configuration, stored memory, and automation rules intact. 



Where can I learn more about WireClaw itself? 



There is a fuller WireClaw walkthrough available here: full WireClaw video. 

]]></description>
                <content:encoded><![CDATA[<p>If you want to bridge <strong>Meshtastic</strong> to Telegram, the obvious route is a Raspberry Pi, a PC, or some scripts running somewhere in the background. That works, but it is not very elegant. A much more interesting approach is to do it with a tiny standalone box that runs its own AI agent on an ESP32 and handles the job itself.</p>

<p>That is exactly what this setup does. A Heltec V4 runs normal Meshtastic firmware, an ESP32-S3 runs WireClaw AI, and together they form a low-cost hardware bridge that can forward mesh messages to Telegram. The same little AI agent can also read sensors, remember custom names for devices, and create automation rules in plain language.</p>

<p>This is part one of the project and focuses on getting WireClaw running on the ESP32-S3, connecting it to Wi-Fi, linking it to an AI model, and controlling the hardware through Telegram. The Meshtastic wiring and takeover side comes in the second part, but this first stage already shows why the idea is so useful.</p>

<p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/7bOVtMyVM1A" style="display: block; width: 100%; aspect-ratio: 16/9;" title="YouTube video player"></iframe></p>

<h2>Table of Contents</h2>

<ul>
	<li><a href="#the-idea-a-standalone-meshtastic-to-telegram-box">The idea: a standalone Meshtastic-to-Telegram box</a></li>
	<li><a href="#what-wireclaw-actually-is">What WireClaw actually is</a></li>
	<li><a href="#the-hardware-used-in-this-build">The hardware used in this build</a></li>
	<li><a href="#flashing-wireclaw-to-the-esp32-s3">Flashing WireClaw to the ESP32-S3</a></li>
	<li><a href="#first-boot-connecting-to-the-wireclaw-setup-access-point">First boot: connecting to the WireClaw setup access point</a></li>
	<li><a href="#configuring-wi-fi-and-the-ai-model">Configuring Wi-Fi and the AI model</a></li>
	<li><a href="#setting-up-telegram-with-botfather-and-idbot">Setting up Telegram with BotFather and IDBot</a></li>
	<li><a href="#after-reboot-local-dashboard-and-device-status">After reboot: local dashboard and device status</a></li>
	<li><a href="#controlling-the-esp32-hardware-from-telegram">Controlling the ESP32 hardware from Telegram</a></li>
	<li><a href="#reading-sensor-values-through-natural-language">Reading sensor values through natural language</a></li>
	<li><a href="#creating-automation-rules-with-plain-english">Creating automation rules with plain English</a></li>
	<li><a href="#reboots-persistence-and-why-this-is-practical">Reboots, persistence, and why this is practical</a></li>
	<li><a href="#how-this-fits-into-a-larger-meshtastic-setup">How this fits into a larger Meshtastic setup</a></li>
	<li><a href="#what-part-one-proves">What part one proves</a></li>
	<li><a href="#faq">FAQ</a></li>
</ul>

<h2 id="the-idea-a-standalone-meshtastic-to-telegram-box">The idea: a standalone Meshtastic-to-Telegram box</h2>

<p>The end goal is simple. You send a message into the Meshtastic network and a Telegram message appears on your phone. No full computer. No always-on Raspberry Pi. Just a small hardware box doing the work.</p>

<p>Inside that box are two controllers:</p>

<ul>
	<li><strong>Heltec V4</strong> running standard Meshtastic firmware</li>
	<li><strong>ESP32-S3</strong> running WireClaw AI</li>
</ul>

<p>The ESP32 is not a LoRa radio in this setup. It is the smart controller. Its job is to connect to Wi-Fi, talk to Telegram, and use AI logic to interact with the connected hardware. The Heltec handles the Meshtastic side. Together, they make a neat little bridge.</p>

<figure style="justify-self: center"><img alt="ESP32-S3 enclosure with internal wiring held in-hand next to a phone displaying a messaging interface" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FKKV1qUzRDhvVNLiDK8wJ%2Fscreenshots%2Fc8cfa282-75fd-47ba-b69b-363436b914de.webp?alt=media&token=40bbefb5-26f1-4031-bbc5-5826647c1d23" style="object-fit: cover;" width="100%">
<figcaption id="cap-e6fc12f" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Best context for readers: the ESP32-S3 inside the enclosure is clearly shown with the phone UI in the foreground—this is the core “standalone box” controller.</figcaption>
</figure>

<h2 id="what-wireclaw-actually-is">What WireClaw actually is</h2>

<p>WireClaw is an AI agent designed to live directly on a microcontroller. The basic pitch is that it is <strong>AI that lives on a wire</strong>. In practical terms, it means you can flash an ESP32, connect it to an AI backend, and then chat with it over Telegram to control pins, sensors, rules, and devices.</p>

<p>That makes it a very nice fit for hardware projects around Meshtastic, ESP32 development, and small automation jobs. If you enjoy this kind of ESP32 experimentation, you may also like <a href="https://www.lorameshdevices.com/blog/esp32/harnessing-ai-to-program-microcontrollers-a-hands-on-guide.html">this hands-on guide to using AI with microcontrollers</a>.</p>

<p>One of the really fun parts here is that WireClaw is not limited to one exact board. It can run on several ESP32 variants, including very small ones. For this build, though, the ESP32-S3 from Lonely Binary is a good choice because it is basically a reference platform. A lot of ESP32 work tends to be tested first on boards like this, so it is a safe place to start.</p>

<figure style="justify-self: center"><img alt="WireClaw website screenshot with serial output showing NATs sensor registration and Telegram automation" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FKKV1qUzRDhvVNLiDK8wJ%2Fscreenshots%2F931525c3-7de5-4289-83ea-674b7482a0d8.webp?alt=media&token=0494594e-19e4-47da-8554-c1f051e368cc" style="object-fit: cover;" width="100%">
<figcaption id="cap-f12e28e" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">A clearer WireClaw example run on the “WireClaw - serial” terminal, illustrating sensor registration and Telegram-triggered automation logic.</figcaption>
</figure>

<h2 id="the-hardware-used-in-this-build">The hardware used in this build</h2>

<p>The ESP32-S3 board is just a microcontroller board with Wi-Fi, GPIO pins, and a built-in RGB LED. It is not a LoRa board. That matters, because the attached antenna is for Wi-Fi, not for Meshtastic radio.</p>

<p>The core hardware pieces are:</p>

<ul>
	<li><strong>ESP32-S3</strong> board for running WireClaw AI</li>
	<li><strong>Wi-Fi antenna</strong> connected to the board’s IPX connector</li>
	<li><strong>Heltec V4</strong> for the Meshtastic side of the bridge</li>
	<li><strong>A good USB cable</strong> for flashing and power</li>
</ul>

<p>The ESP32-S3 used here is the <a href="https://amzn.to/4314Frq">Lonely Binary ESP32-S3</a>, and the Meshtastic radio on the other side of the box is the <a href="https://amzn.to/43Anlyo">Heltec V4</a>.</p>

<p>Once the antenna is connected, you are ready to flash the board and turn it into a tiny network-connected AI appliance.</p>

<figure style="justify-self: center"><img alt="Connecting a USB cable to the ESP32-S3 Lonely Binary board" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FKKV1qUzRDhvVNLiDK8wJ%2Fscreenshots%2F959c15ee-84db-4efb-b030-c2dc44f86e38.webp?alt=media&token=33f36b22-ac74-42df-bdcc-0641687a6ace" style="object-fit: cover;" width="100%">
<figcaption id="cap-75d9d30" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Connecting a cable to the ESP32-S3—this is the moment you’ll want to confirm you’re using the correct USB-C port.</figcaption>
</figure>

<h2 id="flashing-wireclaw-to-the-esp32-s3">Flashing WireClaw to the ESP32-S3</h2>

<p>The flashing process starts at WireClaw’s website. The installer runs in the browser and expects a supported ESP32 board, Chrome, and a USB connection.</p>

<p>The first gotcha is an easy one to miss: on this specific ESP32-S3 board there are <strong>two USB-C ports</strong>. One is for UART and the other is the normal USB port. If the board does not appear in the flasher, check the port first.</p>

<p>That was the exact issue here. Plugging into the UART port did not expose the board the right way. After moving the cable to the USB port, the device appeared as a JTAG USB device and flashing could continue.</p>

<ol>
	<li>Connect the ESP32-S3 with a known good USB cable.</li>
	<li>Open the WireClaw flasher page.</li>
	<li>Select the detected board.</li>
	<li>Install WireClaw and allow the tool to erase the device.</li>
	<li>Wait for the flash process to complete.</li>
</ol>

<p>If needed, you can also manually place the board into boot mode by holding <strong>boot</strong>, pressing <strong>reset</strong>, releasing reset, and then releasing boot.</p>

<figure style="justify-self: center"><img alt="Person holding an ESP32-S3 board during the WireClaw setup" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FKKV1qUzRDhvVNLiDK8wJ%2Fscreenshots%2F37d0ae0e-e77b-4b2c-bb2e-cc79cd7baf7e.webp?alt=media&token=72a7e33a-12b2-4a4f-8922-f40f556194cb" style="object-fit: cover;" width="100%">
<figcaption id="cap-a03dd3d" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Physically connecting the ESP32-S3 for flashing—hands-on setup before the WireClaw process completes.</figcaption>
</figure>

<h2 id="first-boot-connecting-to-the-wireclaw-setup-access-point">First boot: connecting to the WireClaw setup access point</h2>

<p>After flashing, the board boots with no configuration. WireClaw solves that by creating its own temporary Wi-Fi access point called something like <strong>WireClaw Setup</strong>.</p>

<p>Connect to that access point and open the setup page. On some systems this opens automatically. Otherwise, you browse to the local setup address shown by the device. That brings up the configuration form where you tell WireClaw how to reach Wi-Fi, Telegram, and your AI provider.</p>

<figure style="justify-self: center"><img alt="WireClaw Setup captive portal showing Wi‑Fi and AI configuration fields" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FKKV1qUzRDhvVNLiDK8wJ%2Fscreenshots%2Fa7a6ee05-71d5-4958-8dd5-bcb2c13f8fdf.webp?alt=media&token=2bf0ea69-b71f-4f89-80df-be98d4d062ae" style="object-fit: cover;" width="100%">
<figcaption id="cap-31211b5" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">The WireClaw-Setup form is where you configure the captive portal, including your Wi‑Fi network details and AI provider settings.</figcaption>
</figure>

<h2 id="configuring-wi-fi-and-the-ai-model">Configuring Wi-Fi and the AI model</h2>

<p>The configuration page is where the project becomes useful. At minimum, WireClaw needs:</p>

<ul>
	<li>Your Wi-Fi SSID</li>
	<li>Your Wi-Fi password</li>
	<li>An API key for your AI provider</li>
	<li>The model name</li>
	<li>The API URL</li>
	<li>A device name</li>
</ul>

<p>In this setup, the AI backend used was DeepSeek. The API URL entered was the DeepSeek chat completions endpoint, and the chosen model was <strong>DeepSeekChat</strong>.</p>

<p>If you are already using internet services alongside Meshtastic, this type of cloud link will feel familiar. It is a different mechanism to MQTT, but the idea of extending your network beyond pure radio range is very much in the same spirit as <a href="https://www.lorameshdevices.com/blog/meshtastic/meshtastic-mqtt-talk-globally-beyond-lora-range.html">using Meshtastic MQTT to communicate globally</a>.</p>

<p>The device also gets a name. In the example here, it was named something like <strong>WireClaw VZH</strong>, which then shows up in status and local network access later.</p>

<figure style="justify-self: center"><img alt="WireClaw setup form with the model field set for DeepSeek chat and fields for Wi‑Fi and device name" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FKKV1qUzRDhvVNLiDK8wJ%2Fscreenshots%2F12c3b6a9-caa7-4717-bd58-37a7333c8224.webp?alt=media&token=0d1cbb07-94ab-498d-8670-11e9dc137347" style="object-fit: cover;" width="100%">
<figcaption id="cap-7c0c7bc" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">On the WireClaw setup page, you configure the AI model (DeepSeek in this example), along with Wi‑Fi and the device name.</figcaption>
</figure>

<h2 id="setting-up-telegram-with-botfather-and-idbot">Setting up Telegram with BotFather and IDBot</h2>

<p>Telegram integration is one of the nicest parts of WireClaw because it gives you a simple chat interface to your hardware. To make that work, you need two values:</p>

<ul>
	<li><strong>Telegram bot token</strong></li>
	<li><strong>Telegram chat ID</strong></li>
</ul>

<p>The bot token comes from <strong>BotFather</strong>. You create a new bot using the <strong>/newbot</strong> command, give it a name, and Telegram returns the token.</p>

<p>The chat ID comes from <strong>IDBot</strong>. That gives you either your personal ID or the channel ID you want to use for notifications.</p>

<p>Those values get entered into the WireClaw configuration page along with a timezone. Once everything is filled in, save the configuration and reboot the device.</p>

<figure style="justify-self: center"><img alt="BotFather Telegram chat showing the /newbot command" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FKKV1qUzRDhvVNLiDK8wJ%2Fscreenshots%2F3f55e1a8-a392-436f-bdbd-3a657948c8c4.webp?alt=media&token=cba133b2-a8f3-4e14-8b7d-fdaab2b0485f" style="object-fit: cover;" width="100%">
<figcaption id="cap-1df24cf" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">BotFather chat clearly shows the /newbot flow entry, which is part of the process for obtaining the bot token used by WireClaw.</figcaption>
</figure>

<h2 id="after-reboot-local-dashboard-and-device-status">After reboot: local dashboard and device status</h2>

<p>Once the configuration is saved, reconnect to your normal Wi-Fi network and reset the device. At that point, WireClaw comes up on your LAN and reports back through Telegram that it has started.</p>

<p>It also exposes a local dashboard via IP address or local DNS name. Inside that dashboard you can inspect:</p>

<ul>
	<li><strong>Configuration</strong></li>
	<li><strong>Prompt</strong></li>
	<li><strong>Memory</strong></li>
	<li><strong>Devices</strong></li>
	<li><strong>Rules</strong></li>
	<li><strong>Status</strong></li>
</ul>

<p>On the ESP32-S3 used here, WireClaw detected built-in devices including:</p>

<ul>
	<li>An <strong>internal temperature sensor</strong></li>
	<li>A <strong>clock</strong></li>
	<li>An <strong>RGB LED</strong></li>
</ul>

<figure style="justify-self: center"><img alt="Telegram conversation showing WireClaw bot responses about mesh messages and connectivity" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FKKV1qUzRDhvVNLiDK8wJ%2Fscreenshots%2Fa7c2f8e6-697d-4c51-89e1-5e01f8d424df.webp?alt=media&token=8ab7f54c-f62b-43ad-96b4-d67665aff186" style="object-fit: cover;" width="100%">
<figcaption id="cap-b98db1d" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Telegram chat with the WireClaw bot: commands are sent and the bot replies with mesh activity and where the ESP32-S3 is reaching (including the config URL).</figcaption>
</figure>

<h2 id="controlling-the-esp32-hardware-from-telegram">Controlling the ESP32 hardware from Telegram</h2>

<p>This is where the whole thing starts to feel a bit magical. You can simply send a plain-language command in Telegram and the AI maps that to the actual hardware device names.</p>

<p>For example, the board exposes an LED called <strong>RGB_LED</strong>. Sending a command such as <strong>set the RGB_LED to blue</strong> changes the on-board LED immediately. The AI then responds in Telegram confirming that it made the change.</p>

<p>The same works for red, green, and so on. That alone is a nice proof that WireClaw is reading the device list correctly and can trigger real actions from a normal chat.</p>

<figure style="justify-self: center"><img alt="Telegram chat with WireClaw bot showing commands and responses for controlling the RGB LED" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FKKV1qUzRDhvVNLiDK8wJ%2Fscreenshots%2F9fd25f17-565a-4524-8680-c079c66e20f5.webp?alt=media&token=0fb3f0bf-34a2-4cdf-88a6-fe49cbd4cc86" style="object-fit: cover;" width="100%">
<figcaption id="cap-dcc2c3e" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Telegram conversation with WireClaw—this is where you send commands like setting the RGB LED and WireClaw confirms the action back in chat.</figcaption>
</figure>

<h1>Teaching the AI simpler names</h1>

<p>WireClaw is not just executing commands. It is also building memory. So instead of always using the exact hardware label, you can tell it:</p>

<p><strong>From now on call the RGB_LED LED</strong></p>

<p>After that, the AI remembers the alias. Then you can simply say:</p>

<p><strong>Set the LED to green</strong></p>

<p>and it knows what you mean. That memory shows up in the dashboard as well, so you can actually see that the alias was stored.</p>

<figure style="justify-self: center"><img alt="WireClaw Telegram chat confirming RGB_LED actions and switching to an alias for the LED" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FKKV1qUzRDhvVNLiDK8wJ%2Fscreenshots%2Fee718b00-cdcc-401d-908f-d3f368b7ea7a.webp?alt=media&token=7ed1cc90-d47c-4130-943a-6ec91b073118" style="object-fit: cover;" width="100%">
<figcaption id="cap-e755074" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">WireClaw confirms the LED color and then shows how it will start using your simpler alias for the RGB_LED going forward.</figcaption>
</figure>

<h2 id="reading-sensor-values-through-natural-language">Reading sensor values through natural language</h2>

<p>The same idea works with sensor data. The board has an internal temperature reading exposed as something like <strong>internal_temp</strong>. Ask the AI what the internal temperature is, and it returns the current value, around 36°C in the example shown.</p>

<p>Then, just as with the LED, you can rename it:</p>

<p><strong>From now on call the internal temp temp</strong></p>

<p>After that, asking <strong>What is the temp?</strong> works exactly as expected. Again, the alias is stored in memory.</p>

<h2 id="creating-automation-rules-with-plain-english">Creating automation rules with plain English</h2>

<p>One of the most useful features in WireClaw is that it can create rules from natural language. Instead of writing logic manually, you describe what you want.</p>

<p>A simple example used here was:</p>

<p><strong>If the temp goes above 36C, send me a message</strong></p>

<p>WireClaw interpreted that as a monitoring rule. It wanted the Telegram chat ID for the notification target, even though the ID had already been configured. That is one of those moments where you can see the AI is useful, but not infallible. Supplying the chat ID manually solved it immediately.</p>

<p>Once accepted, the AI created a rule to check the chip temperature every five seconds and send a Telegram alert if the value exceeded 36°C.</p>

<p>The generated rule then appeared in the dashboard under the <strong>Rules</strong> section.</p>

<figure style="justify-self: center"><img alt="Telegram chat confirming WireClaw monitoring rule for internal temperature above 36°C" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FKKV1qUzRDhvVNLiDK8wJ%2Fscreenshots%2F94972ccc-6705-4799-8a3c-93b6833fe98e.webp?alt=media&token=8924df80-34dc-4e45-bff9-e8da7df16f4d" style="object-fit: cover;" width="100%">
<figcaption id="cap-9a233dd" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">WireClaw finalizes the monitoring rule and indicates it will notify you repeatedly while the temperature stays above 36°C.</figcaption>
</figure>

<h1>Why this matters beyond a demo</h1>

<p>This is not limited to onboard devices like LEDs and temperature sensors. The same approach can be used for GPIO pins and external hardware. The basic pattern is:</p>

<ul>
	<li>Read a condition on one pin or sensor</li>
	<li>Trigger an action on another pin or service</li>
	<li>Notify you through Telegram</li>
</ul>

<p>So you could define logic such as:</p>

<ul>
	<li>If input 5 goes high, set output 7 high</li>
	<li>If a threshold is crossed, send an alert</li>
	<li>If a device state changes, report it remotely</li>
</ul>

<p>That makes the ESP32 a very capable automation companion for Meshtastic gear, especially when you want a self-contained system instead of another Linux box to maintain.</p>

<h2 id="reboots-persistence-and-why-this-is-practical">Reboots, persistence, and why this is practical</h2>

<p>A project like this only becomes genuinely useful if it survives a power cycle. WireClaw does. After unplugging and reconnecting the board, it boots back up, rejoins Wi-Fi, reconnects to Telegram, and keeps its stored memory and rules.</p>

<p>Asking it something like <strong>What are your rules?</strong> after a reboot confirms that the configuration is still there. That persistence is a big deal, because it turns the board from a fun experiment into something you can actually deploy.</p>

<figure style="justify-self: center"><img alt="ESP32-S3 module held with hands while connected to the setup wiring" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FKKV1qUzRDhvVNLiDK8wJ%2Fscreenshots%2Fd66919a1-708d-4340-9dd8-8d2bf4164779.webp?alt=media&token=71fcc47a-53dc-4081-9a64-8b8d7130a375" style="object-fit: cover;" width="100%">
<figcaption id="cap-b92cff2" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Clear view of the ESP32-S3 module connected to the cable, helping reinforce that the board is the “smart controller” in this setup.</figcaption>
</figure>

<h2 id="how-this-fits-into-a-larger-meshtastic-setup">How this fits into a larger Meshtastic setup</h2>

<p>On its own, WireClaw gives you AI-assisted control and remote messaging on a cheap microcontroller. Combined with a Heltec V4, it becomes something more interesting for <strong>Meshtastic</strong>: a dedicated bridge between local mesh traffic and internet-based messaging.</p>

<p>That is especially attractive if you want to expand what your Meshtastic network can do without dragging in a full computer. It is also a nice complement to other techniques such as <a href="https://www.lorameshdevices.com/blog/meshtastic/what-is-mqtt-for-meshtastic.html">MQTT for Meshtastic</a>, where cloud connectivity can extend the usefulness of the mesh far beyond direct radio range.</p>

<p>If you are building out your own hardware stack, you can also browse more <a href="https://www.lorameshdevices.com/meshtastic-devices/">Meshtastic devices here</a>.</p>

<h2 id="what-part-one-proves">What part one proves</h2>

<p>By the end of this setup, the ESP32-S3 is doing all of the following:</p>

<ul>
	<li>Running WireClaw AI locally on the microcontroller</li>
	<li>Connecting to Wi-Fi</li>
	<li>Talking to a cloud AI model through API calls</li>
	<li>Receiving commands in Telegram</li>
	<li>Controlling onboard hardware like the RGB LED</li>
	<li>Reading onboard sensor values like temperature</li>
	<li>Remembering aliases and conversational context</li>
	<li>Creating and storing automation rules</li>
	<li>Persisting that configuration across reboots</li>
</ul>

<p>That is already a powerful little platform before even getting into the full Meshtastic bridge wiring. The second half of the project is where the ESP32 starts taking control of the attached Meshtastic node and forwarding network messages, but the foundation is all here.</p>

<h2 id="faq">FAQ</h2>

<div data-faq-question="true">
<p>Do I need a Raspberry Pi to bridge Meshtastic to Telegram in this setup?</p>
</div>

<div data-faq-answer="true">
<p>No. That is the whole point of this build. The bridge logic is moved onto a small ESP32-S3 running WireClaw AI, paired with a Meshtastic device such as a Heltec V4.</p>
</div>

<div data-faq-question="true">
<p>What board was used to run WireClaw?</p>
</div>

<div data-faq-answer="true">
<p>An ESP32-S3 board from Lonely Binary was used. It is a good reference-style board for ESP32 projects and includes Wi-Fi, GPIO, and an onboard RGB LED.</p>
</div>

<div data-faq-question="true">
<p>Does the ESP32-S3 in this project provide the LoRa radio for Meshtastic?</p>
</div>

<div data-faq-answer="true">
<p>No. In this build, the ESP32-S3 is the AI and Wi-Fi side of the system. The Meshtastic radio side is handled by a separate Heltec V4 board.</p>
</div>

<div data-faq-question="true">
<p>What do I need to configure WireClaw after flashing?</p>
</div>

<div data-faq-answer="true">
<p>You need your Wi-Fi SSID and password, an AI provider API key, model name, API URL, a Telegram bot token, and a Telegram chat ID.</p>
</div>

<div data-faq-question="true">
<p>How do I get the Telegram bot token and chat ID?</p>
</div>

<div data-faq-answer="true">
<p>Create the bot with BotFather using the /newbot command to get the token. Use IDBot to retrieve the chat ID you want WireClaw to message.</p>
</div>

<div data-faq-question="true">
<p>Can WireClaw control hardware using normal language?</p>
</div>

<div data-faq-answer="true">
<p>Yes. In the example setup, Telegram commands were used to change the onboard RGB LED color, read internal temperature, rename device labels, and create alert rules without manual scripting.</p>
</div>

<div data-faq-question="true">
<p>Do rules and memory survive a reboot?</p>
</div>

<div data-faq-answer="true">
<p>Yes. After power cycling the board, WireClaw came back online with its saved configuration, stored memory, and automation rules intact.</p>
</div>

<div data-faq-question="true">
<p>Where can I learn more about WireClaw itself?</p>
</div>

<div data-faq-answer="true">
<p>There is a fuller WireClaw walkthrough available here: <a href="https://www.youtube.com/watch?v=EFd0kDA0Oww">full WireClaw video</a>.</p>
</div>]]></content:encoded>
            </item>
                        <item>
                <title><![CDATA[Heltec Wireless Tracker V2 Guide: GPS, MeshCore, and Meshtastic]]></title>
                <link>https://www.lorameshdevices.com/blog/meshcore/heltec-wireless-tracker-v2-guide-gps-meshcore-and-meshtastic.html</link>
                <guid>https://www.lorameshdevices.com/blog/meshcore/heltec-wireless-tracker-v2-guide-gps-meshcore-and-meshtastic.html</guid>
                <pubDate>Tue, 19 May 2026 23:53:18 +0200</pubDate>
                <dc:creator><![CDATA[Vivian van Zyl]]></dc:creator>
                <description><![CDATA[The Heltec Wireless Tracker V2 is one of those little devices that immediately makes sense the moment you pick it up. It is compact, it has the ESP32-S3, it includes built-in GPS, and it feels like it was made to be a proper portable mesh tracker instead of a general-purpose node. 

That is also why I like it. For Meshtastic and MeshCore, this is not really what I would call a great solar node. The ESP32-S3 is not where I would go for ultra-low-power solar deployments. But for a tracker you can throw into a case, carry with you, and actually use on the move, this thing looks very promising. 

I wanted to test the important bits properly: 


	Can it be flashed cleanly on Windows?
	Does Meshtastic work well on it?
	Does MeshCore work well on it?
	And most importantly, does the built-in GPS actually work?


 

Table of Contents


	The hardware: small, tidy, and built for tracking
	Why this is better as a tracker than a solar node
	Windows driver issue: what to do if your PC does not see the Heltec device
	Flashing Meshtastic on the Heltec Wireless Tracker V2
	Initial Meshtastic setup over Bluetooth
	Meshtastic node discovery and what “unknown nodes” means
	Testing the built-in GPS in Meshtastic
	Flashing MeshCore on the Heltec Wireless Tracker V2
	MeshCore setup and pairing
	How MeshCore behaves differently from Meshtastic
	Testing channels and messaging in MeshCore
	Does GPS work in MeshCore too?
	What I liked most about the Heltec Wireless Tracker V2
	Final thoughts
	FAQ


The hardware: small, tidy, and built for tracking

Out of the box, the Heltec Wireless Tracker V2 is a nice compact little unit. It includes: 


	ESP32-S3 processor
	Built-in GPS/GNSS
	LoRa antenna connection
	External GPS antenna connection
	Power and solar connectors
	A small onboard display


It also ships with the usual tiny LoRa antenna in the box. I used that just to get started, but realistically I would swap it for something better later. 


In the box, you can clearly see the Tracker V2’s connectors and the onboard display—use this as a quick orientation before flashing firmware.


On the board, one side is marked for LoRa and the other for GNSS. That makes setup straightforward. Clip the LoRa antenna on, connect a known-good USB cable, and you are ready to start flashing firmware. 

One practical note here: use a USB cable that you know supports data. A lot of flashing issues end up being cable issues. 

Why this is better as a tracker than a solar node

This is worth repeating because it matters when choosing hardware. The Tracker V2 uses an ESP32-S3, which is great for capability, but not ideal for super low power always-on solar use. If your goal is a permanently deployed solar repeater or remote node, there are better choices for that job. 

But if your goal is a portable tracking node with built-in GPS in a very small package, this starts looking like a really strong option. 

Windows driver issue: what to do if your PC does not see the Heltec device

I normally do this kind of flashing from a Mac, but this time I used Windows. Right away, I ran into one of the classic Windows problems: the machine did not recognize the device properly at first. 

If that happens, the fix is usually to install the correct Silicon Labs driver. I put together a write-up for that on the LoraMeshDevices Hub, because this comes up often enough that it is worth checking first. 

The basic idea is simple: 


	Plug the device in.
	If Windows does not recognize it, install the Silicon Labs universal Windows driver.
	Reconnect the device and try again.


If your Heltec is invisible to the flasher, do not fight the firmware tools first. Fix the driver layer first. 


The key point: the missing Silicon Labs CP210x driver prevents Windows from communicating with the Heltec board—so flashing can’t start until the driver is installed.


Flashing Meshtastic on the Heltec Wireless Tracker V2

For Meshtastic, I used the web flasher at flasher.meshtastic.org. The process is mostly straightforward, but there are a couple of gotchas. 


Select the correct device


In the flasher, choose: 


	Heltec
	Wireless Tracker V2


One wrinkle here is that because this hardware is still relatively new, the appropriate firmware may only be available in the alpha channel rather than the normal stable or beta selections. That was the case when I tested it. 

So if the flash button is not available, check the firmware channel. Switching to alpha made the correct firmware selectable. 


This shows the same core flashing stage: the Tracker V2 is selected and you’re now on the firmware selection step before clicking Flash.



Do a full erase


I recommend doing a full flash erase to wipe the factory firmware. The device comes with factory test firmware loaded, and I prefer starting clean. 

The sequence I used was: 


	Select the Tracker V2 in the flasher
	Choose the latest alpha build
	Enable full erase
	Click erase and flash
	Select the correct serial/JTAG device when the browser prompts for it



Avoid the auto-detect trap


This is one of those little annoyances that wastes time. The browser auto-detect option has never been particularly reliable for me. It can leave the serial port open or confuse the process. 

If flashing fails after trying auto-detect, refresh the page, manually select the device again, and start over. That solved it here. 


The Meshtastic web flasher is running the “Full Erase and Install” process, readying the Tracker V2 for a fresh install before rebooting into Meshtastic.


Once the flasher reaches the message about hard resetting via RTS pin, the firmware is loaded and the device should reboot into Meshtastic. 

Initial Meshtastic setup over Bluetooth

After flashing, the Tracker V2 boots into Meshtastic and can be configured either using the onboard buttons or through the Meshtastic mobile app. The buttons do work, but the screen is tiny, so I prefer the app. 

Using Bluetooth pairing was easy enough: 


	Open the Meshtastic app
	Scan for nearby devices
	Select the Tracker V2
	Enter the Bluetooth pairing code shown on the device display



The Bluetooth pairing dialog appears—this is the moment you enter the pairing code shown on the device display.


Once connected, I went straight into configuration. 


Set your LoRa region


In the app, go into LoRa settings and select the correct region. In my case, that was United States. 

I left the rest of the radio configuration alone and kept the preset at LongFast, which is what we use here. That may be different depending on where you are. 

After saving, the device reboots. That is normal. 


Rename the node


I also renamed the node so it would show up more cleanly in the network. I set the user name to something recognizable and left the short name simple. 

Again, saving causes another reboot. 


After saving the new node details, the app confirms the update was applied—so the Tracker V2 should appear with the cleaner name going forward.


Meshtastic node discovery and what “unknown nodes” means

When the Tracker V2 first came online, it had already heard other nodes nearby, but their names had not been resolved yet. In the app this can look confusing, especially if you are expecting a full list right away. 

If you enable show unknown devices, you can see nodes the device has already heard but has not fully identified yet. As the app and node continue working in the background, those unknown entries gradually resolve into named nodes. 

So if it looks like your tracker is alone at first, give it a few minutes. It may simply still be resolving the network around it. 


The Nodes screen includes options for how discovered devices are shown, including the setting that reveals nodes that haven’t fully identified yet.


Testing the built-in GPS in Meshtastic

The built-in GPS is one of the main reasons this device is interesting, so I wanted to verify whether it was truly working and not just listed on paper. 

Inside the Meshtastic device configuration, I checked the Position settings. The app showed GPS mode as enabled, which was a good sign that the hardware had been detected correctly. 

At first, though, there was no position fix. 

That is normal for a fresh GPS start, especially indoors. On the device itself, the GPS screen showed: 


	No satellites
	No GPS lock
	No sats



At the start of the GPS test the tracker has no satellites and no lock yet—so it will not display a position fix until it has a clearer view of the sky.


I moved the device closer to a window, then eventually took it outside for a few minutes. After roughly five minutes, it started locking onto satellites. 

Once it had line of sight to the sky, the GPS came to life properly. It initially showed up to 22 satellites, and once back indoors it was still holding onto around 9. That is actually very solid for a small integrated tracker. 


After moving closer to better reception, the GPS screen begins showing data and the tracker is progressing toward a proper satellite lock.


With GPS working, the device updated time correctly and location became available inside the Meshtastic app. 


Location privacy settings in Meshtastic


Meshtastic gives you control over how precisely your location is shared. In channel settings, you can choose to share your precise position or blur it with a privacy radius. In my setup, I could use the slider to announce a location within a given radius, rather than an exact point. 

That is a nice feature if you want tracking functionality without broadcasting your exact position to everyone on the mesh. 


Radio performance check


I also tested a traceroute to a nearby node. The Tracker V2 handled that fine, and one nice detail here is that this newer hardware can run at 28 dB, compared to 22 dB on the earlier Tracker V1. So you are getting a little more punch from the radio side as well. 

At this point, Meshtastic on the Heltec Wireless Tracker V2 was working well: 


	Flashed successfully
	Bluetooth paired successfully
	Region configured correctly
	Node discovery working
	GPS working
	Traceroute working


Flashing MeshCore on the Heltec Wireless Tracker V2

Next I wanted to test MeshCore, because a tracker like this is even more interesting when it works cleanly across both ecosystems. 

For that, I used the MeshCore flasher at meshcore.io/flasher. 


Select the right MeshCore firmware target


In the supported devices list, choose the Heltec Tracker V2. Then pick the mode you want. 

For most people using this with a phone, the right option is Companion via Bluetooth. That is the one I selected. 

I also chose to erase the device before flashing so there would not be any leftovers from the Meshtastic installation. 


With the Heltec Wireless Tracker v2 selected, the flasher prompts you to choose the firmware role—here you can select Companion over Bluetooth (the option used in this guide).



If MeshCore will not flash, use bootloader mode


This is the big troubleshooting point for MeshCore on this device. 

If Meshtastic is already loaded, the flasher may not immediately take over. In my case, the device showed up with the existing firmware identity and refused to flash cleanly. 

The fix was to manually put the Tracker V2 into flashing mode: 


	Press and hold the boot button
	Press the reset button
	Release reset
	Release boot
	Retry the flash process


Once that worked, the device appeared again as the proper JTAG/flash device, and the MeshCore flashing process continued normally. 


After entering the correct flashing/bootloader mode, the MeshCore flasher is ready to erase and flash—this screen matches the troubleshooting success path.


After flashing completed and the device was reset, it booted into MeshCore. The first boot took a little longer, which is something I have seen on other MeshCore nodes as well. 

MeshCore setup and pairing

After the firmware loaded, the device came up with MeshCore version 0.15 and used the color display properly, which was a nice touch. 


You can see MeshCore status clearly on the small onboard display, including the message counter and pin value.


I then opened the MeshCore app and paired over Bluetooth. One practical Android troubleshooting tip: if pairing acts weird or does not reconnect properly, completely kill the app and start it again. That solved one hiccup for me during setup. 

After pairing, I configured: 


	Device name
	Preset region as USA/Canada
	Everything else left mostly at defaults


How MeshCore behaves differently from Meshtastic

This part matters because MeshCore is not just “Meshtastic with different menus.” The discovery model is different. 

In MeshCore, if you do not want to be discovered, you do not have to be discovered. Devices do not automatically reveal themselves the same way. Repeaters may only announce themselves occasionally, even as infrequently as every 12 hours. 

So instead of passively expecting the app to fill up with nodes, you actively do a couple of things: 


	Send an advert to tell others you are there
	Discover repeaters from the tools menu



This menu is where you trigger MeshCore’s active discovery behavior—so instead of passively listing nodes, you request repeaters using the tools.


When I ran repeater discovery, the app found several repeaters in the area and added them. Those are infrastructure nodes for message routing, not necessarily people I can chat with directly. 

Testing channels and messaging in MeshCore

To test real traffic, I used two methods. 


1. Public channel messaging


I sent a simple “Hello” on the public channel. The message was repeated by nearby infrastructure, which confirmed that the device was transmitting correctly. 


2. A custom testing channel


I also added a channel called testing. MeshCore makes this pretty easy, and it even provides a QR code so someone else can quickly join the same channel. 


The custom testing channel view after setup—now the channel is defined so you can send your test message and wait for a response.


After sending a test message on that channel, I got a response back from an autobot I already had set up there. That was enough to confirm the node could both send and receive successfully. 

To add an actual person as a contact in MeshCore, they need to send an advert and you need to add them. I triggered an advert from one of my other home devices, and once it appeared, I could message it directly. 


The companion chat view shows the message being sent—this is the moment where the Tracker V2 is no longer just “configured,” but actively communicating with a companion contact.


At that point the Tracker V2 was functioning as a full MeshCore companion node with: 


	Repeaters discovered
	Public channel access
	Custom testing channel added
	Direct companion contact available


Does GPS work in MeshCore too?

Yes, and that was the last thing I specifically wanted to verify. 

Inside the MeshCore settings, I enabled the position feature. Based on the earlier Meshtastic test, I expected I might need to take it outside again, but in this case it already had enough information to resolve position and place itself on the map. 


In MeshCore, the Tracker V2’s settings show the position fields (latitude/longitude) and location-sharing options—exactly what you’re checking when verifying integrated GPS works.


That confirmed the built-in GPS is not just functioning under Meshtastic. It also works in MeshCore, which makes this little device a lot more attractive as a true all-in-one portable tracker. 

What I liked most about the Heltec Wireless Tracker V2

After testing both firmware options, the Tracker V2 came away looking really strong. 

The highlights for me were: 


	Very compact form factor
	Built-in GPS instead of needing an external GPS module
	Stronger radio output than the earlier Tracker V1
	Fast firmware flashing compared to some older Heltec hardware
	Works with both Meshtastic and MeshCore
	Color screen support in MeshCore



A wider, clearer view of the connected Heltec Wireless Tracker V2 module—this is the “neat and contained” setup that makes it feel like a real travel tracker.


It really feels like a purpose-built tracker node. Put it in a decent case with a battery and you have something small, capable, and genuinely useful for portable mesh networking. 

I especially like that the GPS is integrated. A lot of other setups end up as a pile of extra modules and wires. This keeps things neat. 

Final thoughts

I think the Heltec Wireless Tracker V2 is one of the better compact tracker nodes available right now for Meshtastic and MeshCore. It is not the node I would choose for a long-term solar deployment, but for a carry node, field tracker, or portable companion, it makes a lot of sense. 

The built-in GPS works. Meshtastic works. MeshCore works. The radio performance looks good. And once it is in a proper case, it should make an excellent little travel node. 

If you are comparing options for portable mesh hardware, this one definitely deserves a look. 

FAQ



Is the Heltec Wireless Tracker V2 good for solar deployments?




Not really as a first choice. Because it uses the ESP32-S3, it is better suited as a portable tracker than as an ultra-low-power solar node. If your goal is a solar repeater or always-on remote node, lower-power hardware may be a better fit. 




Does the Heltec Wireless Tracker V2 have built-in GPS?




Yes. The built-in GPS worked in testing under both Meshtastic and MeshCore. It took a few minutes outdoors to get the first proper lock, which is normal for a fresh GPS start, but after that it performed well. 




Why is Windows not recognizing my Heltec Tracker V2?




The most likely issue is a missing driver. Installing the Silicon Labs universal Windows driver usually fixes the problem. Also make sure you are using a proper data USB cable. 




Which Meshtastic firmware channel should I use for the Tracker V2?




Because the hardware is relatively new, the correct firmware may only be available in the alpha channel at times. If the normal selection does not show a flashable version for the Tracker V2, check alpha. 




How do I put the Heltec Tracker V2 into flashing mode?




Hold the boot button, press reset, release reset, then release boot. After that, retry flashing. This is especially useful when switching from one firmware to another and the device will not flash normally. 




Does MeshCore work on the Heltec Wireless Tracker V2?




Yes. MeshCore flashed successfully, paired over Bluetooth, discovered repeaters, handled channel messaging, and used the built-in GPS. The color display also worked nicely in MeshCore. 




Is the Tracker V2 better than the Tracker V1?




In the areas tested here, yes. One of the improvements mentioned was radio output, with the newer hardware running at 28 dB compared to 22 dB on the earlier Tracker V1. The integrated GPS and overall compact design also make it very appealing. 


  
]]></description>
                <content:encoded><![CDATA[<p>The <a href="https://www.lorameshdevices.com/esp32-wireless-tracker-v2-with-sx1262-uc6580-gnss-wi-fi-bluetooth-meshtastic-meshcore-and-lorawan-compatible-for-asset-monitoring-industrial-outdoor-applications-tracker-v2-esp32-s3">Heltec Wireless Tracker V2</a> is one of those little devices that immediately makes sense the moment you pick it up. It is compact, it has the ESP32-S3, it includes built-in GPS, and it feels like it was made to be a proper portable mesh tracker instead of a general-purpose node.</p>

<p>That is also why I like it. For Meshtastic and MeshCore, this is not really what I would call a great solar node. The ESP32-S3 is not where I would go for ultra-low-power solar deployments. But for a tracker you can throw into a case, carry with you, and actually use on the move, this thing looks very promising.</p>

<p>I wanted to test the important bits properly:</p>

<ul>
	<li>Can it be flashed cleanly on Windows?</li>
	<li>Does Meshtastic work well on it?</li>
	<li>Does MeshCore work well on it?</li>
	<li>And most importantly, does the built-in GPS actually work?</li>
</ul>

<p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/nG-iT84pvW4" style="display: block; width: 100%; aspect-ratio: 16/9;" title="YouTube video player"></iframe></p>

<h2>Table of Contents</h2>

<ul>
	<li><a href="#the-hardware-small-tidy-and-built-for-tracking">The hardware: small, tidy, and built for tracking</a></li>
	<li><a href="#why-this-is-better-as-a-tracker-than-a-solar-node">Why this is better as a tracker than a solar node</a></li>
	<li><a href="#windows-driver-issue-what-to-do-if-your-pc-does-not-see-the-heltec-device">Windows driver issue: what to do if your PC does not see the Heltec device</a></li>
	<li><a href="#flashing-meshtastic-on-the-heltec-wireless-tracker-v2">Flashing Meshtastic on the Heltec Wireless Tracker V2</a></li>
	<li><a href="#initial-meshtastic-setup-over-bluetooth">Initial Meshtastic setup over Bluetooth</a></li>
	<li><a href="#meshtastic-node-discovery-and-what-unknown-nodes-means">Meshtastic node discovery and what “unknown nodes” means</a></li>
	<li><a href="#testing-the-built-in-gps-in-meshtastic">Testing the built-in GPS in Meshtastic</a></li>
	<li><a href="#flashing-meshcore-on-the-heltec-wireless-tracker-v2">Flashing MeshCore on the Heltec Wireless Tracker V2</a></li>
	<li><a href="#meshcore-setup-and-pairing">MeshCore setup and pairing</a></li>
	<li><a href="#how-meshcore-behaves-differently-from-meshtastic">How MeshCore behaves differently from Meshtastic</a></li>
	<li><a href="#testing-channels-and-messaging-in-meshcore">Testing channels and messaging in MeshCore</a></li>
	<li><a href="#does-gps-work-in-meshcore-too">Does GPS work in MeshCore too?</a></li>
	<li><a href="#what-i-liked-most-about-the-heltec-wireless-tracker-v2">What I liked most about the Heltec Wireless Tracker V2</a></li>
	<li><a href="#final-thoughts">Final thoughts</a></li>
	<li><a href="#faq">FAQ</a></li>
</ul>

<h2 id="the-hardware-small-tidy-and-built-for-tracking">The hardware: small, tidy, and built for tracking</h2>

<p>Out of the box, the Heltec Wireless Tracker V2 is a nice compact little unit. It includes:</p>

<ul>
	<li><strong>ESP32-S3 processor</strong></li>
	<li><strong>Built-in GPS/GNSS</strong></li>
	<li><strong>LoRa antenna connection</strong></li>
	<li><strong>External GPS antenna connection</strong></li>
	<li><strong>Power and solar connectors</strong></li>
	<li><strong>A small onboard display</strong></li>
</ul>

<p>It also ships with the usual tiny LoRa antenna in the box. I used that just to get started, but realistically I would swap it for something better later.</p>

<figure style="justify-self: center"><img alt="Heltec Wireless Tracker V2 showing connector area and onboard display in packaging" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FG2XduXewK98fnmVEr5Of%2Fscreenshots%2F006f0111-f1a0-4fbe-83ff-243c3c120ebd.webp?alt=media&token=9805ef76-cc64-4dce-8745-d9228a5f6f8c" style="object-fit: cover;" width="100%">
<figcaption id="cap-c233323" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">In the box, you can clearly see the Tracker V2’s connectors and the onboard display—use this as a quick orientation before flashing firmware.</figcaption>
</figure>

<p>On the board, one side is marked for LoRa and the other for GNSS. That makes setup straightforward. Clip the LoRa antenna on, connect a known-good USB cable, and you are ready to start flashing firmware.</p>

<p>One practical note here: use a USB cable that you know supports data. A lot of flashing issues end up being cable issues.</p>

<h2 id="why-this-is-better-as-a-tracker-than-a-solar-node">Why this is better as a tracker than a solar node</h2>

<p>This is worth repeating because it matters when choosing hardware. The Tracker V2 uses an ESP32-S3, which is great for capability, but not ideal for super low power always-on solar use. If your goal is a permanently deployed solar repeater or remote node, there are better choices for that job.</p>

<p>But if your goal is a <strong>portable tracking node</strong> with built-in GPS in a very small package, this starts looking like a really strong option.</p>

<h2 id="windows-driver-issue-what-to-do-if-your-pc-does-not-see-the-heltec-device">Windows driver issue: what to do if your PC does not see the Heltec device</h2>

<p>I normally do this kind of flashing from a Mac, but this time I used Windows. Right away, I ran into one of the classic Windows problems: the machine did not recognize the device properly at first.</p>

<p>If that happens, the fix is usually to install the correct Silicon Labs driver. I put together a write-up for that on the <a href="https://hub.lorameshdevices.com/">LoraMeshDevices Hub</a>, because this comes up often enough that it is worth checking first.</p>

<p>The basic idea is simple:</p>

<ol>
	<li>Plug the device in.</li>
	<li>If Windows does not recognize it, install the Silicon Labs universal Windows driver.</li>
	<li>Reconnect the device and try again.</li>
</ol>

<p>If your Heltec is invisible to the flasher, do not fight the firmware tools first. Fix the driver layer first.</p>

<figure style="justify-self: center"><img alt="LoraMeshDevices Hub article describing the cause and steps to install the Silicon Labs CP210X driver for Heltec on Windows" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FG2XduXewK98fnmVEr5Of%2Fscreenshots%2F74203ae3-c6da-4aa2-a52e-ede00e752bc5.webp?alt=media&token=d655c8c9-6c7a-4172-bea2-e61bb3da3ad3" style="object-fit: cover;" width="100%">
<figcaption id="cap-874be59" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">The key point: the missing Silicon Labs CP210x driver prevents Windows from communicating with the Heltec board—so flashing can’t start until the driver is installed.</figcaption>
</figure>

<h2 id="flashing-meshtastic-on-the-heltec-wireless-tracker-v2">Flashing Meshtastic on the Heltec Wireless Tracker V2</h2>

<p>For Meshtastic, I used the web flasher at <strong>flasher.meshtastic.org</strong>. The process is mostly straightforward, but there are a couple of gotchas.</p>

<h1>Select the correct device</h1>

<p>In the flasher, choose:</p>

<ul>
	<li><strong>Heltec</strong></li>
	<li><strong>Wireless Tracker V2</strong></li>
</ul>

<p>One wrinkle here is that because this hardware is still relatively new, the appropriate firmware may only be available in the <strong>alpha</strong> channel rather than the normal stable or beta selections. That was the case when I tested it.</p>

<p>So if the flash button is not available, check the firmware channel. Switching to alpha made the correct firmware selectable.</p>

<figure style="justify-self: center"><img alt="Meshtastic Web Flasher firmware selection step for Heltec Wireless Tracker V2" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FG2XduXewK98fnmVEr5Of%2Fscreenshots%2F7b12c2f3-f2a4-41a7-9087-5e81fe985658.webp?alt=media&token=e20879a3-6ab5-497f-9404-65872312b920" style="object-fit: cover;" width="100%">
<figcaption id="cap-2c3343a" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">This shows the same core flashing stage: the Tracker V2 is selected and you’re now on the firmware selection step before clicking Flash.</figcaption>
</figure>

<h1>Do a full erase</h1>

<p>I recommend doing a full flash erase to wipe the factory firmware. The device comes with factory test firmware loaded, and I prefer starting clean.</p>

<p>The sequence I used was:</p>

<ol>
	<li>Select the Tracker V2 in the flasher</li>
	<li>Choose the latest alpha build</li>
	<li>Enable full erase</li>
	<li>Click erase and flash</li>
	<li>Select the correct serial/JTAG device when the browser prompts for it</li>
</ol>

<h1>Avoid the auto-detect trap</h1>

<p>This is one of those little annoyances that wastes time. The browser auto-detect option has never been particularly reliable for me. It can leave the serial port open or confuse the process.</p>

<p>If flashing fails after trying auto-detect, refresh the page, manually select the device again, and start over. That solved it here.</p>

<figure style="justify-self: center"><img alt="Meshtastic web flasher showing Heltec Wireless Tracker V2 “Full Erase and Install” with console output" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FG2XduXewK98fnmVEr5Of%2Fscreenshots%2Ff7e0d386-cba0-4559-8e38-d11f93fbefd0.webp?alt=media&token=f22d75ac-fc10-49b5-b4e8-cbc84473ed5e" style="object-fit: cover;" width="100%">
<figcaption id="cap-546d191" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">The Meshtastic web flasher is running the “Full Erase and Install” process, readying the Tracker V2 for a fresh install before rebooting into Meshtastic.</figcaption>
</figure>

<p>Once the flasher reaches the message about <strong>hard resetting via RTS pin</strong>, the firmware is loaded and the device should reboot into Meshtastic.</p>

<h2 id="initial-meshtastic-setup-over-bluetooth">Initial Meshtastic setup over Bluetooth</h2>

<p>After flashing, the Tracker V2 boots into Meshtastic and can be configured either using the onboard buttons or through the Meshtastic mobile app. The buttons do work, but the screen is tiny, so I prefer the app.</p>

<p>Using Bluetooth pairing was easy enough:</p>

<ol>
	<li>Open the Meshtastic app</li>
	<li>Scan for nearby devices</li>
	<li>Select the Tracker V2</li>
	<li>Enter the Bluetooth pairing code shown on the device display</li>
</ol>

<figure style="justify-self: center"><img alt="Meshtastic Bluetooth pairing PIN dialog on smartphone while connecting to Heltec Wireless Tracker V2" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FG2XduXewK98fnmVEr5Of%2Fscreenshots%2Fd59ceac0-1f7f-4a66-8038-a98000368f9a.webp?alt=media&token=43c69909-10cb-419d-aa6b-0b906e8e8040" style="object-fit: cover;" width="100%">
<figcaption id="cap-15ac934" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">The Bluetooth pairing dialog appears—this is the moment you enter the pairing code shown on the device display.</figcaption>
</figure>

<p>Once connected, I went straight into configuration.</p>

<h1>Set your LoRa region</h1>

<p>In the app, go into LoRa settings and select the correct region. In my case, that was <strong>United States</strong>.</p>

<p>I left the rest of the radio configuration alone and kept the preset at <strong>LongFast</strong>, which is what we use here. That may be different depending on where you are.</p>

<p>After saving, the device reboots. That is normal.</p>

<h1>Rename the node</h1>

<p>I also renamed the node so it would show up more cleanly in the network. I set the user name to something recognizable and left the short name simple.</p>

<p>Again, saving causes another reboot.</p>

<figure style="justify-self: center"><img alt="Meshtastic app shows 'Delivery confirmed' after saving node/user configuration for Heltec Wireless Tracker V2" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FG2XduXewK98fnmVEr5Of%2Fscreenshots%2Fc47d3884-28bb-4f45-b870-bbc312e73600.webp?alt=media&token=025622f7-24aa-4215-9025-c7141a44dc62" style="object-fit: cover;" width="100%">
<figcaption id="cap-c8eccac" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">After saving the new node details, the app confirms the update was applied—so the Tracker V2 should appear with the cleaner name going forward.</figcaption>
</figure>

<h2 id="meshtastic-node-discovery-and-what-unknown-nodes-means">Meshtastic node discovery and what “unknown nodes” means</h2>

<p>When the Tracker V2 first came online, it had already heard other nodes nearby, but their names had not been resolved yet. In the app this can look confusing, especially if you are expecting a full list right away.</p>

<p>If you enable <strong>show unknown devices</strong>, you can see nodes the device has already heard but has not fully identified yet. As the app and node continue working in the background, those unknown entries gradually resolve into named nodes.</p>

<p>So if it looks like your tracker is alone at first, give it a few minutes. It may simply still be resolving the network around it.</p>

<figure style="justify-self: center"><img alt="Meshtastic Nodes screen showing filter options including unknown devices for Heltec Tracker V2" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FG2XduXewK98fnmVEr5Of%2Fscreenshots%2F0f2f934a-c35c-4495-b1f0-ebc27d0b0f03.webp?alt=media&token=8c1049dc-a13b-4c86-b215-4d1a355f69a6" style="object-fit: cover;" width="100%">
<figcaption id="cap-d37c489" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">The Nodes screen includes options for how discovered devices are shown, including the setting that reveals nodes that haven’t fully identified yet.</figcaption>
</figure>

<h2 id="testing-the-built-in-gps-in-meshtastic">Testing the built-in GPS in Meshtastic</h2>

<p>The built-in GPS is one of the main reasons this device is interesting, so I wanted to verify whether it was truly working and not just listed on paper.</p>

<p>Inside the Meshtastic device configuration, I checked the <strong>Position</strong> settings. The app showed GPS mode as enabled, which was a good sign that the hardware had been detected correctly.</p>

<p>At first, though, there was no position fix.</p>

<p>That is normal for a fresh GPS start, especially indoors. On the device itself, the GPS screen showed:</p>

<ul>
	<li>No satellites</li>
	<li>No GPS lock</li>
	<li>No sats</li>
</ul>

<figure style="justify-self: center"><img alt="Heltec Wireless Tracker V2 GPS status screen: no satellites and no lock" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FG2XduXewK98fnmVEr5Of%2Fscreenshots%2Fbc809ada-2a7e-404a-9435-fbaf8db1c10f.webp?alt=media&token=a60d83cc-5cfb-486f-8129-9167bb8b1a30" style="object-fit: cover;" width="100%">
<figcaption id="cap-b2c2ebb" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">At the start of the GPS test the tracker has no satellites and no lock yet—so it will not display a position fix until it has a clearer view of the sky.</figcaption>
</figure>

<p>I moved the device closer to a window, then eventually took it outside for a few minutes. After roughly five minutes, it started locking onto satellites.</p>

<p>Once it had line of sight to the sky, the GPS came to life properly. It initially showed up to 22 satellites, and once back indoors it was still holding onto around 9. That is actually very solid for a small integrated tracker.</p>

<figure style="justify-self: center"><img alt="Heltec Wireless Tracker V2 GPS screen showing satellite lock in progress" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FG2XduXewK98fnmVEr5Of%2Fscreenshots%2F5ad7113b-f3f9-4fd0-a736-c977ffda57e0.webp?alt=media&token=7becf82c-e703-455d-997a-62e7ef73ab1e" style="object-fit: cover;" width="100%">
<figcaption id="cap-ffeebaf" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">After moving closer to better reception, the GPS screen begins showing data and the tracker is progressing toward a proper satellite lock.</figcaption>
</figure>

<p>With GPS working, the device updated time correctly and location became available inside the Meshtastic app.</p>

<h1>Location privacy settings in Meshtastic</h1>

<p>Meshtastic gives you control over how precisely your location is shared. In channel settings, you can choose to share your precise position or blur it with a privacy radius. In my setup, I could use the slider to announce a location within a given radius, rather than an exact point.</p>

<p>That is a nice feature if you want tracking functionality without broadcasting your exact position to everyone on the mesh.</p>

<h1>Radio performance check</h1>

<p>I also tested a traceroute to a nearby node. The Tracker V2 handled that fine, and one nice detail here is that this newer hardware can run at <strong>28 dB</strong>, compared to <strong>22 dB</strong> on the earlier Tracker V1. So you are getting a little more punch from the radio side as well.</p>

<p>At this point, Meshtastic on the Heltec Wireless Tracker V2 was working well:</p>

<ul>
	<li>Flashed successfully</li>
	<li>Bluetooth paired successfully</li>
	<li>Region configured correctly</li>
	<li>Node discovery working</li>
	<li>GPS working</li>
	<li>Traceroute working</li>
</ul>

<h2 id="flashing-meshcore-on-the-heltec-wireless-tracker-v2">Flashing MeshCore on the Heltec Wireless Tracker V2</h2>

<p>Next I wanted to test MeshCore, because a tracker like this is even more interesting when it works cleanly across both ecosystems.</p>

<p>For that, I used the MeshCore flasher at <strong>meshcore.io/flasher</strong>.</p>

<h1>Select the right MeshCore firmware target</h1>

<p>In the supported devices list, choose the <strong>Heltec Tracker V2</strong>. Then pick the mode you want.</p>

<p>For most people using this with a phone, the right option is <strong>Companion via Bluetooth</strong>. That is the one I selected.</p>

<p>I also chose to erase the device before flashing so there would not be any leftovers from the Meshtastic installation.</p>

<figure style="justify-self: center"><img alt="MeshCore flasher choose role screen for Heltec Wireless Tracker v2 showing Companion Bluetooth" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FG2XduXewK98fnmVEr5Of%2Fscreenshots%2F5747d544-46f6-42a3-9fd5-b7e594404ed3.webp?alt=media&token=27aa1353-4f60-4b37-aaac-cd192404e29d" style="object-fit: cover;" width="100%">
<figcaption id="cap-343922a" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">With the Heltec Wireless Tracker v2 selected, the flasher prompts you to choose the firmware role—here you can select Companion over Bluetooth (the option used in this guide).</figcaption>
</figure>

<h1>If MeshCore will not flash, use bootloader mode</h1>

<p>This is the big troubleshooting point for MeshCore on this device.</p>

<p>If Meshtastic is already loaded, the flasher may not immediately take over. In my case, the device showed up with the existing firmware identity and refused to flash cleanly.</p>

<p>The fix was to manually put the Tracker V2 into flashing mode:</p>

<ol>
	<li>Press and hold the <strong>boot</strong> button</li>
	<li>Press the <strong>reset</strong> button</li>
	<li>Release <strong>reset</strong></li>
	<li>Release <strong>boot</strong></li>
	<li>Retry the flash process</li>
</ol>

<p>Once that worked, the device appeared again as the proper JTAG/flash device, and the MeshCore flashing process continued normally.</p>

<figure style="justify-self: center"><img alt="MeshCore flasher showing erase device option and flash button for Heltec Tracker V2" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FG2XduXewK98fnmVEr5Of%2Fscreenshots%2Fb8cf7df2-bfa3-452a-8bd5-ddae9ce0cf70.webp?alt=media&token=8ca965fb-af57-4bee-bb37-7fc35d4bb34b" style="object-fit: cover;" width="100%">
<figcaption id="cap-ee7d756" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">After entering the correct flashing/bootloader mode, the MeshCore flasher is ready to erase and flash—this screen matches the troubleshooting success path.</figcaption>
</figure>

<p>After flashing completed and the device was reset, it booted into MeshCore. The first boot took a little longer, which is something I have seen on other MeshCore nodes as well.</p>

<h2 id="meshcore-setup-and-pairing">MeshCore setup and pairing</h2>

<p>After the firmware loaded, the device came up with MeshCore version 0.15 and used the color display properly, which was a nice touch.</p>

<figure style="justify-self: center"><img alt="Heltec Wireless Tracker V2 display showing MeshCore message counter and pin value" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FG2XduXewK98fnmVEr5Of%2Fscreenshots%2F603cbeb3-fe1f-4be9-abb4-a2d26cfdc30d.webp?alt=media&token=a7b07a1f-cfec-455a-a22c-a557dd72739a" style="object-fit: cover;" width="100%">
<figcaption id="cap-e81f986" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">You can see MeshCore status clearly on the small onboard display, including the message counter and pin value.</figcaption>
</figure>

<p>I then opened the MeshCore app and paired over Bluetooth. One practical Android troubleshooting tip: if pairing acts weird or does not reconnect properly, completely kill the app and start it again. That solved one hiccup for me during setup.</p>

<p>After pairing, I configured:</p>

<ul>
	<li><strong>Device name</strong></li>
	<li><strong>Preset region</strong> as USA/Canada</li>
	<li>Everything else left mostly at defaults</li>
</ul>

<h2 id="how-meshcore-behaves-differently-from-meshtastic">How MeshCore behaves differently from Meshtastic</h2>

<p>This part matters because MeshCore is not just “Meshtastic with different menus.” The discovery model is different.</p>

<p>In MeshCore, if you do not want to be discovered, you do not have to be discovered. Devices do not automatically reveal themselves the same way. Repeaters may only announce themselves occasionally, even as infrequently as every 12 hours.</p>

<p>So instead of passively expecting the app to fill up with nodes, you actively do a couple of things:</p>

<ul>
	<li><strong>Send an advert</strong> to tell others you are there</li>
	<li><strong>Discover repeaters</strong> from the tools menu</li>
</ul>

<figure style="justify-self: center"><img alt="MeshCore app tools menu opened on a phone while preparing repeater discovery for the Heltec Wireless Tracker V2" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FG2XduXewK98fnmVEr5Of%2Fscreenshots%2Fc00633c3-f7a5-4113-b546-7e6b7c7f9994.webp?alt=media&token=f23217c5-b619-4640-b031-add072551238" style="object-fit: cover;" width="100%">
<figcaption id="cap-7e250cb" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">This menu is where you trigger MeshCore’s active discovery behavior—so instead of passively listing nodes, you request repeaters using the tools.</figcaption>
</figure>

<p>When I ran repeater discovery, the app found several repeaters in the area and added them. Those are infrastructure nodes for message routing, not necessarily people I can chat with directly.</p>

<h2 id="testing-channels-and-messaging-in-meshcore">Testing channels and messaging in MeshCore</h2>

<p>To test real traffic, I used two methods.</p>

<h1>1. Public channel messaging</h1>

<p>I sent a simple “Hello” on the public channel. The message was repeated by nearby infrastructure, which confirmed that the device was transmitting correctly.</p>

<h1>2. A custom testing channel</h1>

<p>I also added a channel called <strong>testing</strong>. MeshCore makes this pretty easy, and it even provides a QR code so someone else can quickly join the same channel.</p>

<figure style="justify-self: center"><img alt="Meshtastic app screen showing the created hashtag channel for testing" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FG2XduXewK98fnmVEr5Of%2Fscreenshots%2F12374f72-431f-4be5-bbb2-25fee11fda41.webp?alt=media&token=9d89def0-aeb4-4370-8059-ffce4cb6673b" style="object-fit: cover;" width="100%">
<figcaption id="cap-c61f29e" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">The custom testing channel view after setup—now the channel is defined so you can send your test message and wait for a response.</figcaption>
</figure>

<p>After sending a test message on that channel, I got a response back from an autobot I already had set up there. That was enough to confirm the node could both send and receive successfully.</p>

<p>To add an actual person as a contact in MeshCore, they need to send an advert and you need to add them. I triggered an advert from one of my other home devices, and once it appeared, I could message it directly.</p>

<figure style="justify-self: center"><img alt="MeshCore companion app showing a message being sent on a contact chat" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FG2XduXewK98fnmVEr5Of%2Fscreenshots%2F1f93f184-a6df-4120-b9a3-2d653cfbe1ec.webp?alt=media&token=cc13a6a3-d201-47a6-9b70-d2b8a6c98aa5" style="object-fit: cover;" width="100%">
<figcaption id="cap-9420e53" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">The companion chat view shows the message being sent—this is the moment where the Tracker V2 is no longer just “configured,” but actively communicating with a companion contact.</figcaption>
</figure>

<p>At that point the Tracker V2 was functioning as a full MeshCore companion node with:</p>

<ul>
	<li>Repeaters discovered</li>
	<li>Public channel access</li>
	<li>Custom testing channel added</li>
	<li>Direct companion contact available</li>
</ul>

<h2 id="does-gps-work-in-meshcore-too">Does GPS work in MeshCore too?</h2>

<p>Yes, and that was the last thing I specifically wanted to verify.</p>

<p>Inside the MeshCore settings, I enabled the position feature. Based on the earlier Meshtastic test, I expected I might need to take it outside again, but in this case it already had enough information to resolve position and place itself on the map.</p>

<figure style="justify-self: center"><img alt="Smartphone displaying MeshCore Tracker V2 settings with latitude and longitude fields" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FG2XduXewK98fnmVEr5Of%2Fscreenshots%2F1d1253ca-c2b8-4dc1-b913-cea1579119a1.webp?alt=media&token=c17f86bc-3d7c-47fa-9ce1-6cf0e4c63646" style="object-fit: cover;" width="100%">
<figcaption id="cap-3329319" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">In MeshCore, the Tracker V2’s settings show the position fields (latitude/longitude) and location-sharing options—exactly what you’re checking when verifying integrated GPS works.</figcaption>
</figure>

<p>That confirmed the built-in GPS is not just functioning under Meshtastic. It also works in MeshCore, which makes this little device a lot more attractive as a true all-in-one portable tracker.</p>

<h2 id="what-i-liked-most-about-the-heltec-wireless-tracker-v2">What I liked most about the Heltec Wireless Tracker V2</h2>

<p>After testing both firmware options, the Tracker V2 came away looking really strong.</p>

<p>The highlights for me were:</p>

<ul>
	<li><strong>Very compact form factor</strong></li>
	<li><strong>Built-in GPS</strong> instead of needing an external GPS module</li>
	<li><strong>Stronger radio output</strong> than the earlier Tracker V1</li>
	<li><strong>Fast firmware flashing</strong> compared to some older Heltec hardware</li>
	<li><strong>Works with both Meshtastic and MeshCore</strong></li>
	<li><strong>Color screen support in MeshCore</strong></li>
</ul>

<figure style="justify-self: center"><img alt="Heltec Wireless Tracker V2 connected module held in hand with visible wiring for testing" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FG2XduXewK98fnmVEr5Of%2Fscreenshots%2F7772e3a4-1862-43c5-8eee-878ebf40f2db.webp?alt=media&token=aa1da9dd-e230-41b4-b459-865af58742bf" style="object-fit: cover;" width="100%">
<figcaption id="cap-6ae7697" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">A wider, clearer view of the connected Heltec Wireless Tracker V2 module—this is the “neat and contained” setup that makes it feel like a real travel tracker.</figcaption>
</figure>

<p>It really feels like a purpose-built tracker node. Put it in a decent case with a battery and you have something small, capable, and genuinely useful for portable mesh networking.</p>

<p>I especially like that the GPS is integrated. A lot of other setups end up as a pile of extra modules and wires. This keeps things neat.</p>

<h2 id="final-thoughts">Final thoughts</h2>

<p>I think the Heltec Wireless Tracker V2 is one of the better compact tracker nodes available right now for Meshtastic and MeshCore. It is not the node I would choose for a long-term solar deployment, but for a carry node, field tracker, or portable companion, it makes a lot of sense.</p>

<p>The built-in GPS works. Meshtastic works. MeshCore works. The radio performance looks good. And once it is in a proper case, it should make an excellent little travel node.</p>

<p>If you are comparing options for portable mesh hardware, this one definitely deserves a look.</p>

<h2 id="faq">FAQ</h2>

<div data-faq-question="true">
<h1>Is the Heltec Wireless Tracker V2 good for solar deployments?</h1>
</div>

<div data-faq-answer="true">
<p>Not really as a first choice. Because it uses the ESP32-S3, it is better suited as a portable tracker than as an ultra-low-power solar node. If your goal is a solar repeater or always-on remote node, lower-power hardware may be a better fit.</p>
</div>

<div data-faq-question="true">
<h1>Does the Heltec Wireless Tracker V2 have built-in GPS?</h1>
</div>

<div data-faq-answer="true">
<p>Yes. The built-in GPS worked in testing under both Meshtastic and MeshCore. It took a few minutes outdoors to get the first proper lock, which is normal for a fresh GPS start, but after that it performed well.</p>
</div>

<div data-faq-question="true">
<h1>Why is Windows not recognizing my Heltec Tracker V2?</h1>
</div>

<div data-faq-answer="true">
<p>The most likely issue is a missing driver. Installing the Silicon Labs universal Windows driver usually fixes the problem. Also make sure you are using a proper data USB cable.</p>
</div>

<div data-faq-question="true">
<h1>Which Meshtastic firmware channel should I use for the Tracker V2?</h1>
</div>

<div data-faq-answer="true">
<p>Because the hardware is relatively new, the correct firmware may only be available in the alpha channel at times. If the normal selection does not show a flashable version for the Tracker V2, check alpha.</p>
</div>

<div data-faq-question="true">
<h1>How do I put the Heltec Tracker V2 into flashing mode?</h1>
</div>

<div data-faq-answer="true">
<p>Hold the boot button, press reset, release reset, then release boot. After that, retry flashing. This is especially useful when switching from one firmware to another and the device will not flash normally.</p>
</div>

<div data-faq-question="true">
<h1>Does MeshCore work on the Heltec Wireless Tracker V2?</h1>
</div>

<div data-faq-answer="true">
<p>Yes. MeshCore flashed successfully, paired over Bluetooth, discovered repeaters, handled channel messaging, and used the built-in GPS. The color display also worked nicely in MeshCore.</p>
</div>

<div data-faq-question="true">
<h1>Is the Tracker V2 better than the Tracker V1?</h1>
</div>

<div data-faq-answer="true">
<p>In the areas tested here, yes. One of the improvements mentioned was radio output, with the newer hardware running at 28 dB compared to 22 dB on the earlier Tracker V1. The integrated GPS and overall compact design also make it very appealing.</p>
</div>

<p> </p>]]></content:encoded>
            </item>
                        <item>
                <title><![CDATA[How to Build a MeshCore Observer with Heltec V3]]></title>
                <link>https://www.lorameshdevices.com/blog/meshcore/how-to-build-a-meshcore-observer-with-heltec-v3.html</link>
                <guid>https://www.lorameshdevices.com/blog/meshcore/how-to-build-a-meshcore-observer-with-heltec-v3.html</guid>
                <pubDate>Wed, 29 Apr 2026 00:37:00 +0200</pubDate>
                <dc:creator><![CDATA[Vivian van Zyl]]></dc:creator>
                <description><![CDATA[A MeshCore Observer is one of those things that sounds a bit mysterious at first, but it is actually very straightforward. It is basically a read-only node that sits on your mesh, listens passively, and reports what it sees to a central place over the internet. 

It does not route traffic. It does not act like a repeater. It does not replace your normal client nodes. Its whole job is to collect useful network data such as active nodes, packet paths, signal quality, and general network health, then send that information up to MQTT so apps can do something useful with it. 

If you want better visibility into your network, easier troubleshooting, coverage mapping, or just a clearer picture of what is happening on your local mesh, adding a MeshCore Observer is a really good idea. 

 

Table of Contents


	What a MeshCore Observer Actually Does
	Why Every Local Mesh Community Should Have One
	How the Data Flow Works
	The Simple Hardware Approach I Chose
	Getting the Observer Firmware
	Flashing the MeshCore Observer to a Heltec V3
	Configuring Wi-Fi and Location in the Serial Console
	What Happens After Setup
	Using MeshMapper to Visualize Observer Data
	A Real Example of Packet Tracking
	Live Mapping Packet Paths
	What the MeshCore Observer Is Not
	Final Thoughts
	FAQ
	Useful Links


What a MeshCore Observer Actually Does

Think of a normal MeshCore network as a mix of companions or client nodes, plus repeaters. Those devices are busy participating in the mesh. They send messages, relay packets, and keep the network moving. 

A MeshCore Observer is different. It simply sits there and listens. 

When it sees traffic on the mesh, it reports that data over the internet to an MQTT broker. From there, apps can use the information to visualize the network and help you understand what is going on. 


Here’s the idea: the MeshCore Observer listens to your local mesh traffic, then sends what it sees upstream so you can monitor and visualize network health.


That makes the observer useful for things like: 


	Network mapping
	Coverage mapping
	Troubleshooting and diagnostics
	Performance monitoring
	Contributing to the wider LetsMesh ecosystem
	Security awareness, including spotting suspicious or unauthorized nodes


The mesh will still run perfectly fine without an observer. This is important. A MeshCore Observer is not required to make the network function. 

But if you do have one in your area, the network becomes much easier to understand and manage because now that local activity can be published and visualized. 

Why Every Local Mesh Community Should Have One

If you have a community network, it really helps to have at least one MeshCore Observer in the area. Without it, traffic is still happening, but you are mostly blind to the bigger picture. 

With an observer in place, everyone benefits from shared visibility. You can begin answering practical questions like: 


	Which nodes are currently active?
	How far is traffic actually propagating?
	Which repeaters are being used most often?
	Are there weak coverage spots?
	Are packets following the path you expected?


That is the real value here. A MeshCore Observer turns the mesh from something you hope is working into something you can actually inspect. 

How the Data Flow Works

The overall flow is simple: 


	Your normal MeshCore network runs as usual with clients and repeaters.
	The MeshCore Observer listens passively to activity on that mesh.
	The observer uses an internet connection to send what it hears to MQTT brokers.
	Apps consume that MQTT data and turn it into maps, packet traces, and other useful visualizations.


That is why the observer matters so much. It bridges local RF activity to tools that can make sense of it. 

The Simple Hardware Approach I Chose

There are a few ways to stand up a MeshCore Observer, but I went with the simplest route. 

You could run supporting pieces on something like a Raspberry Pi, but then you are also taking on the overhead of keeping another computer online and maintained all the time. For my setup, I wanted something cleaner and easier. 

So I used a Heltec V3 that I already had available in my stack of nodes. 

The reason this worked nicely is that the Heltec V3 has network capability, so I could connect it to Wi-Fi and let it push observer data out to the internet directly. 


This slide shows the MeshCore Observer flow—mesh nodes and repeaters on the left, the observer role in the middle, and the internet/MQTT side on the right.


That made it a practical choice for an always-on MeshCore Observer without turning the whole project into something more complicated than it needed to be. 

Getting the Observer Firmware

The custom observer firmware can be found through the LetsMesh forum. There is a write-up there that walks through the process and helps identify which devices support this observer setup. 

On that firmware page, you select the node type you want and then choose the hardware platform. Supported options include several device types, including the Heltec V3. 

Once you choose the correct hardware and confirm that you understand what you are downloading, you can grab the firmware file you need. 


For this setup, I select the Heltec V3 variant so the downloaded observer firmware matches the exact hardware I’m flashing.


The key point here is that you are not flashing the standard firmware image. You are downloading a custom firmware build intended for the observer role. 

Flashing the MeshCore Observer to a Heltec V3

After downloading the firmware, head over to the MeshCore flasher on the MeshCore website. 

From there: 


	Open the web flasher.
	Choose custom firmware instead of the normal node firmware option.
	Upload the observer firmware file you downloaded.
	Flash it to the Heltec V3 like you normally would.



The flasher is set to the “custom firmware” flow, with the device list visible so you can choose the correct hardware before uploading your observer firmware build.


That part is very similar to a normal firmware flash. The main difference is simply that you are using the custom observer image. 

Configuring Wi-Fi and Location in the Serial Console

Once the firmware is flashed, the next step is to connect to the device through the serial console and set a couple of values. 

This is where the observer becomes usable on your network. 

You need to configure: 


	Wi-Fi SSID
	Wi-Fi password
	Closest airport code


The Wi-Fi settings are required because the MeshCore Observer needs internet access to publish data to MQTT. 

The airport code is also required. For example, in the Tampa area, the code used was TPA. 

There are also optional fields where you can provide contact details such as your email address or public key so people can get in touch regarding your observer. 


Zoomed-in view of the “Required Settings” box for the observer firmware—this is where the exact serial console commands for Wi‑Fi and MQTT are specified.


One practical tip I always recommend is to put devices like this on a guest network rather than your main network. That keeps things a bit cleaner and avoids giving experimental nodes unnecessary access to your primary LAN. 

After setting the required values, reboot the node. 

Once it comes back up, you should see that the Heltec V3 now has an IP address. That is the sign that it is connected to Wi-Fi and ready to begin feeding data into the MQTT servers. 


After rebooting the flashed Heltec V3, the serial output shows it has come back up with the expected network information—this is what you want before it starts sending observer data.


What Happens After Setup

At this point, your MeshCore Observer is basically done. 

You configure the radio side as normal, set the serial values for network access and location, and then it begins contributing data automatically. 

From there, every time it hears mesh traffic, it can report what it sees upstream for use in apps. 

That is the beauty of the setup. Once it is in place, it quietly does its job without needing to participate in packet routing. 

Using MeshMapper to Visualize Observer Data

One of the most useful examples of observer-powered visualization is MeshMapper. 

MeshMapper can consume data from LetsMesh and show useful details on a map. Depending on the data available, it can help with things like seeing where signal was picked up, where it was not, and how packets move across an area. 

In the Tampa and St. Petersburg area, the observer showed up on the map as an active contributor. That confirmed it was online and publishing properly. 


Here’s MeshMapper showing the Tampa area as an active observer contribution—lots of red packet activity indicates the MeshCore Observer is online and capturing mesh traffic.


The really interesting part is the packet view. 

This is where a MeshCore Observer starts proving its worth in a very practical way. You can begin seeing what traffic was heard, which nodes were involved, and how messages were propagated through the network. 

A Real Example of Packet Tracking

To test the setup, a small client node was used along with the mobile app to send a message into the network. 

The hardware used for that live test was a Seeed Wio Tracker L1, acting as a mesh client. A simple test message was sent from the app. 


The observer is listening on the mesh—when the client test message is sent, it should show up in the observer’s captured packet data.


Once that message hit the network, the observer picked it up and reported it. In the packet data, it was possible to see: 


	The original text message
	The rebroadcast path across nearby nodes
	A reply from a bot
	The observer that captured and forwarded those packet details upstream


That gives you a much clearer sense of what actually happened on the mesh. Instead of just knowing that a message was sent and received, you can see how it moved. 


Here you can see the decoded packet details coming through the MeshCore Observer—event timing and route information used to understand how the message moved.


This kind of visibility is especially useful when a network is still growing. Even in a smaller area with only a modest number of nodes, you can already start verifying packet movement and relay behavior. 

Live Mapping Packet Paths

One of the coolest parts of the whole setup is seeing packet movement drawn out visually on the map. 

After sending another test message, MeshMapper showed the relay path in real time. The message originated locally, traveled outward, and then appeared at other points in the area, including Apollo Beach and back toward another nearby node. 


MeshMapper draws the relay path in real time—showing how the message propagates across nodes after the next test send.


That sort of visual pathing is exactly what makes a MeshCore Observer so valuable. It turns invisible RF behavior into something you can inspect and reason about. 

In a larger network, this becomes even more interesting because you can start seeing more complex relay paths, denser propagation patterns, and a clearer picture of which infrastructure is doing the heavy lifting. 

What the MeshCore Observer Is Not

It is worth being very clear about this, because it helps avoid confusion when planning a deployment. 

A MeshCore Observer is not: 


	A repeater
	A normal chat client
	A routing node
	A required component for mesh traffic to function


It is a passive listener that reports what it hears. 

That limited role is exactly why it is so useful. Because it is not busy participating in routing decisions, it can focus on collecting and exporting network data. 

Final Thoughts

If you already have a working MeshCore network, adding a MeshCore Observer is one of the easiest ways to get more insight out of it. 

Using a Heltec V3 made the process simple. Flash the custom firmware, connect to the serial console, set Wi-Fi, set your nearest airport code, reboot, and let it start feeding data to MQTT. 

From there, apps like MeshMapper can show you packet paths, relay behavior, and the overall health and shape of your local mesh. 

For anyone building out a community network, I really think it is worth standing up at least one MeshCore Observer in the area. The network will run without it, but once you have that visibility, it is hard to want to go back. 

FAQ



What is a MeshCore Observer?




A MeshCore Observer is a read-only node that passively listens to mesh traffic and sends network data over the internet to MQTT brokers. It does not route packets or act as a repeater. 




Does a MeshCore Observer affect routing?




No. A MeshCore Observer does not take part in routing. It only listens and reports what it hears. 




Can the mesh network work without a MeshCore Observer?




Yes. The mesh works without an observer. The observer simply adds visibility, monitoring, and reporting features that help with mapping, diagnostics, and analysis. 




Why do I need Wi-Fi for a MeshCore Observer?




The observer needs internet access so it can send collected packet and network data to MQTT brokers. That is how external apps are able to visualize and use the data. 




Why is the closest airport code required?




The observer setup requires the nearest airport code as part of its configuration. An example used here was TPA for the Tampa area. 




What hardware can I use for a MeshCore Observer?




Several supported devices can be used, including the Heltec V3. In this setup, the Heltec V3 was chosen because it was already available and supports network connectivity for reporting observer data. 




What app can I use to see MeshCore Observer data?




MeshMapper is one useful example. It can show observer-fed packet data and visualize message paths and network activity on a map. 


Useful Links

Links: (Note: As an affiliate, I earn from qualifying purchases) 


	
	Heltec V4 
	
	
	Seeed T1000E (Use code S0G9HWFL for a discount) 
	
	
	Seeed T1000E at Amazon 
	
	
	Seeed L1 Pro 
	
	
	Seeed Solar Node 
	
	
	Presentation 
	


  
]]></description>
                <content:encoded><![CDATA[<p>A <strong>MeshCore Observer</strong> is one of those things that sounds a bit mysterious at first, but it is actually very straightforward. It is basically a read-only node that sits on your mesh, listens passively, and reports what it sees to a central place over the internet.</p>

<p>It does <strong>not</strong> route traffic. It does <strong>not</strong> act like a repeater. It does <strong>not</strong> replace your normal client nodes. Its whole job is to collect useful network data such as active nodes, packet paths, signal quality, and general network health, then send that information up to <a href="https://www.lorameshdevices.com/blog/meshtastic/what-is-mqtt-for-meshtastic.html" target="_blank">MQTT</a> so apps can do something useful with it.</p>

<p>If you want better visibility into your network, easier troubleshooting, coverage mapping, or just a clearer picture of what is happening on your local mesh, adding a <strong>MeshCore Observer</strong> is a really good idea.</p>

<p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" src="https://www.youtube.com/embed/Vq86mr8kTR0" style="display: block; width: 100%; aspect-ratio: 16/9;" title="YouTube video player"></iframe></p>

<h2>Table of Contents</h2>

<ul>
	<li><a href="#what-a-meshcore-observer-actually-does">What a MeshCore Observer Actually Does</a></li>
	<li><a href="#why-every-local-mesh-community-should-have-one">Why Every Local Mesh Community Should Have One</a></li>
	<li><a href="#how-the-data-flow-works">How the Data Flow Works</a></li>
	<li><a href="#the-simple-hardware-approach-i-chose">The Simple Hardware Approach I Chose</a></li>
	<li><a href="#getting-the-observer-firmware">Getting the Observer Firmware</a></li>
	<li><a href="#flashing-the-meshcore-observer-to-a-heltec-v3">Flashing the MeshCore Observer to a Heltec V3</a></li>
	<li><a href="#configuring-wi-fi-and-location-in-the-serial-console">Configuring Wi-Fi and Location in the Serial Console</a></li>
	<li><a href="#what-happens-after-setup">What Happens After Setup</a></li>
	<li><a href="#using-meshmapper-to-visualize-observer-data">Using MeshMapper to Visualize Observer Data</a></li>
	<li><a href="#a-real-example-of-packet-tracking">A Real Example of Packet Tracking</a></li>
	<li><a href="#live-mapping-packet-paths">Live Mapping Packet Paths</a></li>
	<li><a href="#what-the-meshcore-observer-is-not">What the MeshCore Observer Is Not</a></li>
	<li><a href="#final-thoughts">Final Thoughts</a></li>
	<li><a href="#faq">FAQ</a></li>
	<li><a href="#useful-links">Useful Links</a></li>
</ul>

<h2 id="what-a-meshcore-observer-actually-does">What a MeshCore Observer Actually Does</h2>

<p>Think of a normal MeshCore network as a mix of companions or client nodes, plus repeaters. Those devices are busy participating in the mesh. They send messages, relay packets, and keep the network moving.</p>

<p>A <strong>MeshCore Observer</strong> is different. It simply sits there and listens.</p>

<p>When it sees traffic on the mesh, it reports that data over the internet to an MQTT broker. From there, apps can use the information to visualize the network and help you understand what is going on.</p>

<figure style="justify-self: center"><img alt="Diagram showing how a MeshCore Observer listens on a MeshCore network and publishes observer data via MQTT to internet dashboards" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FxV6L2bRC9xFgJI29X75r%2Fscreenshots%2F2d878a03-5ac5-4780-9efe-928802b32caf.webp?alt=media&token=4a1d6b44-610e-4acf-a63e-6648529ef6a2" style="object-fit: cover;" width="100%">
<figcaption id="cap-45cceb5" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Here’s the idea: the MeshCore Observer listens to your local mesh traffic, then sends what it sees upstream so you can monitor and visualize network health.</figcaption>
</figure>

<p>That makes the observer useful for things like:</p>

<ul>
	<li><strong>Network mapping</strong></li>
	<li><strong>Coverage mapping</strong></li>
	<li><strong>Troubleshooting and diagnostics</strong></li>
	<li><strong>Performance monitoring</strong></li>
	<li><strong>Contributing to the wider LetsMesh ecosystem</strong></li>
	<li><strong>Security awareness</strong>, including spotting suspicious or unauthorized nodes</li>
</ul>

<p>The mesh will still run perfectly fine without an observer. This is important. A <strong>MeshCore Observer</strong> is not required to make the network function.</p>

<p>But if you do have one in your area, the network becomes much easier to understand and manage because now that local activity can be published and visualized.</p>

<h2 id="why-every-local-mesh-community-should-have-one">Why Every Local Mesh Community Should Have One</h2>

<p>If you have a community network, it really helps to have at least one <strong>MeshCore Observer</strong> in the area. Without it, traffic is still happening, but you are mostly blind to the bigger picture.</p>

<p>With an observer in place, everyone benefits from shared visibility. You can begin answering practical questions like:</p>

<ul>
	<li>Which nodes are currently active?</li>
	<li>How far is traffic actually propagating?</li>
	<li>Which repeaters are being used most often?</li>
	<li>Are there weak coverage spots?</li>
	<li>Are packets following the path you expected?</li>
</ul>

<p>That is the real value here. A <strong>MeshCore Observer</strong> turns the mesh from something you hope is working into something you can actually inspect.</p>

<h2 id="how-the-data-flow-works">How the Data Flow Works</h2>

<p>The overall flow is simple:</p>

<ol>
	<li>Your normal MeshCore network runs as usual with clients and repeaters.</li>
	<li>The <strong>MeshCore Observer</strong> listens passively to activity on that mesh.</li>
	<li>The observer uses an internet connection to send what it hears to MQTT brokers.</li>
	<li>Apps consume that MQTT data and turn it into maps, packet traces, and other useful visualizations.</li>
</ol>

<p>That is why the observer matters so much. It bridges local RF activity to tools that can make sense of it.</p>

<h2 id="the-simple-hardware-approach-i-chose">The Simple Hardware Approach I Chose</h2>

<p>There are a few ways to stand up a <strong>MeshCore Observer</strong>, but I went with the simplest route.</p>

<p>You could run supporting pieces on something like a Raspberry Pi, but then you are also taking on the overhead of keeping another computer online and maintained all the time. For my setup, I wanted something cleaner and easier.</p>

<p>So I used a <strong>Heltec V3</strong> that I already had available in my stack of nodes.</p>

<p>The reason this worked nicely is that the Heltec V3 has network capability, so I could connect it to <a href="https://www.lorameshdevices.com/blog/meshtastic/connecting-meshtastic-to-home-assistant-your-complete-guide.html" target="_blank">Wi-Fi</a> and let it push observer data out to the internet directly.</p>

<figure style="justify-self: center"><img alt="MeshCore Observers why and how diagram showing observer data flow to MQTT" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FxV6L2bRC9xFgJI29X75r%2Fscreenshots%2F0cf17961-ec59-42a5-a420-ff91a5513fe3.webp?alt=media&token=be67a108-007a-4b48-96de-3a70e11677f0" style="object-fit: cover;" width="100%">
<figcaption id="cap-53bc7a3" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">This slide shows the MeshCore Observer flow—mesh nodes and repeaters on the left, the observer role in the middle, and the internet/MQTT side on the right.</figcaption>
</figure>

<p>That made it a practical choice for an always-on <strong>MeshCore Observer</strong> without turning the whole project into something more complicated than it needed to be.</p>

<h2 id="getting-the-observer-firmware">Getting the Observer Firmware</h2>

<p>The custom observer firmware can be found through the LetsMesh forum. There is a write-up there that walks through the process and helps identify which devices support this observer setup.</p>

<p>On that firmware page, you select the node type you want and then choose the hardware platform. Supported options include several device types, including the Heltec V3.</p>

<p>Once you choose the correct hardware and confirm that you understand what you are downloading, you can grab the firmware file you need.</p>

<figure style="justify-self: center"><img alt="Screenshot of LetsMesh observer firmware instructions with Heltec V3 selected in the device variant dropdown" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FxV6L2bRC9xFgJI29X75r%2Fscreenshots%2Ffb8c4e34-b03e-4bee-8424-d335db5d5a98.webp?alt=media&token=ae195fa4-9789-4f5b-83af-ffbec590c86b" style="object-fit: cover;" width="100%">
<figcaption id="cap-5f7d574" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">For this setup, I select the Heltec V3 variant so the downloaded observer firmware matches the exact hardware I’m flashing.</figcaption>
</figure>

<p>The key point here is that you are <strong>not</strong> flashing the standard firmware image. You are downloading a custom firmware build intended for the observer role.</p>

<h2 id="flashing-the-meshcore-observer-to-a-heltec-v3">Flashing the MeshCore Observer to a Heltec V3</h2>

<p>After downloading the firmware, head over to the MeshCore flasher on the MeshCore website.</p>

<p>From there:</p>

<ol>
	<li>Open the web flasher.</li>
	<li>Choose <strong>custom firmware</strong> instead of the normal node firmware option.</li>
	<li>Upload the observer firmware file you downloaded.</li>
	<li>Flash it to the Heltec V3 like you normally would.</li>
</ol>

<figure style="justify-self: center"><img alt="MeshCore flasher showing custom firmware option and device list" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FxV6L2bRC9xFgJI29X75r%2Fscreenshots%2Fe765bc77-0d53-415d-b9a2-ac9a1acce706.webp?alt=media&token=f8e45824-b758-414e-8fbc-f4c9420246f5" style="object-fit: cover;" width="100%">
<figcaption id="cap-57bc62e" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">The flasher is set to the “custom firmware” flow, with the device list visible so you can choose the correct hardware before uploading your observer firmware build.</figcaption>
</figure>

<p>That part is very similar to a normal firmware flash. The main difference is simply that you are using the custom observer image.</p>

<h2 id="configuring-wi-fi-and-location-in-the-serial-console">Configuring Wi-Fi and Location in the Serial Console</h2>

<p>Once the firmware is flashed, the next step is to connect to the device through the serial console and set a couple of values.</p>

<p>This is where the observer becomes usable on your network.</p>

<p>You need to configure:</p>

<ul>
	<li><strong>Wi-Fi SSID</strong></li>
	<li><strong>Wi-Fi password</strong></li>
	<li><strong>Closest airport code</strong></li>
</ul>

<p>The Wi-Fi settings are required because the <strong>MeshCore Observer</strong> needs internet access to publish data to MQTT.</p>

<p>The airport code is also required. For example, in the Tampa area, the code used was <strong>TPA</strong>.</p>

<p>There are also optional fields where you can provide contact details such as your email address or public key so people can get in touch regarding your observer.</p>

<figure style="justify-self: center"><img alt="Required settings section for MeshCore observer serial console configuration (Wi‑Fi, MQTT)" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FxV6L2bRC9xFgJI29X75r%2Fscreenshots%2F6b8b95cf-72da-4fdc-b3f7-b609698316a4.webp?alt=media&token=6cf94928-d40d-4b61-86c6-cbe77e841396" style="object-fit: cover;" width="100%">
<figcaption id="cap-efb0c60" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Zoomed-in view of the “Required Settings” box for the observer firmware—this is where the exact serial console commands for Wi‑Fi and MQTT are specified.</figcaption>
</figure>

<p>One practical tip I always recommend is to put devices like this on a <strong>guest network</strong> rather than your main network. That keeps things a bit cleaner and avoids giving experimental nodes unnecessary access to your primary LAN.</p>

<p>After setting the required values, reboot the node.</p>

<p>Once it comes back up, you should see that the Heltec V3 now has an IP address. That is the sign that it is connected to Wi-Fi and ready to begin feeding data into the MQTT servers.</p>

<figure style="justify-self: center"><img alt="Heltec V3 serial console output showing the observer is back online after reboot" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FxV6L2bRC9xFgJI29X75r%2Fscreenshots%2F95c2b100-fc0d-4912-8319-5f222b62428c.webp?alt=media&token=8d74e67d-065e-457e-bb32-96fe34827c31" style="object-fit: cover;" width="100%">
<figcaption id="cap-3bf5c09" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">After rebooting the flashed Heltec V3, the serial output shows it has come back up with the expected network information—this is what you want before it starts sending observer data.</figcaption>
</figure>

<h2 id="what-happens-after-setup">What Happens After Setup</h2>

<p>At this point, your <strong>MeshCore Observer</strong> is basically done.</p>

<p>You configure the radio side as normal, set the serial values for network access and location, and then it begins contributing data automatically.</p>

<p>From there, every time it hears mesh traffic, it can report what it sees upstream for use in apps.</p>

<p>That is the beauty of the setup. Once it is in place, it quietly does its job without needing to participate in packet routing.</p>

<h2 id="using-meshmapper-to-visualize-observer-data">Using MeshMapper to Visualize Observer Data</h2>

<p>One of the most useful examples of observer-powered visualization is <strong>MeshMapper</strong>.</p>

<p>MeshMapper can consume data from LetsMesh and show useful details on a map. Depending on the data available, it can help with things like seeing where signal was picked up, where it was not, and how packets move across an area.</p>

<p>In the Tampa and St. Petersburg area, the observer showed up on the map as an active contributor. That confirmed it was online and publishing properly.</p>

<figure style="justify-self: center"><img alt="MeshMapper Tampa map view showing active observer coverage and packet activity" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FxV6L2bRC9xFgJI29X75r%2Fscreenshots%2F24f27595-1f47-445c-903d-a9d38d1eed90.webp?alt=media&token=2df6a4f9-dd2c-48ff-9328-d4d6327a620e" style="object-fit: cover;" width="100%">
<figcaption id="cap-615cda4" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Here’s MeshMapper showing the Tampa area as an active observer contribution—lots of red packet activity indicates the MeshCore Observer is online and capturing mesh traffic.</figcaption>
</figure>

<p>The really interesting part is the packet view.</p>

<p>This is where a <strong>MeshCore Observer</strong> starts proving its worth in a very practical way. You can begin seeing what traffic was heard, which nodes were involved, and how messages were propagated through the network.</p>

<h2 id="a-real-example-of-packet-tracking">A Real Example of Packet Tracking</h2>

<p>To test the setup, a small client node was used along with the mobile app to send a message into the network.</p>

<p>The hardware used for that live test was a <strong>Seeed Wio Tracker L1</strong>, acting as a mesh client. A simple test message was sent from the app.</p>

<figure style="justify-self: center"><img alt="Heltec V3 mesh observer device held with MSG connected display" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FxV6L2bRC9xFgJI29X75r%2Fscreenshots%2F9b8fe050-481a-4efa-9ac8-5ae53fd57b12.webp?alt=media&token=7ebdbf39-87fd-46ee-959f-ac892dab8ee9" style="object-fit: cover;" width="100%">
<figcaption id="cap-5afab87" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">The observer is listening on the mesh—when the client test message is sent, it should show up in the observer’s captured packet data.</figcaption>
</figure>

<p>Once that message hit the network, the observer picked it up and reported it. In the packet data, it was possible to see:</p>

<ul>
	<li>The original text message</li>
	<li>The rebroadcast path across nearby nodes</li>
	<li>A reply from a bot</li>
	<li>The observer that captured and forwarded those packet details upstream</li>
</ul>

<p>That gives you a much clearer sense of what actually happened on the mesh. Instead of just knowing that a message was sent and received, you can see how it moved.</p>

<figure style="justify-self: center"><img alt="MeshMapper decoded packet details panel showing route and observer timing information" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FxV6L2bRC9xFgJI29X75r%2Fscreenshots%2F95d3937b-b61c-4ec4-9384-698c213becfb.webp?alt=media&token=158046d2-f382-47b0-93b1-aaa928b96e78" style="object-fit: cover;" width="100%">
<figcaption id="cap-7042ddc" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Here you can see the decoded packet details coming through the MeshCore Observer—event timing and route information used to understand how the message moved.</figcaption>
</figure>

<p>This kind of visibility is especially useful when a network is still growing. Even in a smaller area with only a modest number of nodes, you can already start verifying packet movement and relay behavior.</p>

<h2 id="live-mapping-packet-paths">Live Mapping Packet Paths</h2>

<p>One of the coolest parts of the whole setup is seeing packet movement drawn out visually on the map.</p>

<p>After sending another test message, MeshMapper showed the relay path in real time. The message originated locally, traveled outward, and then appeared at other points in the area, including Apollo Beach and back toward another nearby node.</p>

<figure style="justify-self: center"><img alt="MeshMapper real-time relay path visualization across Tampa Bay nodes" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FxV6L2bRC9xFgJI29X75r%2Fscreenshots%2F15058b0d-68e3-44c8-b9a9-4df2084703ee.webp?alt=media&token=63930b39-3eec-4bc1-b207-2ca6ecf17747" style="object-fit: cover;" width="100%">
<figcaption id="cap-666e899" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">MeshMapper draws the relay path in real time—showing how the message propagates across nodes after the next test send.</figcaption>
</figure>

<p>That sort of visual pathing is exactly what makes a <strong>MeshCore Observer</strong> so valuable. It turns invisible RF behavior into something you can inspect and reason about.</p>

<p>In a larger network, this becomes even more interesting because you can start seeing more complex relay paths, denser propagation patterns, and a clearer picture of which infrastructure is doing the heavy lifting.</p>

<h2 id="what-the-meshcore-observer-is-not">What the MeshCore Observer Is Not</h2>

<p>It is worth being very clear about this, because it helps avoid confusion when planning a deployment.</p>

<p>A <strong>MeshCore Observer</strong> is <strong>not</strong>:</p>

<ul>
	<li>A repeater</li>
	<li>A normal chat client</li>
	<li>A routing node</li>
	<li>A required component for mesh traffic to function</li>
</ul>

<p>It is a passive listener that reports what it hears.</p>

<p>That limited role is exactly why it is so useful. Because it is not busy participating in routing decisions, it can focus on collecting and exporting network data.</p>

<h2 id="final-thoughts">Final Thoughts</h2>

<p>If you already have a working MeshCore network, adding a <strong>MeshCore Observer</strong> is one of the easiest ways to get more insight out of it.</p>

<p>Using a Heltec V3 made the process simple. Flash the custom firmware, connect to the serial console, set Wi-Fi, set your nearest airport code, reboot, and let it start feeding data to MQTT.</p>

<p>From there, apps like MeshMapper can show you packet paths, relay behavior, and the overall health and shape of your local mesh.</p>

<p>For anyone building out a community network, I really think it is worth standing up at least one <strong>MeshCore Observer</strong> in the area. The network will run without it, but once you have that visibility, it is hard to want to go back.</p>

<h2 id="faq">FAQ</h2>

<div data-faq-question="true">
<h1>What is a MeshCore Observer?</h1>
</div>

<div data-faq-answer="true">
<p>A <strong>MeshCore Observer</strong> is a read-only node that passively listens to mesh traffic and sends network data over the internet to MQTT brokers. It does not route packets or act as a repeater.</p>
</div>

<div data-faq-question="true">
<h1>Does a MeshCore Observer affect routing?</h1>
</div>

<div data-faq-answer="true">
<p>No. A <strong>MeshCore Observer</strong> does not take part in routing. It only listens and reports what it hears.</p>
</div>

<div data-faq-question="true">
<h1>Can the mesh network work without a MeshCore Observer?</h1>
</div>

<div data-faq-answer="true">
<p>Yes. The mesh works without an observer. The observer simply adds visibility, monitoring, and reporting features that help with mapping, diagnostics, and analysis.</p>
</div>

<div data-faq-question="true">
<h1>Why do I need Wi-Fi for a MeshCore Observer?</h1>
</div>

<div data-faq-answer="true">
<p>The observer needs internet access so it can send collected packet and network data to MQTT brokers. That is how external apps are able to visualize and use the data.</p>
</div>

<div data-faq-question="true">
<h1>Why is the closest airport code required?</h1>
</div>

<div data-faq-answer="true">
<p>The observer setup requires the nearest airport code as part of its configuration. An example used here was TPA for the Tampa area.</p>
</div>

<div data-faq-question="true">
<h1>What hardware can I use for a MeshCore Observer?</h1>
</div>

<div data-faq-answer="true">
<p>Several supported devices can be used, including the Heltec V3. In this setup, the Heltec V3 was chosen because it was already available and supports network connectivity for reporting observer data.</p>
</div>

<div data-faq-question="true">
<h1>What app can I use to see MeshCore Observer data?</h1>
</div>

<div data-faq-answer="true">
<p>MeshMapper is one useful example. It can show observer-fed packet data and visualize message paths and network activity on a map.</p>
</div>

<h2 id="useful-links">Useful Links</h2>

<p><strong>Links:</strong> (Note: As an affiliate, I earn from qualifying purchases)</p>

<ul>
	<li>
	<p><a href="https://www.lorameshdevices.com/esp32-lora-v4-development-board-upgraded-esp32-s3-sx1262-lora-module-wifi-bluetooth-2mb-psram-16mb-flash-supports-gps-solar-with-915mhz-antenna-oled-display-for-arduino-meshtastic-lorawan-iot">Heltec V4</a></p>
	</li>
	<li>
	<p><a href="https://www.seeedstudio.com/SenseCAP-Card-Tracker-T1000-E-for-Meshtastic-p-5913.html?sensecap_affiliate=agiE1S0&referring_service=link">Seeed T1000E</a> <span>(Use code <strong>S0G9HWFL</strong> for a discount)</span></p>
	</li>
	<li>
	<p><a href="https://amzn.to/4qy0tJI">Seeed T1000E at Amazon</a></p>
	</li>
	<li>
	<p><a href="https://www.seeedstudio.com/Wio-Tracker-L1-Pro-p-6454.html?sensecap_affiliate=agiE1S0&referring_service=link">Seeed L1 Pro</a></p>
	</li>
	<li>
	<p><a href="https://www.seeedstudio.com/SenseCAP-Solar-Node-P1-for-Meshtastic-LoRa-p-6425.html?sensecap_affiliate=agiE1S0&referring_service=link">Seeed Solar Node</a></p>
	</li>
	<li>
	<p><a href="https://hub.lorameshdevices.com/docs/how-to-build-a-meshcore-observer-with-heltec-v3">Presentation</a></p>
	</li>
</ul>

<p> </p>]]></content:encoded>
            </item>
                        <item>
                <title><![CDATA[Meshtastic, Remote Management: Complete Setup Guide]]></title>
                <link>https://www.lorameshdevices.com/blog/meshtastic/meshtastic-remote-management-complete-setup-guide.html</link>
                <guid>https://www.lorameshdevices.com/blog/meshtastic/meshtastic-remote-management-complete-setup-guide.html</guid>
                <pubDate>Tue, 21 Apr 2026 16:38:51 +0200</pubDate>
                <dc:creator><![CDATA[Vivian van Zyl]]></dc:creator>
                <description><![CDATA[
Turn Bluetooth off on the remote node


    In the example, Bluetooth was disabled on the Heltec V4 while it was being managed remotely. 

    That means the node could no longer be connected to directly over Bluetooth afterward. From then on, access depended on remote management through the admin node. 

    This is useful when you want to reduce exposure, simplify field deployments, or prevent the need to leave Bluetooth enabled on a permanently mounted node. 

    
  
  With the remote node selected in the app, you’re editing the Bluetooth configuration so you can turn off direct Bluetooth access.


    Checking device metrics remotely

    After Bluetooth was turned off, the next test was to read device metrics such as battery state and air utilization. 

    At first, nothing came through. That is an important little gotcha. 

    If you want to monitor those values with Meshtastic, Remote Management, the remote node must actually be configured to send telemetry data. 

    
If metrics are missing, enable telemetry


    Go back into remote management for the remote node and open the Telemetry settings. Then turn on the option to send telemetry data and save it. 

    Because this setting is being changed remotely, the save action is sent over the LoRa network to the target node. After that change, the node reboots. 

    Once it comes back up, device metrics become available from the admin node. 

    
  
  Here you enable telemetry options for the remote node—turning on device and environment metric reporting so the admin node can later read battery and health data.


    What you can monitor after telemetry is enabled

    With telemetry enabled, the admin node can read useful health data from the remote node, including: 

    
      Battery percentage
      Battery voltage
      Uptime
      Air utilization
    

    In the example, the remote Heltec reported battery around 98%, then 97% after repeated refreshes. That is a nice reminder that constantly polling a node is not free. If you keep hammering on it, you will see the battery tick down. 

    There was also an indication that, while staying connected, metrics update automatically on a regular interval, roughly around once a minute. 

    That gives you a very practical way to check the health of a remote deployment without physically touching it. 

    
  
  The remote node reports status back to the admin node—battery level, voltage, air metrics, and uptime are visible here.


    Why this matters for real deployments

    This is where Meshtastic, Remote Management really shines. 

    If you have a node mounted in a tree, on a roof, inside a weatherproof box, or somewhere you simply do not want to access all the time, remote management means you can: 

    
      Change settings over the mesh
      Disable Bluetooth after deployment
      Enable or adjust telemetry remotely
      Check battery and uptime without taking the node down
      Manage multiple nodes from one admin node
    

    That is a much cleaner way to run longer-term installations. Set the trust relationship once, verify the node is visible on the network, and then manage it from your admin node instead of climbing ladders or opening enclosures every time you need to tweak something. 

    Quick Meshtastic remote management setup checklist

    
      Connect to your admin node in the app.
      Open Security and copy its public key.
      Connect to the remote node.
      Open Security and add that public key as an admin key.
      Save the setting.
      Reconnect to the admin node.
      If the remote node does not appear, reboot the remote node.
      Open the node, request Metadata, then select Remote Management.
      Change settings over LoRa as needed.
      If you want battery and health data, enable Telemetry on the remote node.
    

    Common gotchas to remember

    
      If the remote node is not visible, reboot it so it republishes itself to the mesh.
      If remote management does not open, double-check that the correct public key was added as an admin key.
      If device metrics are blank, telemetry probably is not enabled yet.
      If you turn Bluetooth off, direct local access is gone unless you turn it back on remotely or reconnect some other way later.
    

    FAQ

    
      What is Meshtastic, Remote Management? 
    
    
      It is the ability to manage one Meshtastic node through another. Your phone connects to an admin node over Bluetooth, and that admin node sends management commands to a remote node over LoRa. 
    

    
      What do I need to set up remote management? 
    
    
      You need an admin node, a target node, and the Meshtastic app. The essential setup step is copying the admin node’s public key and adding it to the target node as an admin key in the Security settings. 
    

    
      Why can’t I see my remote node from the admin node? 
    
    
      If the node does not show up, reboot the remote node. On startup it sends out its presence to the mesh, which helps the admin node discover it. 
    

    
      Why are device metrics not showing up? 
    
    
      The remote node needs telemetry enabled. Go into remote management, open Telemetry, turn on sending telemetry data, and save the setting. 
    

    
      Can I turn Bluetooth off on a node and still manage it? 
    
    
      Yes, as long as Meshtastic, Remote Management is already configured and the node is reachable over the mesh. In the example setup, Bluetooth was turned off and the node remained manageable through the admin node over LoRa. 
    

    
      How many admin keys can a node store? 
    
    
      You can add up to three admin keys. 
    

    Useful links

    Links: (Note: As an affiliate, I earn from qualifying purchases) 

    
      
        Seeed T1000E (Use code 'S0G9HWFL' for a discount) 
      
      
        Seeed T1000E at Amazon 
      
      
        Seeed L1 Pro 
      
      
        Seeed Solar Node 
      
    
]]></description>
                <content:encoded><![CDATA[<meta name="description" content="Learn how to set up Meshtastic remote management: copy an admin node public key, add i
    <h1>Meshtastic, Remote Management: Complete Setup Guide</h1><img width=" 100%"="" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/users%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fimages%2F6ed49b66-4b5f-4720-ae0b-2e36f921712f.jpg?alt=media&token=6221cef1-8d7b-45c9-a4d6-d8bf31d5dadc" alt="video thumbnail for 'Meshtastic Remote Management: Complete Setup Guide'">

    <p><strong>Meshtastic, Remote Management</strong> is one of those features that becomes incredibly useful the moment you put a node somewhere awkward, high up, sealed in an enclosure, or simply out of easy reach. If you have ever mounted a node in a tree and then realized you want to change a setting, turn Bluetooth off, or check battery status, remote management solves that problem nicely.</p>

    <p>The basic idea is simple. Your phone talks to an <strong>admin node</strong> over Bluetooth, and that admin node talks to your target node over <strong>LoRa</strong>. Once it is configured correctly, you can manage that remote node without connecting to it directly.</p>

    <p>It sounds complicated when you first hear it, especially because one admin node can manage several nodes, but the setup is actually straightforward once you know the sequence.</p>

    <p><iframe style="display: block; width: 100%; aspect-ratio: 16/9;" src="https://www.youtube.com/embed/7Czqly0Op-Q" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe></p>

    <h2>Table of Contents</h2><ul><li><a href="#how-meshtastic-remote-management-works">How Meshtastic remote management works</a></li><li><a href="#step-1-copy-the-public-key-from-your-admin-node">Step 1: Copy the public key from your admin node</a></li><li><a href="#step-2-add-that-public-key-to-the-remote-node-s-admin-keys">Step 2: Add that public key to the remote node’s admin keys</a></li><li><a href="#step-3-reconnect-to-the-admin-node">Step 3: Reconnect to the admin node</a></li><li><a href="#step-4-reboot-the-remote-node-so-it-publishes-itself">Step 4: Reboot the remote node so it publishes itself</a></li><li><a href="#step-5-exchange-metadata-then-open-remote-management">Step 5: Exchange metadata, then open remote management</a></li><li><a href="#what-you-can-do-once-remote-management-is-active">What you can do once remote management is active</a></li><li><a href="#checking-device-metrics-remotely">Checking device metrics remotely</a></li><li><a href="#what-you-can-monitor-after-telemetry-is-enabled">What you can monitor after telemetry is enabled</a></li><li><a href="#why-this-matters-for-real-deployments">Why this matters for real deployments</a></li><li><a href="#quick-meshtastic-remote-management-setup-checklist">Quick Meshtastic remote management setup checklist</a></li><li><a href="#common-gotchas-to-remember">Common gotchas to remember</a></li><li><a href="#faq">FAQ</a></li><li><a href="#useful-links">Useful links</a></li></ul><h2 id="how-meshtastic-remote-management-works">How Meshtastic remote management works</h2>

    <p>At a high level, there are three parts involved:</p>

    <ul>
      <li><strong>Your phone</strong> running the Meshtastic app</li>
      <li><strong>An admin node</strong> connected to the phone over Bluetooth</li>
      <li><strong>A remote node</strong> that will be managed over LoRa</li>
    </ul>

    <p>In this setup, the admin node is a <strong>SenseCAP T1000E</strong>, and the remote node is a <strong><a href="https://hub.lorameshdevices.com/docs/heltec-v4-unboxed-and-set-up-what%E2%80%99s-new-and-is-it-worth-the-upgrade" target="_blank">Heltec V4</a></strong>. The same approach applies more broadly, but those are the devices used here.</p>

    <p>The key to Meshtastic, Remote Management is the admin node’s <strong>public key</strong>. You copy that public key from the admin node and add it to the remote node’s security settings as an admin key. Once that trust relationship is in place, the remote node can be managed over the mesh.</p>

    <figure style="justify-self: center">
  <img src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FAxpM6xupqs21GiSFcP0N%2Fscreenshots%2F6c4e91a0-38cf-410e-a435-1ac99489658c.webp?alt=media&token=fed59e71-43ea-4ac4-bbe4-d03132ebcc20" alt="Concept diagram of Meshtastic remote administration showing admin public key stored on solar node and encrypted broadcasts over LoRa" width="100%" style="object-fit: cover;">
  <figcaption id="cap-a8d3d8d" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Remote management hinges on trust: the admin node’s public key is stored on the remote node so encrypted admin broadcasts can be verified and acted on over the mesh.</figcaption>
</figure>

    <h2 id="step-1-copy-the-public-key-from-your-admin-node">Step 1: Copy the public key from your admin node</h2>

    <p>Start by connecting the app to the node you want to use as your admin node. In this example, that is the SenseCAP T1000E.</p>

    <p>Before turning Bluetooth off or changing anything else, go into the node settings and open <strong>Security</strong>. There you will find the node’s <strong>public key</strong>.</p>

    <p>Copy that public key. This is the value you will paste into the remote node in the next step.</p>

    <p>This step matters because remote management is not just a toggle you switch on. The remote node needs to know which admin node is allowed to control it.</p>

    <figure style="justify-self: center">
  <img src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FAxpM6xupqs21GiSFcP0N%2Fscreenshots%2F3c2f5e22-df82-4f35-940b-bb96633b1d6e.webp?alt=media&token=6c5c6440-b9ad-44da-b502-4d498d1a11eb" alt="Meshtastic app Security screen showing admin key and copyable public key for remote management" width="100%" style="object-fit: cover;">
  <figcaption id="cap-950ac69" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">In the Security screen, you can see the admin key values for the node you’re using to authorize remote management.</figcaption>
</figure>

    <h2 id="step-2-add-that-public-key-to-the-remote-node-s-admin-keys">Step 2: Add that public key to the remote node’s admin keys</h2>

    <p>Now connect to the node you want to manage remotely. In this case, that is the Heltec V4.</p>

    <p>Again, go into <strong>Security</strong>. This time, instead of copying a key, you want to <strong>add an admin key</strong>.</p>

    <p>Paste the public key you copied from the T1000E into that admin key field, then save it.</p>

    <p>That is really the core configuration. Once the admin node’s public key has been added to the remote node, you have established permission for Meshtastic, Remote Management.</p>

    <p>You can add up to <strong>three admin keys</strong>, which is handy if you want multiple trusted admin nodes.</p>

    <figure style="justify-self: center">
  <img src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FAxpM6xupqs21GiSFcP0N%2Fscreenshots%2F0ab165d5-a02b-427e-8a01-292b085b598b.webp?alt=media&token=cc906130-9733-45f5-b60c-5a88e632b0a1" alt="Meshtastic Security screen with Admin Key field populated on the remote node" width="100%" style="object-fit: cover;">
  <figcaption id="cap-ba2d514" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Paste the admin node’s public key into the remote node’s Admin Key field, then add/save it so the devices trust each other for remote management.</figcaption>
</figure>

    <h2 id="step-3-reconnect-to-the-admin-node">Step 3: Reconnect to the admin node</h2>

    <p>After saving the admin key on the remote node, disconnect from it and reconnect your app to the <strong>admin node</strong>, the T1000E.</p>

    <p>From here on, you are going to try to find the remote node through the mesh. If it does not show up immediately, that is normal.</p>

    <p>In the example setup, the target node did not appear right away in the node list. The simple fix was to reboot the remote node so it would announce itself to the network again.</p>

    <h2 id="step-4-reboot-the-remote-node-so-it-publishes-itself">Step 4: Reboot the remote node so it publishes itself</h2>

    <p>If your admin node does not see the remote node yet, restart the remote device.</p>

    <p>When the remote node boots, one of the first things it does is send out its presence on the network. That makes it visible to the admin node again.</p>

    <p>After the reboot, the node appeared in the list and was ready to be managed.</p>

    <figure style="justify-self: center">
  <img src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FAxpM6xupqs21GiSFcP0N%2Fscreenshots%2F5ac66f2b-4afe-4a64-9a83-f14c55b548ee.webp?alt=media&token=5d74af19-b32b-43eb-bba8-e857aa8b70d5" alt="Meshtastic app node list with the remote node visible after reboot" width="100%" style="object-fit: cover;">
  <figcaption id="cap-566db13" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">After rebooting, the remote node should appear in the Meshtastic node list under your admin node, so you can move on to the Administration settings.</figcaption>
</figure>

    <h2 id="step-5-exchange-metadata-then-open-remote-management">Step 5: Exchange metadata, then open remote management</h2>

    <p>Once the remote node appears under your admin node, open that node and look near the bottom for <strong>Administration</strong>.</p>

    <p>The first useful action here is <strong>Metadata</strong>. Triggering metadata exchange helps the admin node learn the information it needs about the remote device.</p>

    <p>After metadata comes through, select <strong>Remote Management</strong>. If the keys match properly, the app will switch into remote mode for that node.</p>

    <p>You will see the interface indicate that you are now remotely managing the target node. At that point, your phone is still connected to the admin node over Bluetooth, but the settings changes are being sent to the remote node over <strong>LoRa</strong>.</p>

    <p>That is the big win with Meshtastic, Remote Management. You are no longer limited to physical Bluetooth access for every change.</p>

    <figure style="justify-self: center">
  <img src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FAxpM6xupqs21GiSFcP0N%2Fscreenshots%2Fed5d9066-7f24-4e16-9deb-754570f5c9fe.webp?alt=media&token=a3326b84-e524-449a-9003-5182947efd1d" alt="Smartphone showing Meshtastic settings with SenseCAP hardware setup in view" width="100%" style="object-fit: cover;">
  <figcaption id="cap-e4afc36" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">This view shows the phone and the connected hardware setup clearly, with the app on the settings screen ready for remote configuration changes.</figcaption>
</figure>

    <h2 id="what-you-can-do-once-remote-management-is-active">What you can do once remote management is active</h2>

    <p>Once connected in remote management mode, the remote node behaves a lot like a directly connected node from a settings perspective. You can open different configuration sections and change values just as you normally would.</p>

    <p>One very practical example is Bluetooth.</p>

    <h1>Turn Bluetooth off on the remote node</h1>

    <p>In the example, Bluetooth was disabled on the Heltec V4 while it was being managed remotely.</p>

    <p>That means the node could no longer be connected to directly over Bluetooth afterward. From then on, access depended on remote management through the admin node.</p>

    <p>This is useful when you want to reduce exposure, simplify field deployments, or prevent the need to leave Bluetooth enabled on a permanently mounted node.</p>

    <figure style="justify-self: center">
  <img src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FAxpM6xupqs21GiSFcP0N%2Fscreenshots%2F9ed8a916-3f4a-4c57-9ac5-149a1c43ad78.webp?alt=media&token=01f101a9-7c51-4e26-bb81-6efde087576e" alt="Meshtastic app Bluetooth configuration screen with Bluetooth disabled toggle and save button" width="100%" style="object-fit: cover;">
  <figcaption id="cap-c346fb2" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">With the remote node selected in the app, you’re editing the Bluetooth configuration so you can turn off direct Bluetooth access.</figcaption>
</figure>

    <h2 id="checking-device-metrics-remotely">Checking device metrics remotely</h2>

    <p>After Bluetooth was turned off, the next test was to read device metrics such as battery state and air utilization.</p>

    <p>At first, nothing came through. That is an important little gotcha.</p>

    <p>If you want to monitor those values with Meshtastic, Remote Management, the remote node must actually be configured to <strong>send telemetry data</strong>.</p>

    <h1>If metrics are missing, enable telemetry</h1>

    <p>Go back into remote management for the remote node and open the <strong><a href="https://hub.lorameshdevices.com/docs" target="_blank">Telemetry</a></strong> settings. Then turn on the option to send telemetry data and save it.</p>

    <p>Because this setting is being changed remotely, the save action is sent over the LoRa network to the target node. After that change, the node reboots.</p>

    <p>Once it comes back up, device metrics become available from the admin node.</p>

    <figure style="justify-self: center">
  <img src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FAxpM6xupqs21GiSFcP0N%2Fscreenshots%2F66f21473-58e6-4877-ade7-625b09102a2b.webp?alt=media&token=eee9a9d1-c24e-4ae7-8b5f-dacedda5b0bb" alt="Meshtastic Telemetry screen showing 'Send Device Telemetry' enabled and environment metrics module toggles." width="100%" style="object-fit: cover;">
  <figcaption id="cap-405b69a" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Here you enable telemetry options for the remote node—turning on device and environment metric reporting so the admin node can later read battery and health data.</figcaption>
</figure>

    <h2 id="what-you-can-monitor-after-telemetry-is-enabled">What you can monitor after telemetry is enabled</h2>

    <p>With telemetry enabled, the admin node can read useful health data from the remote node, including:</p>

    <ul>
      <li><strong>Battery percentage</strong></li>
      <li><strong>Battery voltage</strong></li>
      <li><strong>Uptime</strong></li>
      <li><strong>Air utilization</strong></li>
    </ul>

    <p>In the example, the remote Heltec reported battery around <strong>98%</strong>, then <strong>97%</strong> after repeated refreshes. That is a nice reminder that constantly polling a node is not free. If you keep hammering on it, you will see the battery tick down.</p>

    <p>There was also an indication that, while staying connected, metrics update automatically on a regular interval, roughly around once a minute.</p>

    <p>That gives you a very practical way to check the health of a remote deployment without physically touching it.</p>

    <figure style="justify-self: center">
  <img src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FAxpM6xupqs21GiSFcP0N%2Fscreenshots%2F9a0eb056-e38b-4f3c-8c6b-a5ab8c720c2e.webp?alt=media&token=9ce08f44-3c6c-4cfd-bec7-72404786e241" alt="Meshtastic device metrics summary showing battery percentage, voltage, air utilization, and uptime" width="100%" style="object-fit: cover;">
  <figcaption id="cap-6165e60" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">The remote node reports status back to the admin node—battery level, voltage, air metrics, and uptime are visible here.</figcaption>
</figure>

    <h2 id="why-this-matters-for-real-deployments">Why this matters for real deployments</h2>

    <p>This is where Meshtastic, Remote Management really shines.</p>

    <p>If you have a node mounted in a tree, on a roof, inside a weatherproof box, or somewhere you simply do not want to access all the time, remote management means you can:</p>

    <ul>
      <li>Change settings over the mesh</li>
      <li>Disable Bluetooth after deployment</li>
      <li>Enable or adjust telemetry remotely</li>
      <li>Check battery and uptime without taking the node down</li>
      <li>Manage multiple nodes from one admin node</li>
    </ul>

    <p>That is a much cleaner way to run longer-term installations. Set the trust relationship once, verify the node is visible on the network, and then manage it from your admin node instead of climbing ladders or opening enclosures every time you need to tweak something.</p>

    <h2 id="quick-meshtastic-remote-management-setup-checklist">Quick Meshtastic remote management setup checklist</h2>

    <ol>
      <li>Connect to your <strong>admin node</strong> in the app.</li>
      <li>Open <strong>Security</strong> and copy its <strong>public key</strong>.</li>
      <li>Connect to the <strong>remote node</strong>.</li>
      <li>Open <strong>Security</strong> and add that public key as an <strong>admin key</strong>.</li>
      <li>Save the setting.</li>
      <li>Reconnect to the <strong>admin node</strong>.</li>
      <li>If the remote node does not appear, <strong>reboot the remote node</strong>.</li>
      <li>Open the node, request <strong>Metadata</strong>, then select <strong>Remote Management</strong>.</li>
      <li>Change settings over LoRa as needed.</li>
      <li>If you want battery and health data, enable <strong>Telemetry</strong> on the remote node.</li>
    </ol>

    <h2 id="common-gotchas-to-remember">Common gotchas to remember</h2>

    <ul>
      <li><strong>If the remote node is not visible</strong>, reboot it so it republishes itself to the mesh.</li>
      <li><strong>If remote management does not open</strong>, double-check that the correct public key was added as an admin key.</li>
      <li><strong>If device metrics are blank</strong>, telemetry probably is not enabled yet.</li>
      <li><strong>If you turn Bluetooth off</strong>, direct local access is gone unless you turn it back on remotely or reconnect some other way later.</li>
    </ul>

    <h2 id="faq">FAQ</h2>

    <div data-faq-question="true">
      <p>What is Meshtastic, Remote Management?</p>
    </div>
    <div data-faq-answer="true">
      <p>It is the ability to manage one Meshtastic node through another. Your phone connects to an admin node over Bluetooth, and that admin node sends management commands to a remote node over LoRa.</p>
    </div>

    <div data-faq-question="true">
      <p>What do I need to set up remote management?</p>
    </div>
    <div data-faq-answer="true">
      <p>You need an admin node, a target node, and the Meshtastic app. The essential setup step is copying the admin node’s public key and adding it to the target node as an admin key in the Security settings.</p>
    </div>

    <div data-faq-question="true">
      <p>Why can’t I see my remote node from the admin node?</p>
    </div>
    <div data-faq-answer="true">
      <p>If the node does not show up, reboot the remote node. On startup it sends out its presence to the mesh, which helps the admin node discover it.</p>
    </div>

    <div data-faq-question="true">
      <p>Why are device metrics not showing up?</p>
    </div>
    <div data-faq-answer="true">
      <p>The remote node needs telemetry enabled. Go into remote management, open Telemetry, turn on sending telemetry data, and save the setting.</p>
    </div>

    <div data-faq-question="true">
      <p>Can I turn Bluetooth off on a node and still manage it?</p>
    </div>
    <div data-faq-answer="true">
      <p>Yes, as long as Meshtastic, Remote Management is already configured and the node is reachable over the mesh. In the example setup, Bluetooth was turned off and the node remained manageable through the admin node over LoRa.</p>
    </div>

    <div data-faq-question="true">
      <p>How many admin keys can a node store?</p>
    </div>
    <div data-faq-answer="true">
      <p>You can add up to three admin keys.</p>
    </div>

    <h2 id="useful-links">Useful links</h2>

    <p>Links: (Note: As an affiliate, I earn from qualifying purchases)</p>

    <ul>
      <li>
        <p><a href="https://www.seeedstudio.com/SenseCAP-Card-Tracker-T1000-E-for-Meshtastic-p-5913.html?sensecap_affiliate=agiE1S0&referring_service=link">Seeed T1000E (Use code 'S0G9HWFL' for a discount)</a></p>
      </li>
      <li>
        <p><a href="https://amzn.to/4qy0tJI">Seeed T1000E at Amazon</a></p>
      </li>
      <li>
        <p><a href="https://www.seeedstudio.com/Wio-Tracker-L1-Pro-p-6454.html?sensecap_affiliate=agiE1S0&referring_service=link">Seeed L1 Pro</a></p>
      </li>
      <li>
        <p><a href="https://www.seeedstudio.com/SenseCAP-Solar-Node-P1-for-Meshtastic-LoRa-p-6425.html?sensecap_affiliate=agiE1S0&referring_service=link">Seeed Solar Node</a></p>
      </li>
    </ul>]]></content:encoded>
            </item>
                        <item>
                <title><![CDATA[Solar Meshtastic Tree Node V2: A Stealthier Design With Smarter Solar and a Heltec V4 Power Experiment]]></title>
                <link>https://www.lorameshdevices.com/blog/meshtastic/solar-meshtastic-tree-node-v2-a-stealthier-design-with-smarter-solar-and-a-heltec-v4-power-experiment.html</link>
                <guid>https://www.lorameshdevices.com/blog/meshtastic/solar-meshtastic-tree-node-v2-a-stealthier-design-with-smarter-solar-and-a-heltec-v4-power-experiment.html</guid>
                <pubDate>Tue, 14 Apr 2026 17:13:16 +0200</pubDate>
                <dc:creator><![CDATA[Vivian van Zyl]]></dc:creator>
                <description><![CDATA[  

This version of the Solar Meshtastic tree node is all about fixing the real-world issues that showed up in the first build. The original worked, but it was bright yellow, very visible in a tree, and had a few practical limitations around heat, retrieval, and solar handling. Version 2 keeps the same overall idea but makes the node far more stealthy, more manageable once it is up in the canopy, and a lot more interesting electrically. 

The other big twist is the chip choice. Instead of sticking with the lower power NRF-based setup from before, this build tries something people usually warn against: running a Heltec V4 from three very small solar panels. That may be a terrible idea, or it may work better than people expect once the settings are tuned correctly. Either way, it is worth testing. 

If you are building a Solar Meshtastic node for off-grid coverage, elevated placement, or a semi-hidden relay point, these changes are the ones that matter. 

 

Table of Contents


	What changed in version 2
	Why the enclosure color changed
	New loops for retrieval and stability
	Solar input upgrades: from simple diodes to ideal diode modules
	The Heltec V4 experiment
	Battery choice and charging approach
	Internal assembly and wiring layout
	Flashing firmware and first connection
	Early power optimization steps
	Set up remote management before disabling Bluetooth
	Power settings for a small solar node
	Enable telemetry so you can actually monitor the node
	Initial battery readings and what to expect
	Final assembly and deployment
	Why this version is a better Solar Meshtastic tree node
	FAQ
	Links


What changed in version 2

The short version is this: 


	New army green enclosure for better concealment in a tree
	Air gap behind the solar panels to reduce heat buildup
	Three lower rope loops for retrieval and orientation control
	Ideal diode modules instead of simple diodes on each solar panel
	Heltec V4 no-screen board as the experimental radio platform
	Remote management setup so Bluetooth can be disabled after deployment
	Telemetry enabled remotely for checking battery state over LoRa



Side-by-side comparison of the earlier bright yellow enclosure versus the newer army-green version. Version 2 is meant to be much harder to spot in a tree.


Why the enclosure color changed

The first version was bright yellow. That had one obvious upside: yellow reflects a lot of heat from the sun. But it had one equally obvious downside: it stood out like crazy. You could spot it from a long way off once it was hanging in a tree. 

For a Solar Meshtastic node intended to disappear into the canopy, that is not ideal. 

Version 2 switches to army green. It blends into foliage much better, which is great for a stealth deployment. The tradeoff is heat. Dark colors absorb more solar energy, and if the panel sits directly against the body, the enclosure can get hotter than you want. 


The heat fix: add an air gap


To deal with that, the solar panel is no longer mounted flush against the body. Small standoffs create a gap between the panel and the node itself. That gives heat at least some chance to dissipate instead of getting trapped between the panel and the enclosure. 

It is a simple change, but this is exactly the kind of thing that matters on a permanently deployed Solar Meshtastic build. Small thermal improvements can make a big difference over time. 


The solar panel isn’t mounted flush against the node body anymore—standoffs leave space so heat can dissipate instead of getting trapped against the enclosure.


New loops for retrieval and stability

One of the best upgrades in this version came from feedback. The original had a top loop for pulling the node up into the tree, which works fine when everything goes perfectly. But gravity is not always enough to bring it back down. 

So this version adds three lower hooks or loops. 

These serve two very practical purposes: 


	Retrieval: if the node gets hung up, you can attach another rope and pull it out instead of hoping it drops cleanly
	Orientation control: by tying an extra line to one of the lower loops, you can keep the unit from spinning freely


That second point matters more than it sounds. A tree node that spins around constantly is unpredictable. A more stable node is easier to position and more likely to keep the panel orientation you intended. 


A clearer view of the node’s lower attachment hardware, demonstrating where those extra loops are for retrieval and keeping orientation steady.


Solar input upgrades: from simple diodes to ideal diode modules

Electrically, one of the most important changes is how the three small solar panels are combined. 

The setup still uses three panels, but the isolation method has been upgraded. In the earlier design, each panel used a simple diode on the positive lead. That was necessary because when one or two panels were lit and another was shaded, the shaded panel could start pulling power from the others. In other words, it became a parasitic load. 

Simple diodes stopped reverse flow, but they came with some downside in the form of voltage drop and inefficiency. 

Version 2 replaces those with ideal diode modules. Each panel feeds into its own module, and the outputs are then combined. 


Why that matters



	Lower resistance than a basic diode approach
	Faster reaction to changing solar conditions
	Better isolation between panels when some are shaded and some are lit
	Less wasted power, which is important when your total harvest is tiny


When your entire charging budget is only a few hundred milliwatts, every bit of efficiency matters. That is especially true on a Solar Meshtastic node that may spend part of the day in partial shade, with different panels seeing different levels of light. 


A clearer close-up showing the Heltec V4 no-screen board with multiple connector points visible before final assembly.


The Heltec V4 experiment

This is the part that makes the build interesting. 

Instead of using the previous Seeed NRF-based board, this version tries a Heltec V4. A lot of people will tell you that is too power hungry for tiny panels like these, and to be fair, that concern is not crazy. 

The three solar panels here are rated at about 200 mW each, so in total the system has around 600 mW of panel capacity. That is not much. 

Meanwhile, the Heltec V4 can draw roughly: 


	About 140 mA at idle
	Up to 1 amp when transmitting


That means this build is right on the edge. Maybe over the edge. The only honest answer is to test it. 


Why try it anyway?


Because raw worst-case numbers do not tell the whole story. 

On the Heltec V4, several things can be done to reduce power draw: 


	Bluetooth can be turned off
	Wi-Fi can be turned off
	The no-screen version avoids display power draw
	Power saving mode can be enabled


With those settings, the current draw can drop dramatically. The expectation here is that it may come down to around 40 mA, and some people even report 10 to 15 mA with aggressive power saving. 

There is already a similar Heltec V4 running on a roof with a 2 watt panel, and that one has stayed very healthy. But this tree node is using a much smaller solar budget, so this is still a real experiment. 

If it does not hold up, the fallback plan is simple: swap the Heltec V4 for a Heltec T114 or another NRF-based option. 


Clear view of the Heltec V4 board and the antenna feedthrough, matching the section where the build’s power draw is discussed.


Battery choice and charging approach

The node uses a standard 3500 mAh battery. That gives a decent buffer overnight or during bad weather. 

One of the more interesting choices here is the charging setup. Instead of adding an external charge controller, the build relies on the onboard charger on the Heltec board. The onboard charger is rated for 500 mA, which is a good match for this kind of low-power solar input. 

The battery plugs into the connector labeled BAT, and the combined solar feed goes into the connector labeled SOL. 

The reasoning is practical: an existing roof-mounted Heltec setup using only the onboard charge controller has already been running for months and has remained near full charge. So for this Solar Meshtastic build, it makes sense to keep the wiring simple and try the same approach. 


A clear look at the internal electronics setup before the node is sealed, with the board ready to be connected to the battery and solar wiring.


Internal assembly and wiring layout

The internal assembly is straightforward, but there are a few details that should not be skipped. 


Core hardware inside the node



	Heltec V4 no-screen board
	3500 mAh battery
	SMA pigtail for the external antenna
	Bluetooth antenna attached to the board, even though Bluetooth is only needed temporarily
	Three solar panels
	Three ideal diode modules



Wiring summary



	Each solar panel positive lead goes into its own diode module
	The diode module outputs are tied together on the positive side
	All solar negatives are tied together
	The combined solar connection goes to the board's SOL input
	The battery goes to the board's BAT input


A small but important reminder from the build: always verify polarity on these connectors before plugging anything in. The plugs may fit, but that does not guarantee the wiring is correct. 

Also, the board is secured inside the enclosure with adhesive tape so it cannot shift once the unit is closed and hoisted into place. 


A clear view of the assembled internals before closure—showing the wiring coming into the enclosure and the Heltec V4 board positioned for the solar and battery connections.



Do not power the radio without the antenna connected


One detail worth repeating: connect the antenna before powering the node. The SMA antenna gets attached first, then the board is powered. That is just good radio hygiene. 


Final antenna hardware connection—this is the step to do before powering the radio on the bench or in the tree.


Flashing firmware and first connection

Once the hardware is assembled, the next step is flashing the latest firmware onto the Heltec V4. 

After flashing, the node is discovered in the Meshtastic app over Bluetooth using the default PIN: 

123456

Initial configuration includes: 


	LoRa region: United States
	Preset: LongFast
	Device name: a custom name for the tree node


After the first save, the node reboots and starts picking up nearby nodes. 


Pairing prompts appear on the phone—this is where the default PIN is entered to connect the Heltec V4 tree node.


Early power optimization steps

Before the node goes into a tree, there are a few easy wins that immediately reduce wasted power. 


1. Turn off LED heartbeat


The heartbeat LED is useful on the bench, but once deployed it is just wasted battery. Disabling it also makes the node less visible at night. 


2. Set the time zone from the phone


This is just a normal setup step, but it is done while still connected locally. 

At this point, the LED heartbeat is off and the node stops that regular blink that serves no purpose in a finished field deployment. 


The app shows device hardware controls like LED heartbeat plus time zone and GPIO options—useful to remove obvious power waste before mounting in a tree.


Set up remote management before disabling Bluetooth

This is one of the smartest parts of the whole build. 

If the node is going to live up in a tree, Bluetooth needs to be turned off to save power. But if you disable Bluetooth too early, managing the node becomes painful. The solution is to set up remote administration over LoRa first. 


How the remote admin setup works


An existing node, in this case a SenseCAP T1000E used as an admin node, provides a public key. That public key gets copied into the Heltec tree node as an admin key under security settings. 

Once the keys match: 


	The admin node can discover the tree node over the mesh
	Metadata can be exchanged
	Remote management becomes available


Sometimes the tree node needs to be rebooted once so it sends a fresh discovery packet and appears in the admin node's list. After that, remote administration can be used to change settings on the tree node without a direct Bluetooth connection. 


Here we’re adding the admin/security information needed for remote administration—so the tree node can be managed over LoRa once Bluetooth is turned off.



Then Bluetooth gets turned off


With remote administration working, Bluetooth can safely be disabled on the tree node. From that point on, the node is managed over LoRa rather than over a short-range local link. 

That is exactly what you want for a Solar Meshtastic deployment that may be physically awkward to reach. 


This is the key Bluetooth setup screen (pairing mode and fixed PIN) that’s used during commissioning—right before the build transitions to remote management over LoRa.


Power settings for a small solar node

Once remote admin is available, the next priority is squeezing the most life possible out of the Heltec V4. 

The power configuration used here is intentionally conservative: 


	Enable power saving: on
	Wait for Bluetooth: irrelevant once Bluetooth is off
	Super deep sleep: left off
	Minimum wake time: left at 10 seconds


That keeps the node functional without going all the way into a more aggressive sleep configuration. The basic approach is to remove obvious waste first, then monitor battery behavior before making deeper changes. 

For this particular Solar Meshtastic test, the important changes are: 


	Heartbeat LED off
	Bluetooth off
	Power saving on
	Remote administration enabled



This is the key power configuration screen: power saving mode enabled, Bluetooth wake behavior set aside, and the minimum wake time tuned for a small solar budget.


Enable telemetry so you can actually monitor the node

After all that, there was one missing piece: device telemetry. 

Without telemetry enabled, the admin node cannot read device metrics from the tree node. The fix is simple. Remote into the tree node again, go to telemetry settings, and turn on telemetry transmission. In this setup, temperature units are also set to Fahrenheit. 

Once telemetry is enabled, the admin node can request and receive metrics such as: 


	Battery percentage
	Battery voltage
	Uptime
	Air utilization


That is what makes a remote Solar Meshtastic experiment practical. You do not want to keep dragging the node down from a tree just to check whether your power budget is working. 


Telemetry readings are visible on the dashboard, confirming the Solar Meshtastic tree node is reporting back successfully after configuration.


Initial battery readings and what to expect

Once telemetry was working, the initial battery state showed around 98%, and after repeated interaction and polling it dipped to 97%. That is not surprising. Any time you keep querying a remote node, you are spending some of the battery you are trying to conserve. 

The important thing is that now the battery can be monitored over time, remotely, and under real operating conditions. 

Based on the 3500 mAh battery alone, the expectation is roughly 24 to 36 hours without charging, depending on actual draw. With solar input contributing during the day, the node may remain comfortably afloat if the average current stays low enough. 

That is the whole point of this test: to see whether a Heltec V4 can live on a tiny Solar Meshtastic power budget when configured carefully. 

Final assembly and deployment

Once the internals are configured and telemetry is verified, the enclosure is closed up and sealed with a bit of silicone around the edge. Then the node is ready to go back up into the tree. 

From there, the only thing left is to monitor the battery over the next few days and see whether the solar harvest is enough to support the Heltec V4 long term. 

If it holds steady, great. If not, the enclosure and wiring approach are still solid, and the radio can be swapped for a lower-power board. Either way, version 2 is a meaningful improvement over the original design. 

Why this version is a better Solar Meshtastic tree node

Even before the Heltec experiment proves itself one way or the other, version 2 improves the design in the ways that matter most in the field. 


	It is harder to spot
	It handles heat better
	It is easier to retrieve
	It is easier to stabilize in a tree
	Its solar panel combining method is more efficient
	It can be managed remotely after deployment
	Its battery state can be checked over the mesh


That is exactly what a practical Solar Meshtastic node should do. It is not just about getting a radio to power on. It is about building something that can survive outside, stay useful, and remain manageable after it disappears into a tree canopy. 

FAQ


Why change the node from yellow to army green?


The yellow enclosure reflected heat well, but it was highly visible in a tree. Army green is much more discreet and blends into foliage better, making the node more stealthy. 


Does the darker color create heat problems?


It can, which is why version 2 adds standoffs behind the solar panel. That creates an air gap between the panel and the enclosure so heat can dissipate more easily. 


What are the extra loops at the bottom for?


They let you attach additional ropes for retrieval and for stabilizing the node so it does not spin freely in the tree. That makes deployment and recovery much easier. 


Why use ideal diode modules instead of basic diodes?


The ideal diode modules reduce losses and prevent one shaded panel from drawing power from the others. They are more efficient than simple diodes, which matters when the total solar input is very small. 


Can a Heltec V4 really run from three tiny solar panels?


That is the experiment. It may work if Bluetooth and Wi-Fi are off and power saving is enabled, but it is definitely close to the edge. If it does not hold up, the fallback is to switch to a lower-power board like a T114 or another NRF-based option. 


Why disable Bluetooth on the tree node?


Bluetooth uses extra power, and once the node is mounted high up, direct Bluetooth access is not practical anyway. The better approach is to enable remote administration first, then turn Bluetooth off. 


How is the node managed after Bluetooth is disabled?


Remote administration is configured using admin keys. An admin node's public key is added to the tree node, allowing settings to be changed over the LoRa network instead of over Bluetooth. 


How do you check battery status remotely?


Enable telemetry on the tree node. Once telemetry is turned on, another authorized node can read device metrics such as battery percentage, battery voltage, uptime, and air utilization over the mesh. 

Links

Note: As an affiliate, I earn from qualifying purchases 


	
	Heltec V4 (No Screen) - https://amzn.to/4dqVV4c 
	
	
	18650 Battery - https://amzn.to/4m95HKQ 
	
	
	Battery Holder - https://amzn.to/4jZW9Pz 
	
	
	SMA Connector - https://amzn.to/4bvpuz8 
	
	
	915Mhz Antenna - https://amzn.to/3PmXJBi 
	
	
	XL0401 Ideal Diode Module - https://amzn.to/47PU5qd 
	
	
	Solar Panels - https://amzn.to/47xSvJe 
	
	
	3D Printable Files - https://www.printables.com/model/1640281-meshtastic-meshcore-tree-node 
	
	
	Project files and UPDATES - https://hub.lorameshdevices.com/projects/solar-tree-node-meshtastic-meshcore 
	


  
]]></description>
                <content:encoded><![CDATA[<p> </p>

<p>This version of the <strong>Solar Meshtastic</strong> tree node is all about fixing the real-world issues that showed up in the first build. The original worked, but it was bright yellow, very visible in a tree, and had a few practical limitations around heat, retrieval, and solar handling. Version 2 keeps the same overall idea but makes the node far more stealthy, more manageable once it is up in the canopy, and a lot more interesting electrically.</p>

<p>The other big twist is the chip choice. Instead of sticking with the lower power NRF-based setup from before, this build tries something people usually warn against: running a <strong>Heltec V4</strong> from three very small solar panels. That may be a terrible idea, or it may work better than people expect once the settings are tuned correctly. Either way, it is worth testing.</p>

<p>If you are building a <strong>Solar Meshtastic</strong> node for off-grid coverage, elevated placement, or a semi-hidden relay point, these changes are the ones that matter.</p>

<p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" src="https://www.youtube.com/embed/9GF2c9IZ5PE" style="display: block; width: 100%; aspect-ratio: 16/9;" title="YouTube video player"></iframe></p>

<h2>Table of Contents</h2>

<ul>
	<li><a href="#what-changed-in-version-2">What changed in version 2</a></li>
	<li><a href="#why-the-enclosure-color-changed">Why the enclosure color changed</a></li>
	<li><a href="#new-loops-for-retrieval-and-stability">New loops for retrieval and stability</a></li>
	<li><a href="#solar-input-upgrades-from-simple-diodes-to-ideal-diode-modules">Solar input upgrades: from simple diodes to ideal diode modules</a></li>
	<li><a href="#the-heltec-v4-experiment">The Heltec V4 experiment</a></li>
	<li><a href="#battery-choice-and-charging-approach">Battery choice and charging approach</a></li>
	<li><a href="#internal-assembly-and-wiring-layout">Internal assembly and wiring layout</a></li>
	<li><a href="#flashing-firmware-and-first-connection">Flashing firmware and first connection</a></li>
	<li><a href="#early-power-optimization-steps">Early power optimization steps</a></li>
	<li><a href="#set-up-remote-management-before-disabling-bluetooth">Set up remote management before disabling Bluetooth</a></li>
	<li><a href="#power-settings-for-a-small-solar-node">Power settings for a small solar node</a></li>
	<li><a href="#enable-telemetry-so-you-can-actually-monitor-the-node">Enable telemetry so you can actually monitor the node</a></li>
	<li><a href="#initial-battery-readings-and-what-to-expect">Initial battery readings and what to expect</a></li>
	<li><a href="#final-assembly-and-deployment">Final assembly and deployment</a></li>
	<li><a href="#why-this-version-is-a-better-solar-meshtastic-tree-node">Why this version is a better Solar Meshtastic tree node</a></li>
	<li><a href="#faq">FAQ</a></li>
	<li><a href="#links">Links</a></li>
</ul>

<h2 id="what-changed-in-version-2">What changed in version 2</h2>

<p>The short version is this:</p>

<ul>
	<li><strong>New army green enclosure</strong> for better concealment in a tree</li>
	<li><strong>Air gap behind the solar panels</strong> to reduce heat buildup</li>
	<li><strong>Three lower rope loops</strong> for retrieval and orientation control</li>
	<li><strong>Ideal diode modules</strong> instead of simple diodes on each solar panel</li>
	<li><strong>Heltec V4 no-screen board</strong> as the experimental radio platform</li>
	<li><strong>Remote management setup</strong> so Bluetooth can be disabled after deployment</li>
	<li><strong>Telemetry enabled remotely</strong> for checking battery state over LoRa</li>
</ul>

<figure style="justify-self: center"><img alt="Bright yellow vs army green Solar Meshtastic tree node enclosure color comparison" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FRfVvoKr7Pg1ousfH4LMj%2Fscreenshots%2F7a9cc3b6-c728-4525-aa3e-1edc66234a96.webp?alt=media&token=1f1b7cd8-892b-4acd-80f5-d08d40e0d7b3" style="object-fit: cover;" width="100%">
<figcaption id="cap-9579450" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Side-by-side comparison of the earlier bright yellow enclosure versus the newer army-green version. Version 2 is meant to be much harder to spot in a tree.</figcaption>
</figure>

<h2 id="why-the-enclosure-color-changed">Why the enclosure color changed</h2>

<p>The first version was bright yellow. That had one obvious upside: yellow reflects a lot of heat from the sun. But it had one equally obvious downside: it stood out like crazy. You could spot it from a long way off once it was hanging in a tree.</p>

<p>For a <strong>Solar Meshtastic</strong> node intended to disappear into the canopy, that is not ideal.</p>

<p>Version 2 switches to <strong>army green</strong>. It blends into foliage much better, which is great for a stealth deployment. The tradeoff is heat. Dark colors absorb more solar energy, and if the panel sits directly against the body, the enclosure can get hotter than you want.</p>

<h1>The heat fix: add an air gap</h1>

<p>To deal with that, the solar panel is no longer mounted flush against the body. Small standoffs create a gap between the panel and the node itself. That gives heat at least some chance to dissipate instead of getting trapped between the panel and the enclosure.</p>

<p>It is a simple change, but this is exactly the kind of thing that matters on a permanently deployed <strong>Solar Meshtastic</strong> build. Small thermal improvements can make a big difference over time.</p>

<figure style="justify-self: center"><img alt="Solar Meshtastic tree node V2 with air gap standoffs between the solar panel and enclosure" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FRfVvoKr7Pg1ousfH4LMj%2Fscreenshots%2Fff120397-da0c-42bd-bc64-826ac43df210.webp?alt=media&token=0f97d12e-9f6f-46fe-b6b5-7388b27afc59" style="object-fit: cover;" width="100%">
<figcaption id="cap-44b4fd5" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">The solar panel isn’t mounted flush against the node body anymore—standoffs leave space so heat can dissipate instead of getting trapped against the enclosure.</figcaption>
</figure>

<h2 id="new-loops-for-retrieval-and-stability">New loops for retrieval and stability</h2>

<p>One of the best upgrades in this version came from feedback. The original had a top loop for pulling the node up into the tree, which works fine when everything goes perfectly. But gravity is not always enough to bring it back down.</p>

<p>So this version adds <strong>three lower hooks or loops</strong>.</p>

<p>These serve two very practical purposes:</p>

<ul>
	<li><strong>Retrieval</strong>: if the node gets hung up, you can attach another rope and pull it out instead of hoping it drops cleanly</li>
	<li><strong>Orientation control</strong>: by tying an extra line to one of the lower loops, you can keep the unit from spinning freely</li>
</ul>

<p>That second point matters more than it sounds. A tree node that spins around constantly is unpredictable. A more stable node is easier to position and more likely to keep the panel orientation you intended.</p>

<figure style="justify-self: center"><img alt="Solar Meshtastic tree node with lower loops visible during assembly" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FRfVvoKr7Pg1ousfH4LMj%2Fscreenshots%2F7a5c988a-3a36-408d-b0ef-50ea4e610197.webp?alt=media&token=f147d5f5-f0d0-48c7-8094-78e9c870b177" style="object-fit: cover;" width="100%">
<figcaption id="cap-89bdf2c" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">A clearer view of the node’s lower attachment hardware, demonstrating where those extra loops are for retrieval and keeping orientation steady.</figcaption>
</figure>

<h2 id="solar-input-upgrades-from-simple-diodes-to-ideal-diode-modules">Solar input upgrades: from simple diodes to ideal diode modules</h2>

<p>Electrically, one of the most important changes is how the three small solar panels are combined.</p>

<p>The setup still uses three panels, but the isolation method has been upgraded. In the earlier design, each panel used a simple diode on the positive lead. That was necessary because when one or two panels were lit and another was shaded, the shaded panel could start pulling power from the others. In other words, it became a parasitic load.</p>

<p>Simple diodes stopped reverse flow, but they came with some downside in the form of voltage drop and inefficiency.</p>

<p>Version 2 replaces those with <strong><a href="https://www.lorameshdevices.com/blog/meshtastic/exploring-the-meshtastic-solar-node-a-diy-solar-powered-communication-solution.html" target="_blank">ideal diode modules</a></strong>. Each panel feeds into its own module, and the outputs are then combined.</p>

<h1>Why that matters</h1>

<ul>
	<li><strong>Lower resistance</strong> than a basic diode approach</li>
	<li><strong>Faster reaction</strong> to changing solar conditions</li>
	<li><strong>Better isolation</strong> between panels when some are shaded and some are lit</li>
	<li><strong>Less wasted power</strong>, which is important when your total harvest is tiny</li>
</ul>

<p>When your entire charging budget is only a few hundred milliwatts, every bit of efficiency matters. That is especially true on a <strong>Solar Meshtastic</strong> node that may spend part of the day in partial shade, with different panels seeing different levels of light.</p>

<figure style="justify-self: center"><img alt="Heltec V4 no-screen board close-up with connectors visible during assembly" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FRfVvoKr7Pg1ousfH4LMj%2Fscreenshots%2Fc946279c-a701-4916-af02-c88450f93620.webp?alt=media&token=c6d45acb-5f33-40fc-879e-b6990715aa9f" style="object-fit: cover;" width="100%">
<figcaption id="cap-f24e7c5" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">A clearer close-up showing the Heltec V4 no-screen board with multiple connector points visible before final assembly.</figcaption>
</figure>

<h2 id="the-heltec-v4-experiment">The Heltec V4 experiment</h2>

<p>This is the part that makes the build interesting.</p>

<p>Instead of using the previous Seeed NRF-based board, this version tries a <strong>Heltec V4</strong>. A lot of people will tell you that is too power hungry for tiny panels like these, and to be fair, that concern is not crazy.</p>

<p>The three solar panels here are rated at about <strong>200 mW each</strong>, so in total the system has around <strong>600 mW</strong> of panel capacity. That is not much.</p>

<p>Meanwhile, the Heltec V4 can draw roughly:</p>

<ul>
	<li><strong>About 140 mA at idle</strong></li>
	<li><strong>Up to 1 amp when transmitting</strong></li>
</ul>

<p>That means this build is right on the edge. Maybe over the edge. The only honest answer is to test it.</p>

<h1>Why try it anyway?</h1>

<p>Because raw worst-case numbers do not tell the whole story.</p>

<p>On the Heltec V4, several things can be done to reduce power draw:</p>

<ul>
	<li><strong>Bluetooth can be turned off</strong></li>
	<li><strong>Wi-Fi can be turned off</strong></li>
	<li><strong>The no-screen version avoids display power draw</strong></li>
	<li><strong>Power saving mode can be enabled</strong></li>
</ul>

<p>With those settings, the current draw can drop dramatically. The expectation here is that it may come down to around <strong>40 mA</strong>, and some people even report <strong>10 to 15 mA</strong> with aggressive power saving.</p>

<p>There is already a similar Heltec V4 running on a roof with a 2 watt panel, and that one has stayed very healthy. But this tree node is using a much smaller solar budget, so this is still a real experiment.</p>

<p>If it does not hold up, the fallback plan is simple: swap the Heltec V4 for a <strong>Heltec T114</strong> or another NRF-based option.</p>

<figure style="justify-self: center"><img alt="Heltec V4 no-screen board with antenna feed and enclosure details for Solar Meshtastic tree node" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FRfVvoKr7Pg1ousfH4LMj%2Fscreenshots%2Ff08b331a-7be1-435f-9e81-c6b74a4e4a7a.webp?alt=media&token=a725b617-34d6-4234-993c-9b77e027e575" style="object-fit: cover;" width="100%">
<figcaption id="cap-a80bd81" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Clear view of the Heltec V4 board and the antenna feedthrough, matching the section where the build’s power draw is discussed.</figcaption>
</figure>

<h2 id="battery-choice-and-charging-approach">Battery choice and charging approach</h2>

<p>The node uses a standard <strong>3500 mAh battery</strong>. That gives a decent buffer overnight or during bad weather.</p>

<p>One of the more interesting choices here is the charging setup. Instead of adding an external charge controller, the build relies on the <strong>onboard charger</strong> on the Heltec board. The onboard charger is rated for <strong>500 mA</strong>, which is a good match for this kind of low-power solar input.</p>

<p>The battery plugs into the connector labeled <strong>BAT</strong>, and the combined solar feed goes into the connector labeled <strong>SOL</strong>.</p>

<p>The reasoning is practical: an existing roof-mounted Heltec setup using only the onboard charge controller has already been running for months and has remained near full charge. So for this <strong>Solar Meshtastic</strong> build, it makes sense to keep the wiring simple and try the same approach.</p>

<figure style="justify-self: center"><img alt="Solar Meshtastic tree node components laid out including the Heltec board, battery leads, and enclosure" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FRfVvoKr7Pg1ousfH4LMj%2Fscreenshots%2F960fe16a-c79b-412b-80d0-eaa13694f093.webp?alt=media&token=93f95091-154d-4e9b-be7b-f1c5da7c782e" style="object-fit: cover;" width="100%">
<figcaption id="cap-0cf582f" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">A clear look at the internal electronics setup before the node is sealed, with the board ready to be connected to the battery and solar wiring.</figcaption>
</figure>

<h2 id="internal-assembly-and-wiring-layout">Internal assembly and wiring layout</h2>

<p>The internal assembly is straightforward, but there are a few details that should not be skipped.</p>

<h1>Core hardware inside the node</h1>

<ul>
	<li><strong>Heltec V4 no-screen board</strong></li>
	<li><strong>3500 mAh battery</strong></li>
	<li><strong>SMA pigtail</strong> for the external antenna</li>
	<li><strong>Bluetooth antenna</strong> attached to the board, even though Bluetooth is only needed temporarily</li>
	<li><strong>Three solar panels</strong></li>
	<li><strong>Three ideal diode modules</strong></li>
</ul>

<h1>Wiring summary</h1>

<ul>
	<li>Each solar panel positive lead goes into its own diode module</li>
	<li>The diode module outputs are tied together on the positive side</li>
	<li>All solar negatives are tied together</li>
	<li>The combined solar connection goes to the board's <strong>SOL</strong> input</li>
	<li>The battery goes to the board's <strong>BAT</strong> input</li>
</ul>

<p>A small but important reminder from the build: <strong>always verify polarity</strong> on these connectors before plugging anything in. The plugs may fit, but that does not guarantee the wiring is correct.</p>

<p>Also, the board is secured inside the enclosure with adhesive tape so it cannot shift once the unit is closed and hoisted into place.</p>

<figure style="justify-self: center"><img alt="Assembled Solar Meshtastic tree node internals with wiring inside enclosure and Heltec V4 board for BAT and SOL" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FRfVvoKr7Pg1ousfH4LMj%2Fscreenshots%2Fe93c09ab-0ca3-43c4-8513-83bc5993cf10.webp?alt=media&token=c1cde7e2-5a6e-437c-9f5b-424f8995ca65" style="object-fit: cover;" width="100%">
<figcaption id="cap-89946bf" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">A clear view of the assembled internals before closure—showing the wiring coming into the enclosure and the Heltec V4 board positioned for the solar and battery connections.</figcaption>
</figure>

<h1>Do not power the radio without the antenna connected</h1>

<p>One detail worth repeating: connect the <a href="http://lorameshdevices.com/blog/meshtastic/diy-meshtastic-antenna-build-simple-guide-for-beginners.html" target="_blank">antenna</a> before powering the node. The SMA antenna gets attached first, then the board is powered. That is just good radio hygiene.</p>

<figure style="justify-self: center"><img alt="Hands installing the SMA antenna connector inside the Solar Meshtastic tree node V2 enclosure before powering" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FRfVvoKr7Pg1ousfH4LMj%2Fscreenshots%2F256bb17f-8faf-4a84-bf60-22eca8746036.webp?alt=media&token=0fec6900-0b5b-45e3-a12f-aedffa47fcef" style="object-fit: cover;" width="100%">
<figcaption id="cap-28bf72e" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Final antenna hardware connection—this is the step to do before powering the radio on the bench or in the tree.</figcaption>
</figure>

<h2 id="flashing-firmware-and-first-connection">Flashing firmware and first connection</h2>

<p>Once the hardware is assembled, the next step is flashing the latest firmware onto the Heltec V4.</p>

<p>After flashing, the node is discovered in the Meshtastic app over Bluetooth using the default PIN:</p>

<pre><code>123456</code></pre>

<p>Initial configuration includes:</p>

<ul>
	<li><strong>LoRa region</strong>: United States</li>
	<li><strong>Preset</strong>: LongFast</li>
	<li><strong>Device name</strong>: a custom name for the tree node</li>
</ul>

<p>After the first save, the node reboots and starts picking up nearby nodes.</p>

<figure style="justify-self: center"><img alt="Meshtastic app pairing dialog on a phone requesting PIN to pair with the tree node" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FRfVvoKr7Pg1ousfH4LMj%2Fscreenshots%2F78863934-f83a-44c1-b42b-87edf199c932.webp?alt=media&token=a6d11c8c-f5b2-4886-944e-4aa68ef3df78" style="object-fit: cover;" width="100%">
<figcaption id="cap-a962778" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Pairing prompts appear on the phone—this is where the default PIN is entered to connect the Heltec V4 tree node.</figcaption>
</figure>

<h2 id="early-power-optimization-steps">Early power optimization steps</h2>

<p>Before the node goes into a tree, there are a few easy wins that immediately reduce wasted power.</p>

<h1>1. Turn off LED heartbeat</h1>

<p>The heartbeat LED is useful on the bench, but once deployed it is just wasted battery. Disabling it also makes the node less visible at night.</p>

<h1>2. Set the time zone from the phone</h1>

<p>This is just a normal setup step, but it is done while still connected locally.</p>

<p>At this point, the LED heartbeat is off and the node stops that regular blink that serves no purpose in a finished field deployment.</p>

<figure style="justify-self: center"><img alt="Meshtastic device settings screen on a phone showing LED heartbeat, time zone, and GPIO" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FRfVvoKr7Pg1ousfH4LMj%2Fscreenshots%2Fd314ba0d-865f-45b6-a90a-11a08447a8c3.webp?alt=media&token=83c6992f-36b5-495c-b05d-5f909e0599a3" style="object-fit: cover;" width="100%">
<figcaption id="cap-c36a73d" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">The app shows device hardware controls like LED heartbeat plus time zone and GPIO options—useful to remove obvious power waste before mounting in a tree.</figcaption>
</figure>

<h2 id="set-up-remote-management-before-disabling-bluetooth">Set up remote management before disabling Bluetooth</h2>

<p>This is one of the smartest parts of the whole build.</p>

<p>If the node is going to live up in a tree, Bluetooth needs to be turned off to save power. But if you disable Bluetooth too early, managing the node becomes painful. The solution is to set up <strong><a href="http://lorameshdevices.com/blog/meshtastic/connecting-meshtastic-to-home-assistant-your-complete-guide.html" target="_blank">remote administration</a> over LoRa</strong> first.</p>

<h1>How the remote admin setup works</h1>

<p>An existing node, in this case a SenseCAP T1000E used as an admin node, provides a <strong>public key</strong>. That public key gets copied into the Heltec tree node as an <strong>admin key</strong> under security settings.</p>

<p>Once the keys match:</p>

<ul>
	<li>The admin node can discover the tree node over the mesh</li>
	<li>Metadata can be exchanged</li>
	<li>Remote management becomes available</li>
</ul>

<p>Sometimes the tree node needs to be rebooted once so it sends a fresh discovery packet and appears in the admin node's list. After that, remote administration can be used to change settings on the tree node without a direct Bluetooth connection.</p>

<figure style="justify-self: center"><img alt="Phone showing Meshtastic security screen with admin key and direct message key entries" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FRfVvoKr7Pg1ousfH4LMj%2Fscreenshots%2Fb013dd68-957c-409e-9c40-6b865c543f69.webp?alt=media&token=d7779809-0ae6-4d22-8b15-98bee48b68b5" style="object-fit: cover;" width="100%">
<figcaption id="cap-f98d22c" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Here we’re adding the admin/security information needed for remote administration—so the tree node can be managed over LoRa once Bluetooth is turned off.</figcaption>
</figure>

<h1>Then Bluetooth gets turned off</h1>

<p>With remote administration working, Bluetooth can safely be disabled on the tree node. From that point on, the node is managed over LoRa rather than over a short-range local link.</p>

<p>That is exactly what you want for a <strong>Solar Meshtastic</strong> deployment that may be physically awkward to reach.</p>

<figure style="justify-self: center"><img alt="Meshtastic Bluetooth configuration screen showing fixed PIN 123456 and Bluetooth enabled toggle for the Solar Meshtastic tree node" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FRfVvoKr7Pg1ousfH4LMj%2Fscreenshots%2F1172f413-266a-4b55-bf88-d1f0356f9b1b.webp?alt=media&token=5716368d-d869-431d-b600-9b4c07d2ed13" style="object-fit: cover;" width="100%">
<figcaption id="cap-730ea4b" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">This is the key Bluetooth setup screen (pairing mode and fixed PIN) that’s used during commissioning—right before the build transitions to remote management over LoRa.</figcaption>
</figure>

<h2 id="power-settings-for-a-small-solar-node">Power settings for a small solar node</h2>

<p>Once remote admin is available, the next priority is squeezing the most life possible out of the Heltec V4.</p>

<p>The power configuration used here is intentionally conservative:</p>

<ul>
	<li><strong>Enable power saving</strong>: on</li>
	<li><strong>Wait for Bluetooth</strong>: irrelevant once Bluetooth is off</li>
	<li><strong>Super deep sleep</strong>: left off</li>
	<li><strong>Minimum wake time</strong>: left at 10 seconds</li>
</ul>

<p>That keeps the node functional without going all the way into a more aggressive sleep configuration. The basic approach is to remove obvious waste first, then monitor battery behavior before making deeper changes.</p>

<p>For this particular <strong>Solar Meshtastic</strong> test, the important changes are:</p>

<ul>
	<li>Heartbeat LED off</li>
	<li>Bluetooth off</li>
	<li>Power saving on</li>
	<li>Remote administration enabled</li>
</ul>

<figure style="justify-self: center"><img alt="Meshtastic app Power settings screen with minimum wake time and super deep sleep options" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FRfVvoKr7Pg1ousfH4LMj%2Fscreenshots%2F052562e0-524c-42e1-be41-995ef0d7d941.webp?alt=media&token=deafed51-6294-49b8-ae22-81eabed450b3" style="object-fit: cover;" width="100%">
<figcaption id="cap-52a3385" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">This is the key power configuration screen: power saving mode enabled, Bluetooth wake behavior set aside, and the minimum wake time tuned for a small solar budget.</figcaption>
</figure>

<h2 id="enable-telemetry-so-you-can-actually-monitor-the-node">Enable telemetry so you can actually monitor the node</h2>

<p>After all that, there was one missing piece: <strong>device <a href="http://lorameshdevices.com/blog/meshtastic/building-a-esp32-based-meshtastic-node-with-telemetry.html" target="_blank">telemetry</a></strong>.</p>

<p>Without telemetry enabled, the admin node cannot read device metrics from the tree node. The fix is simple. Remote into the tree node again, go to telemetry settings, and turn on telemetry transmission. In this setup, temperature units are also set to Fahrenheit.</p>

<p>Once telemetry is enabled, the admin node can request and receive metrics such as:</p>

<ul>
	<li><strong>Battery percentage</strong></li>
	<li><strong>Battery voltage</strong></li>
	<li><strong>Uptime</strong></li>
	<li><strong>Air utilization</strong></li>
</ul>

<p>That is what makes a remote <strong>Solar Meshtastic</strong> experiment practical. You do not want to keep dragging the node down from a tree just to check whether your power budget is working.</p>

<figure style="justify-self: center"><img alt="Meshtastic telemetry dashboard on a phone showing Solar Meshtastic tree node battery-related metrics" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FRfVvoKr7Pg1ousfH4LMj%2Fscreenshots%2Fd75cf5eb-060a-4387-84cf-fb4842ac3099.webp?alt=media&token=8779a598-740c-495f-943d-c86ea2bbf21e" style="object-fit: cover;" width="100%">
<figcaption id="cap-4b9bbfc" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Telemetry readings are visible on the dashboard, confirming the Solar Meshtastic tree node is reporting back successfully after configuration.</figcaption>
</figure>

<h2 id="initial-battery-readings-and-what-to-expect">Initial battery readings and what to expect</h2>

<p>Once telemetry was working, the initial battery state showed around <strong>98%</strong>, and after repeated interaction and polling it dipped to <strong>97%</strong>. That is not surprising. Any time you keep querying a remote node, you are spending some of the battery you are trying to conserve.</p>

<p>The important thing is that now the battery can be monitored over time, remotely, and under real operating conditions.</p>

<p>Based on the 3500 mAh battery alone, the expectation is roughly <strong>24 to 36 hours</strong> without charging, depending on actual draw. With solar input contributing during the day, the node may remain comfortably afloat if the average current stays low enough.</p>

<p>That is the whole point of this test: to see whether a Heltec V4 can live on a tiny <strong>Solar Meshtastic</strong> power budget when configured carefully.</p>

<h2 id="final-assembly-and-deployment">Final assembly and deployment</h2>

<p>Once the internals are configured and telemetry is verified, the enclosure is closed up and sealed with a bit of silicone around the edge. Then the node is ready to go back up into the tree.</p>

<p>From there, the only thing left is to monitor the battery over the next few days and see whether the solar harvest is enough to support the Heltec V4 long term.</p>

<p>If it holds steady, great. If not, the enclosure and wiring approach are still solid, and the radio can be swapped for a lower-power board. Either way, version 2 is a meaningful improvement over the original design.</p>

<h2 id="why-this-version-is-a-better-solar-meshtastic-tree-node">Why this version is a better Solar Meshtastic tree node</h2>

<p>Even before the Heltec experiment proves itself one way or the other, version 2 improves the design in the ways that matter most in the field.</p>

<ul>
	<li><strong>It is harder to spot</strong></li>
	<li><strong>It handles heat better</strong></li>
	<li><strong>It is easier to retrieve</strong></li>
	<li><strong>It is easier to stabilize in a tree</strong></li>
	<li><strong>Its solar panel combining method is more efficient</strong></li>
	<li><strong>It can be managed remotely after deployment</strong></li>
	<li><strong>Its battery state can be checked over the mesh</strong></li>
</ul>

<p>That is exactly what a practical <strong>Solar Meshtastic</strong> node should do. It is not just about getting a radio to power on. It is about building something that can survive outside, stay useful, and remain manageable after it disappears into a tree canopy.</p>

<h2 id="faq">FAQ</h2>

<h3  data-faq-question="true">Why change the node from yellow to army green?</h3>

<p data-faq-answer="true">The yellow enclosure reflected heat well, but it was highly visible in a tree. Army green is much more discreet and blends into foliage better, making the node more stealthy.</p>

<h3  data-faq-question="true">Does the darker color create heat problems?</h3>

<p data-faq-answer="true">It can, which is why version 2 adds standoffs behind the solar panel. That creates an air gap between the panel and the enclosure so heat can dissipate more easily.</p>

<h3  data-faq-question="true">What are the extra loops at the bottom for?</h3>

<p data-faq-answer="true">They let you attach additional ropes for retrieval and for stabilizing the node so it does not spin freely in the tree. That makes deployment and recovery much easier.</p>

<h3  data-faq-question="true">Why use ideal diode modules instead of basic diodes?</h3>

<p data-faq-answer="true">The ideal diode modules reduce losses and prevent one shaded panel from drawing power from the others. They are more efficient than simple diodes, which matters when the total solar input is very small.</p>

<h3  data-faq-question="true">Can a Heltec V4 really run from three tiny solar panels?</h3>

<p data-faq-answer="true">That is the experiment. It may work if Bluetooth and Wi-Fi are off and power saving is enabled, but it is definitely close to the edge. If it does not hold up, the fallback is to switch to a lower-power board like a T114 or another NRF-based option.</p>

<h3  data-faq-question="true">Why disable Bluetooth on the tree node?</h3>

<p data-faq-answer="true">Bluetooth uses extra power, and once the node is mounted high up, direct Bluetooth access is not practical anyway. The better approach is to enable remote administration first, then turn Bluetooth off.</p>

<h3  data-faq-question="true">How is the node managed after Bluetooth is disabled?</h3>

<p data-faq-answer="true">Remote administration is configured using admin keys. An admin node's public key is added to the tree node, allowing settings to be changed over the LoRa network instead of over Bluetooth.</p>

<h3  data-faq-question="true">How do you check battery status remotely?</h3>

<p data-faq-answer="true">Enable telemetry on the tree node. Once telemetry is turned on, another authorized node can read device metrics such as battery percentage, battery voltage, uptime, and air utilization over the mesh.</p>

<h2 id="links">Links</h2>

<p><strong>Note: As an affiliate, I earn from qualifying purchases</strong></p>

<ul>
	<li>
	<p><strong>Heltec V4 (No Screen)</strong> - <a href="https://amzn.to/4dqVV4c">https://amzn.to/4dqVV4c</a></p>
	</li>
	<li>
	<p><strong>18650 Battery</strong> - <a href="https://amzn.to/4m95HKQ">https://amzn.to/4m95HKQ</a></p>
	</li>
	<li>
	<p><strong>Battery Holder</strong> - <a href="https://amzn.to/4jZW9Pz">https://amzn.to/4jZW9Pz</a></p>
	</li>
	<li>
	<p><strong>SMA Connector</strong> - <a href="https://amzn.to/4bvpuz8">https://amzn.to/4bvpuz8</a></p>
	</li>
	<li>
	<p><strong>915Mhz Antenna</strong> - <a href="https://amzn.to/3PmXJBi">https://amzn.to/3PmXJBi</a></p>
	</li>
	<li>
	<p><strong>XL0401 Ideal Diode Module</strong> - <a href="https://amzn.to/47PU5qd">https://amzn.to/47PU5qd</a></p>
	</li>
	<li>
	<p><strong>Solar Panels</strong> - <a href="https://amzn.to/47xSvJe">https://amzn.to/47xSvJe</a></p>
	</li>
	<li>
	<p><strong>3D Printable Files</strong> - <a href="https://www.printables.com/model/1640281-meshtastic-meshcore-tree-node">https://www.printables.com/model/1640281-meshtastic-meshcore-tree-node</a></p>
	</li>
	<li>
	<p><strong>Project files and UPDATES</strong> - <a href="https://hub.lorameshdevices.com/projects/solar-tree-node-meshtastic-meshcore">https://hub.lorameshdevices.com/projects/solar-tree-node-meshtastic-meshcore</a></p>
	</li>
</ul>

<p> </p>]]></content:encoded>
            </item>
                        <item>
                <title><![CDATA[SenseCAP M2, Lorawan: Build a Local LoRaWAN Network with ChirpStack]]></title>
                <link>https://www.lorameshdevices.com/blog/raspberry-pi/sensecap-m2-lorawan-build-a-local-lorawan-network-with-chirpstack.html</link>
                <guid>https://www.lorameshdevices.com/blog/raspberry-pi/sensecap-m2-lorawan-build-a-local-lorawan-network-with-chirpstack.html</guid>
                <pubDate>Thu, 02 Apr 2026 02:17:47 +0200</pubDate>
                <dc:creator><![CDATA[Vivian van Zyl]]></dc:creator>
                <description><![CDATA[If you have been playing with long-range LoRa before, you have probably seen the other path too: decentralized mesh networks like Meshtastic. LoRaWAN takes a different approach. Instead of everyone passing packets through each other, LoRaWAN is a standardized protocol for low-power sensors sending data over long range to dedicated gateways, which then forward that data over the internet to applications. 

This guide focuses on building a local LoRaWAN setup using the SenseCAP M2, Lorawan gateway and the built-in ChirpStack server. The goal is simple: receive sensor messages locally, keep your data closer to where it is collected, and be ready to add devices and profiles next. 

 

Table of Contents


	Why LoRaWAN (and how it differs from mesh LoRa)
	Meet the SenseCAP M2: hardware and connectivity options
	The two key pieces of software: Lucy and local ChirpStack
	Step 1: Power on safely and enter hotspot mode
	Step 2: Connect to the gateway hotspot and open Lucy
	Step 3: Connect the gateway to your LAN/Wi-Fi (not just hotspot)
	Step 4: Set system time and timezone
	Step 5: Update firmware
	Step 6: Configure the LoRa network server to use local ChirpStack
	Where this leaves you (and what comes next)
	FAQ
	Links


Why LoRaWAN (and how it differs from mesh LoRa)

LoRaWAN is designed for devices that run on batteries for a long time. Typical use cases include smart cities, agriculture, asset tracking, and industrial IoT. In practice, sensors transmit over LoRa to a gateway, and the gateway forwards received packets to a network server, which then makes the data available to applications via APIs. 

A key mental model: 


	LoRa is the long-range radio link between sensors and the gateway.
	LoRaWAN is the standardized network protocol managing how messages are sent, received, and interpreted.
	Network server (often ChirpStack) is where you define devices and where received messages become usable data.


Instead of relying on an online cloud platform, the SenseCAP M2 can run a built-in local network server. 

Meet the SenseCAP M2: hardware and connectivity options

The unit used here is the Seeed Studio SenseCAP M2 indoor multi-platform LoRaWAN gateway. It is not weather sealed, so it is meant for indoor setups. 


Pressing and holding the SenseCAP M2 button is how you trigger hotspot mode, allowing quick access to the gateway’s configuration interface.


What to notice on the hardware: 


	LoRa antenna connector (in this case a 915 MHz antenna)
	Power input
	Ethernet for wired LAN connections
	USB-C port
	Button used for mode changes and startup behavior
	nano SIM slot for 4G LTE connectivity (depending on your gateway version)
	microSD slot
	Status LEDs that help indicate mode (hotspot vs normal operation)


Different versions exist depending on which connectivity methods you want (Ethernet, Wi-Fi, 4G/LTE, or combinations). You also choose the correct regional frequency plan. The unit discussed uses US915. 

The two key pieces of software: Lucy and local ChirpStack

This is the part that makes the SenseCAP M2, Lorawan workflow particularly friendly if you want “local first”. The gateway runs two separate software components: 


	Lucy (configuration interface): configure the gateway settings and network connection.
	ChirpStack (local network server): receive LoRaWAN packets and manage devices, APIs, logs, and data display.


Why you should care: with the built-in local ChirpStack, you can start building and testing a working LoRaWAN network without immediately sending everything to an external cloud service. 


A high-level look at the local LoRaWAN flow: sensors send over LoRa to the SenseCAP M2 gateway, and the gateway’s built-in ChirpStack handles the network processing.


Step 1: Power on safely and enter hotspot mode

Start by connecting the LoRa antenna. The gateway can be sensitive to startup conditions, so it is a good habit not to power it before the antenna is attached. 

To enter hotspot mode: 


	Plug in power.
	Hold the button for 5 seconds.
	Watch the LEDs change from green to blue and begin flashing slowly.



Hotspot mode is active—the LED pattern indicates the SenseCAP M2 is ready for you to connect from your computer.


That blue flashing state indicates the gateway is now acting like a Wi-Fi hotspot so you can configure it right away. 

Step 2: Connect to the gateway hotspot and open Lucy

On your computer, connect to the SenseCAP access point (SSID typically appears as SenseCAP Access Point or similar). 

The default hotspot Wi-Fi password is shown in the quick start guide. In this setup it was: 

12345678 

Next, open a browser and go to the gateway’s hotspot IP address: 

http://192.168.168.1 

Lucy login credentials are printed on a sticker on the bottom of the gateway, including the default username and password. 


In Lucy, you’ll land on the LuCI status/dashboard area after connecting to the SenseCAP gateway. From here you can navigate to configuration options.


Step 3: Connect the gateway to your LAN/Wi-Fi (not just hotspot)

Hotspot mode is only meant to get you through initial setup. The next goal is to connect the gateway to your home or lab network so you can reach it consistently and so it can forward LoRaWAN packets upstream. 

Inside Lucy: 


	Go to Interfaces and select the appropriate path for network access (LAN, LTE, WWAN, etc.).
	Use the scan button on Wi-Fi networks.
	Select your Wi-Fi network (in the example, a private network).
	Enter the Wi-Fi password and submit.
	Save and Apply properly.


Important gotcha: if you only “save” and forget “save and apply,” rebooting can leave the gateway stuck in the old configuration and it may not reconnect to Wi-Fi. 


In Lucy, you’ll see the pending Wi-Fi/network changes and the “Save & Apply” controls—this is the step you must complete before expecting the gateway to reconnect after reboot.


After applying changes, wait for the gateway to come back online, then find its new IP address on your network (it may change once it joins Wi-Fi). 

Step 4: Set system time and timezone

In the system settings, sync time and set your timezone. Timezone matters for timestamps in logs and for consistent behavior across components. 

In the setup described, the timezone was set to America/New_York. 

Step 5: Update firmware

Check the firmware version and update if a newer build is available. The gateway includes an in-place update mechanism. 

While updating: 


	Do not power off the device while it is flashing or updating.
	Plan for a few minutes of update time and watch for LED activity changes.



During the OS upgrade, Lucy shows the download/progress state—use this as a reference that the gateway is actively upgrading. Don’t power it off while it’s working.


After completion, re-open Lucy and confirm the version is now current. 

Step 6: Configure the LoRa network server to use local ChirpStack

In the LoRa network settings, the gateway can forward packets to different destinations depending on your architecture. 

The useful option here is to choose the local network server running on the gateway itself. 

Once enabled, Lucy shows the IP address of the built-in ChirpStack instance. Open that server in a browser. 


Once connected, you’ll reach the SenseCAP/ChirpStack login page—log in to manage devices, APIs, and logs locally.


ChirpStack login is also provided by the gateway defaults (commonly admin/admin in this setup). After logging in, you should be able to access sections like: 


	Devices (where you will add sensors later)
	API endpoints and integrations
	Logs and raw event views


Where this leaves you (and what comes next)

At this stage, the gateway is: 


	Powered on with the correct LoRa antenna connected
	Configured via Lucy
	Joined to your Wi-Fi network
	Time-synced and firmware-updated
	Set to use the built-in local ChirpStack server for LoRaWAN processing


The next step is what makes it “real” for sensors: connecting devices, creating device profiles, and verifying that uplink messages show up in ChirpStack as expected. 

FAQ


Do I have to use the hotspot method to configure the SenseCAP M2, Lorawan gateway?


No. You can also connect via Ethernet using your LAN. Hotspot mode is simply convenient for initial setup when you do not yet know the gateway’s network IP address. 


Why is local ChirpStack useful?


It lets you keep packet processing and sensor data on your local network instead of relying on an external cloud platform. This can simplify early testing and improve privacy and control. 


What connectivity options do SenseCAP M2 versions usually offer?


Common options include Ethernet, Wi-Fi, and some versions also include 4G LTE via a nano SIM. The exact mix depends on the specific model you purchased. 


Which regional frequency plan should I choose?


Choose the version that matches your region (for example, US915 for many parts of the United States). Using the wrong region will prevent proper LoRaWAN operation. 


What is the most common setup mistake people make?


In this workflow, forgetting to use “Save and Apply” after changing Wi-Fi settings. Without applying changes, the gateway may not reconnect as expected after reboot. 

Links


	Seeed SenseCAP M2 (US) - https://www.seeedstudio.com/SenseCAP-Multi-Platform-LoRaWAN-Indoor-Gateway-SX1302-US915-p-5472.html?sensecap_affiliate=agiE1S0&referring_service=link
	Seeed Solar Node - https://www.seeedstudio.com/SenseCAP-Solar-Node-P1-for-Meshtastic-LoRa-p-6425.html?sensecap_affiliate=agiE1S0&referring_service=link


  
]]></description>
                <content:encoded><![CDATA[<p>If you have been playing with long-range LoRa before, you have probably seen the other path too: decentralized mesh networks like <a href="http://lorameshdevices.com/blog/what-is-meshtastic-and-what-is-it-used-for.html" target="_blank">Meshtastic</a>. LoRaWAN takes a different approach. Instead of everyone passing packets through each other, LoRaWAN is a standardized protocol for low-power sensors sending data over long range to dedicated gateways, which then forward that data over the internet to applications.</p>

<p>This guide focuses on building a <strong>local</strong> LoRaWAN setup using the <strong>SenseCAP M2, Lorawan</strong> gateway and the built-in ChirpStack server. The goal is simple: receive sensor messages locally, keep your data closer to where it is collected, and be ready to add devices and profiles next.</p>

<p><span style="display: flex; justify-content: center;"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" src="https://www.youtube.com/embed/eS4iCEieeow" style="width: 100%; max-width: 550px; aspect-ratio: 16/9;" title="YouTube video player"></iframe></span></p>

<h2>Table of Contents</h2>

<ul>
	<li><a href="#why-lorawan-and-how-it-differs-from-mesh-lora">Why LoRaWAN (and how it differs from mesh LoRa)</a></li>
	<li><a href="#meet-the-sensecap-m2-hardware-and-connectivity-options">Meet the SenseCAP M2: hardware and connectivity options</a></li>
	<li><a href="#the-two-key-pieces-of-software-lucy-and-local-chirpstack">The two key pieces of software: Lucy and local ChirpStack</a></li>
	<li><a href="#step-1-power-on-safely-and-enter-hotspot-mode">Step 1: Power on safely and enter hotspot mode</a></li>
	<li><a href="#step-2-connect-to-the-gateway-hotspot-and-open-lucy">Step 2: Connect to the gateway hotspot and open Lucy</a></li>
	<li><a href="#step-3-connect-the-gateway-to-your-lan-wi-fi-not-just-hotspot">Step 3: Connect the gateway to your LAN/Wi-Fi (not just hotspot)</a></li>
	<li><a href="#step-4-set-system-time-and-timezone">Step 4: Set system time and timezone</a></li>
	<li><a href="#step-5-update-firmware">Step 5: Update firmware</a></li>
	<li><a href="#step-6-configure-the-lora-network-server-to-use-local-chirpstack">Step 6: Configure the LoRa network server to use local ChirpStack</a></li>
	<li><a href="#where-this-leaves-you-and-what-comes-next">Where this leaves you (and what comes next)</a></li>
	<li><a href="#faq">FAQ</a></li>
	<li><a href="#links">Links</a></li>
</ul>

<h2 id="why-lorawan-and-how-it-differs-from-mesh-lora">Why LoRaWAN (and how it differs from mesh LoRa)</h2>

<p>LoRaWAN is designed for devices that run on batteries for a long time. Typical use cases include smart cities, agriculture, asset tracking, and industrial IoT. In practice, sensors transmit over LoRa to a gateway, and the gateway forwards received packets to a network server, which then makes the data available to applications via APIs.</p>

<p>A key mental model:</p>

<ul>
	<li><strong>LoRa</strong> is the long-range radio link between sensors and the gateway.</li>
	<li><strong>LoRaWAN</strong> is the standardized network protocol managing how messages are sent, received, and interpreted.</li>
	<li><strong>Network server</strong> (often ChirpStack) is where you define devices and where received messages become usable data.</li>
</ul>

<p>Instead of relying on an online cloud platform, the SenseCAP M2 can run a built-in <a href="https://www.lorameshdevices.com/blog" target="_blank">local network</a> server.</p>

<h2 id="meet-the-sensecap-m2-hardware-and-connectivity-options">Meet the SenseCAP M2: hardware and connectivity options</h2>

<p>The unit used here is the <strong>Seeed Studio SenseCAP M2 indoor multi-platform LoRaWAN gateway</strong>. It is not weather sealed, so it is meant for indoor setups.</p>

<figure style="justify-self: center"><img alt="SenseCAP M2 hotspot mode button being pressed and held" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FS8k6d88NFCWNnfacoCrO%2Fscreenshots%2F55f0a292-9082-4743-a31b-35275d41279f.webp?alt=media&token=d7c3a154-8a94-40af-98d0-b2d18c6f41f4" style="object-fit: cover;" width="100%">
<figcaption id="cap-21b12d5" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Pressing and holding the SenseCAP M2 button is how you trigger hotspot mode, allowing quick access to the gateway’s configuration interface.</figcaption>
</figure>

<p><strong>What to notice on the hardware:</strong></p>

<ul>
	<li><strong>LoRa antenna connector</strong> (in this case a 915 MHz antenna)</li>
	<li><strong>Power input</strong></li>
	<li><strong>Ethernet</strong> for wired LAN connections</li>
	<li><strong>USB-C</strong> port</li>
	<li><strong>Button</strong> used for mode changes and startup behavior</li>
	<li><strong>nano SIM</strong> slot for 4G LTE connectivity (depending on your gateway version)</li>
	<li><strong>microSD slot</strong></li>
	<li>Status <strong>LEDs</strong> that help indicate mode (hotspot vs normal operation)</li>
</ul>

<p>Different versions exist depending on which connectivity methods you want (Ethernet, Wi-Fi, 4G/LTE, or combinations). You also choose the correct regional frequency plan. The unit discussed uses <strong>US915</strong>.</p>

<h2 id="the-two-key-pieces-of-software-lucy-and-local-chirpstack">The two key pieces of software: Lucy and local ChirpStack</h2>

<p>This is the part that makes the SenseCAP M2, Lorawan workflow particularly friendly if you want “local first”. The gateway runs two separate software components:</p>

<ul>
	<li><strong>Lucy</strong> (configuration interface): configure the gateway settings and network connection.</li>
	<li><strong>ChirpStack</strong> (local network server): receive LoRaWAN packets and manage devices, APIs, logs, and data display.</li>
</ul>

<p><strong>Why you should care:</strong> with the built-in local ChirpStack, you can start building and testing a working LoRaWAN network without immediately sending everything to an external cloud service.</p>

<figure style="justify-self: center"><img alt="Diagram showing SenseCAP M2 gateway with built-in ChirpStack local LoRaWAN network server connecting LoRa sensors to applications" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FS8k6d88NFCWNnfacoCrO%2Fscreenshots%2Fbbecf1f9-79ff-40c9-9113-8daef79fed46.webp?alt=media&token=50720058-9c10-4102-ab9f-5da841dccea6" style="object-fit: cover;" width="100%">
<figcaption id="cap-a146e07" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">A high-level look at the local LoRaWAN flow: sensors send over LoRa to the SenseCAP M2 gateway, and the gateway’s built-in ChirpStack handles the network processing.</figcaption>
</figure>

<h2 id="step-1-power-on-safely-and-enter-hotspot-mode">Step 1: Power on safely and enter hotspot mode</h2>

<p>Start by connecting the <strong>LoRa antenna</strong>. The gateway can be sensitive to startup conditions, so it is a good habit not to power it before the antenna is attached.</p>

<p>To enter hotspot mode:</p>

<ol>
	<li>Plug in power.</li>
	<li>Hold the button for <strong>5 seconds</strong>.</li>
	<li>Watch the LEDs change from <strong>green to blue</strong> and begin flashing slowly.</li>
</ol>

<figure style="justify-self: center"><img alt="SenseCAP M2 gateway LED indicator showing hotspot mode status" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FS8k6d88NFCWNnfacoCrO%2Fscreenshots%2F709b88ec-7a22-410f-bc94-5531a20b815b.webp?alt=media&token=f630486a-80c6-4cae-94ef-08741e77d021" style="object-fit: cover;" width="100%">
<figcaption id="cap-25660d5" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Hotspot mode is active—the LED pattern indicates the SenseCAP M2 is ready for you to connect from your computer.</figcaption>
</figure>

<p>That blue flashing state indicates the gateway is now acting like a Wi-Fi hotspot so you can configure it right away.</p>

<h2 id="step-2-connect-to-the-gateway-hotspot-and-open-lucy">Step 2: Connect to the gateway hotspot and open Lucy</h2>

<p>On your computer, connect to the SenseCAP access point (SSID typically appears as <strong>SenseCAP Access Point</strong> or similar).</p>

<p>The default hotspot Wi-Fi password is shown in the quick start guide. In this setup it was:</p>

<p><strong>12345678</strong></p>

<p>Next, open a browser and go to the gateway’s hotspot IP address:</p>

<p><strong>http://192.168.168.1</strong></p>

<p>Lucy login credentials are printed on a sticker on the bottom of the gateway, including the default <strong>username</strong> and <strong>password</strong>.</p>

<figure style="justify-self: center"><img alt="SenseCAP LuCI interface showing overview and real-time graphs" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FS8k6d88NFCWNnfacoCrO%2Fscreenshots%2F1effc0a2-0786-49bb-accc-0d0238eac527.webp?alt=media&token=844479f0-5900-4758-960d-b51e3e0fc9ef" style="object-fit: cover;" width="100%">
<figcaption id="cap-02fc143" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">In Lucy, you’ll land on the LuCI status/dashboard area after connecting to the SenseCAP gateway. From here you can navigate to configuration options.</figcaption>
</figure>

<h2 id="step-3-connect-the-gateway-to-your-lan-wi-fi-not-just-hotspot">Step 3: Connect the gateway to your LAN/Wi-Fi (not just hotspot)</h2>

<p>Hotspot mode is only meant to get you through initial setup. The next goal is to connect the gateway to your home or lab network so you can reach it consistently and so it can forward LoRaWAN packets upstream.</p>

<p>Inside Lucy:</p>

<ul>
	<li>Go to <strong>Interfaces</strong> and select the appropriate path for network access (LAN, LTE, WWAN, etc.).</li>
	<li>Use the <strong>scan</strong> button on Wi-Fi networks.</li>
	<li>Select your Wi-Fi network (in the example, a private network).</li>
	<li>Enter the Wi-Fi password and submit.</li>
	<li><strong>Save and Apply</strong> properly.</li>
</ul>

<p><strong>Important gotcha:</strong> if you only “save” and forget “save and apply,” rebooting can leave the gateway stuck in the old configuration and it may not reconnect to Wi-Fi.</p>

<figure style="justify-self: center"><img alt="SenseCAP M2 Lucy Wireless page showing Save & Apply and Save/Reset buttons for pending changes" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FS8k6d88NFCWNnfacoCrO%2Fscreenshots%2Fcc7b170a-8b75-4ea5-adc1-3c2cd945fdcd.webp?alt=media&token=979e8cb0-03bb-477a-9a16-4cfe3885dcfa" style="object-fit: cover;" width="100%">
<figcaption id="cap-6b62dde" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">In Lucy, you’ll see the pending Wi-Fi/network changes and the “Save & Apply” controls—this is the step you must complete before expecting the gateway to reconnect after reboot.</figcaption>
</figure>

<p>After applying changes, wait for the gateway to come back online, then find its new IP address on your network (it may change once it joins Wi-Fi).</p>

<h2 id="step-4-set-system-time-and-timezone">Step 4: Set system time and timezone</h2>

<p>In the system settings, sync time and set your timezone. Timezone matters for timestamps in logs and for consistent behavior across components.</p>

<p>In the setup described, the timezone was set to <strong>America/New_York</strong>.</p>

<h2 id="step-5-update-firmware">Step 5: Update firmware</h2>

<p>Check the firmware version and update if a newer build is available. The gateway includes an in-place update mechanism.</p>

<p>While updating:</p>

<ul>
	<li>Do not power off the device while it is flashing or updating.</li>
	<li>Plan for a few minutes of update time and watch for LED activity changes.</li>
</ul>

<figure style="justify-self: center"><img alt="Lucy OS upgrade progress while downloading on SenseCAP M2 gateway" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FS8k6d88NFCWNnfacoCrO%2Fscreenshots%2Fdf12e897-ec4e-4c99-932b-8abb3f300f75.webp?alt=media&token=f500bd7c-c792-473f-b38e-3607fa08e4cb" style="object-fit: cover;" width="100%">
<figcaption id="cap-3b6c118" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">During the OS upgrade, Lucy shows the download/progress state—use this as a reference that the gateway is actively upgrading. Don’t power it off while it’s working.</figcaption>
</figure>

<p>After completion, re-open Lucy and confirm the version is now current.</p>

<h2 id="step-6-configure-the-lora-network-server-to-use-local-chirpstack">Step 6: Configure the LoRa network server to use local ChirpStack</h2>

<p>In the LoRa network settings, the gateway can forward packets to different destinations depending on your architecture.</p>

<p>The useful option here is to choose the <strong>local network server</strong> running on the gateway itself.</p>

<p>Once enabled, Lucy shows the IP address of the built-in ChirpStack instance. Open that server in a browser.</p>

<figure style="justify-self: center"><img alt="Screenshot of SenseCAP login page for accessing the local ChirpStack server" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FS8k6d88NFCWNnfacoCrO%2Fscreenshots%2Ff5ace03d-b7b7-4d5c-8f00-30157e43014d.webp?alt=media&token=17bed9d2-d418-43e5-80f7-4e31594dfa6c" style="object-fit: cover;" width="100%">
<figcaption id="cap-e5c6187" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Once connected, you’ll reach the SenseCAP/ChirpStack login page—log in to manage devices, APIs, and logs locally.</figcaption>
</figure>

<p>ChirpStack login is also provided by the gateway defaults (commonly <strong>admin/admin</strong> in this setup). After logging in, you should be able to access sections like:</p>

<ul>
	<li><strong>Devices</strong> (where you will add sensors later)</li>
	<li><strong>API</strong> endpoints and integrations</li>
	<li><strong>Logs</strong> and raw event views</li>
</ul>

<h2 id="where-this-leaves-you-and-what-comes-next">Where this leaves you (and what comes next)</h2>

<p>At this stage, the gateway is:</p>

<ul>
	<li>Powered on with the correct LoRa antenna connected</li>
	<li>Configured via Lucy</li>
	<li>Joined to your Wi-Fi network</li>
	<li>Time-synced and firmware-updated</li>
	<li>Set to use the built-in local ChirpStack server for LoRaWAN processing</li>
</ul>

<p>The next step is what makes it “real” for sensors: connecting devices, creating device profiles, and verifying that uplink messages show up in ChirpStack as expected.</p>

<h2 id="faq">FAQ</h2>

<h3  data-faq-question="true">Do I have to use the hotspot method to configure the SenseCAP M2, Lorawan gateway?</h3>

<p data-faq-answer="true">No. You can also connect via Ethernet using your LAN. Hotspot mode is simply convenient for initial setup when you do not yet know the gateway’s network IP address.</p>

<h3  data-faq-question="true">Why is local ChirpStack useful?</h3>

<p data-faq-answer="true">It lets you keep packet processing and sensor data on your local network instead of relying on an external cloud platform. This can simplify early testing and improve privacy and control.</p>

<h3  data-faq-question="true">What connectivity options do SenseCAP M2 versions usually offer?</h3>

<p data-faq-answer="true">Common options include Ethernet, Wi-Fi, and some versions also include 4G LTE via a nano SIM. The exact mix depends on the specific model you purchased.</p>

<h3  data-faq-question="true">Which regional frequency plan should I choose?</h3>

<p data-faq-answer="true">Choose the version that matches your region (for example, US915 for many parts of the United States). Using the wrong region will prevent proper LoRaWAN operation.</p>

<h3  data-faq-question="true">What is the most common setup mistake people make?</h3>

<p data-faq-answer="true">In this workflow, forgetting to use “Save and Apply” after changing Wi-Fi settings. Without applying changes, the gateway may not reconnect as expected after reboot.</p>

<h2 id="links">Links</h2>

<ul>
	<li><a href="https://www.seeedstudio.com/SenseCAP-Multi-Platform-LoRaWAN-Indoor-Gateway-SX1302-US915-p-5472.html?sensecap_affiliate=agiE1S0&referring_service=link">Seeed SenseCAP M2 (US) - https://www.seeedstudio.com/SenseCAP-Multi-Platform-LoRaWAN-Indoor-Gateway-SX1302-US915-p-5472.html?sensecap_affiliate=agiE1S0&referring_service=link</a></li>
	<li><a href="https://www.seeedstudio.com/SenseCAP-Solar-Node-P1-for-Meshtastic-LoRa-p-6425.html?sensecap_affiliate=agiE1S0&referring_service=link">Seeed Solar Node - https://www.seeedstudio.com/SenseCAP-Solar-Node-P1-for-Meshtastic-LoRa-p-6425.html?sensecap_affiliate=agiE1S0&referring_service=link</a></li>
</ul>

<p> </p>]]></content:encoded>
            </item>
                        <item>
                <title><![CDATA[LoRa DIY Long Range Data: REYAX RYLR999 LoRa to Bluetooth Bridge]]></title>
                <link>https://www.lorameshdevices.com/blog/esp32/lora-diy-long-range-data-reyax-rylr999-lora-to-bluetooth-bridge.html</link>
                <guid>https://www.lorameshdevices.com/blog/esp32/lora-diy-long-range-data-reyax-rylr999-lora-to-bluetooth-bridge.html</guid>
                <pubDate>Sat, 28 Mar 2026 18:08:28 +0100</pubDate>
                <dc:creator><![CDATA[Vivian van Zyl]]></dc:creator>
                <description><![CDATA[  

Ever wished you could move a small amount of data over miles without relying on Wi-Fi, cellular service, or a full mesh network? That was exactly the point of this build: use LoRa as the long-range link, then use Bluetooth as the “local display” so you can read messages directly on your phone. 


With the REYAX “send” node and “recv” node on the bench, the LightBlue app shows incoming Bluetooth LE messages as the packets arrive.


This setup uses REYAX RYLR999 chips, which combine LoRa 915MHz and Bluetooth in one module. The cool part is the bridging approach: send over LoRa from one node, and on the receiving side bridge the data back out to Bluetooth so your mobile app can subscribe to what arrives. 

What makes the RYLR999 interesting?

Inside each node is the latest REYAX silicon (the RYLR999). What makes these chips especially compelling for DIY is that they bring both radios to the table: 


	LoRa (915MHz) for long-range transmission
	Bluetooth for reading data locally


There are also some practical details that make builds easier. The nodes can provide a strong transmit capability (described as 30 dBm LoRa output) and they support proper external antennas. Earlier versions often relied on smaller built-in antenna setups. Here, you get IPX connectors, so you can mount real antennas tuned for: 


	915MHz LoRa
	2.4GHz Bluetooth


Finally, there are separate UART interfaces for the LoRa side and the Bluetooth side. The bridge is conceptually simple: feed data into the module over one interface, transmit across LoRa, and then output it over the other side so a phone can see it. 


A clearer wiring-focused shot of the two-node bridge—both enclosures are set up side-by-side while the phone app subscribes to the Bluetooth characteristic.


The core idea: bridge LoRa to Bluetooth

The project’s architecture is two nodes: 


	Sending node: generates or receives a message, sends it over LoRa.
	Receiving node: receives the LoRa payload, bridges it out over Bluetooth.


On the phone side, the user workflow is straightforward. A mobile app connects via Bluetooth LE, subscribes to the incoming characteristic, and prints the received messages as they arrive. 


Why this matters (beyond “range”)


This isn’t about building a full LoRa network or replacing every connectivity option. It’s a lower-level approach: if you only need to move small packets of data from point A to point B, LoRa does the long-distance part, and Bluetooth does the human-friendly part. 

That’s why the idea fits real-world sensor use cases like: 


	water level monitoring
	agriculture and livestock telemetry
	emergency and off-grid alerts
	infrastructure monitoring
	DIY prototypes that need “it just works” connectivity


Building the nodes (3D printed cases + real antennas)

Having chips sitting on a bench is annoying long-term, so the build started with 3D-printed enclosures. Each enclosure includes: 


	two holes on top to mount the LoRa and Bluetooth antennas
	a bottom opening so the node can be powered


After the mechanical build, the first steps were functional testing: 


	connect the chip to a PC using a USB-to-serial adapter
	send commands like reset and addressing (AT-style commands)
	confirm that a “hello” message successfully transmits and is received


Then the Bluetooth bridging behavior was added via the Bluetooth side jumpers/wiring so that messages appear on the phone app. 


The receiving node is up and running—Bluetooth on the phone is actively receiving the “message” notifications while the LoRa side transmits.


Generating test messages with ESP32-C3

To prove the concept reliably, an ESP32-C3 was used as a message generator on the sending node side. The reason is simple: it’s easy to send a periodic payload without needing external sensors while you validate the radio link. 

The sending logic was “send every 10 seconds.” Each packet contained a small string like: 


	“message: 52”, then 53, 54, and so on


Those messages travel: 


	from the ESP32-C3 to the REYAX module via UART
	over LoRa to the receiving REYAX node
	then bridged out over Bluetooth LE
	and finally displayed in the mobile app


For the phone UI, the app used was LightBlue. The workflow was: 


	connect to the device via Bluetooth LE
	select the correct characteristic
	subscribe to “messages received”
	display incoming payloads as UTF-8 strings


Power notes you should not skip

The demo used power banks for convenience, but the important lesson is voltage compatibility: 


	These chips do not work on 3.3V.
	They require 5V.


So even if your ESP32-C3 runs happily at 3.3V, the LoRa/Bluetooth nodes still need the proper 5V supply. In this build, the ESP32-C3 primarily served as a logic sender, while the Bluetooth-focused side used wiring to ensure it still received 5V. 

Real-world range test at Fort De Soto

The most convincing part was taking the system outside and seeing what it could do with actual obstructions, distance, and real antenna placement. 


Pier to far parking lot


On the pier, the receiver kept getting packets as the sending node transmitted every 10 seconds. The narrator notes packet numbers climbing steadily, and then continued movement toward longer distances. 

As the receiver moved farther, the link still produced usable traffic, even showing error packets along the way. Importantly, the test clarified that the result was achieved with a standard antenna, not an exotic custom antenna setup. 


Close-up of the phone UI receiving LoRa payloads over Bluetooth LE as the test continues—this is what you’re trying to reproduce with your own nodes.



North beach distance (including “behind trees and bushes”)


The system was carried toward the far side and into locations where signal might be partially blocked. The receiver showed reliable packet reception during movement and reported values that included: 


	RSSI (signal strength)
	SNR (signal to noise ratio)


Even when RSSI dropped significantly, the receiver still managed at least some successful decodes. That’s exactly what you want to know for sensor deployments: you need to know where “maybe it will work” turns into “it’s consistently readable.” 


Long-range check continues along the beach path—receiver and antenna are positioned to maximize signal for decoding reliability.



Concrete bunkers: still receiving, but decoding may fail


One of the more brutal tests was inside bunkers. The receiver recorded activity (it could “receive something”), but decoding failed with an error reported (an “Error 12”), which is a realistic reminder: 


	RF can sometimes penetrate, but decoding depends on enough SNR.
	Expect better results outdoors than inside thick concrete.



In the concrete bunker test, the receiver still shows incoming activity on the phone app—even though decoding can be unreliable when RF/SNR are poor.



Closing the loop: finding the source


The receiver eventually got much stronger RSSI again closer to the sending node, and packet numbers increased reliably. As the nodes approached alignment and separation decreased, the link became clearly stable. 

That last part is practically useful. In the field, knowing whether you can “hunt down” a transmitting sensor by walking toward increasing signal helps with commissioning and troubleshooting. 

Common DIY applications for this LoRa + Bluetooth bridge

This bridging approach is a great fit when you want: 


	low data rates (small status updates)
	long distance without Wi-Fi or cellular
	easy inspection using a phone app
	a simple receiver that outputs readable Bluetooth data


Examples that map well to the demo: 


	a pump or tank sensor sending periodic “level” values
	a gate sensor that reports “open/closed”
	a weather station that transmits short summaries
	off-grid alarms that trigger periodic updates for confirmation


FAQ



Is this the same thing as Meshtastic or LoRaWAN?


No. This is a simpler “link” approach. It doesn’t rely on a mesh system or LoRaWAN infrastructure. The goal is point-to-point long-range transmission with a Bluetooth bridge for the user interface. 




Why bridge to Bluetooth at the receiver?


Bluetooth makes the received data easy to view on a phone without extra gateways. Your mobile app can connect via Bluetooth LE and subscribe to the incoming messages directly. 




What antenna setup is required?


The build uses external antennas mounted through IPX connectors. A 915MHz LoRa antenna handles the long-range link, and a 2.4GHz Bluetooth antenna improves the local reception. The range test specifically mentions using a standard antenna, which still performed well outdoors. 




Can I power these nodes with 3.3V?


No. The chips require 5V operation. Even if your microcontroller runs at 3.3V, provide 5V to the RYLR999 nodes. 




How often should you send data?


For a test, the demo used a message every 10 seconds. In real deployments, you can tune update rate based on battery life and how quickly you need the data. 




Where can the project files and source code be found?


Project files are available at the project link listed below, and the “Bluetooth to LoRa Bridge” project includes the hardware and software components used in this approach. 


Project link

Project files: Bluetooth to LoRa Bridge 

Links: (Note: As an affiliate, I earn from qualifying purchases) 


	RYLR999 Amazon
	RYLR999 Digkey
	RYLR999 eBay
	RYLR999 US Distributor Lemos International
	RYLR999 US Distributor Micro Technology Group
	3D Printer I use (1 color)
	3D Printer I use (multi color)
	USB To Serial
	Project files


  
]]></description>
                <content:encoded><![CDATA[<p> </p>

<p>Ever wished you could move a small amount of data over miles without relying on Wi-Fi, cellular service, or a full mesh network? That was exactly the point of this build: use <strong>LoRa</strong> as the long-range link, then use Bluetooth as the “local display” so you can read messages directly on your phone.</p>

<figure style="justify-self: center"><img alt="Smartphone running LightBlue with REYAX RYLR999 send and receive nodes and external antennas on the workbench" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FPvjxYypn6OvXSnPTYwtl%2Fscreenshots%2Feeb0a7c5-229b-460f-8fe3-260d8782d515.webp?alt=media&token=6b89ad55-6728-47e4-9048-afe414113873" style="object-fit: cover;" width="100%">
<figcaption id="cap-77e5d68" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">With the REYAX “send” node and “recv” node on the bench, the LightBlue app shows incoming Bluetooth LE messages as the packets arrive.</figcaption>
</figure>

<p>This setup uses REYAX RYLR999 chips, which combine <strong>LoRa 915MHz</strong> and <strong>Bluetooth</strong> in one module. The cool part is the bridging approach: send over LoRa from one node, and on the receiving side bridge the data back out to Bluetooth so your mobile app can subscribe to what arrives.</p>

<h2>What makes the RYLR999 interesting?</h2>

<p>Inside each node is the latest REYAX silicon (the <strong>RYLR999</strong>). What makes these chips especially compelling for DIY is that they bring both radios to the table:</p>

<ul>
	<li><strong>LoRa (915MHz)</strong> for long-range transmission</li>
	<li><strong>Bluetooth</strong> for reading data locally</li>
</ul>

<p>There are also some practical details that make builds easier. The nodes can provide a strong transmit capability (described as <strong>30 dBm</strong> LoRa output) and they support proper external antennas. Earlier versions often relied on smaller built-in antenna setups. Here, you get <strong>IPX connectors</strong>, so you can mount real antennas tuned for:</p>

<ul>
	<li><strong>915MHz LoRa</strong></li>
	<li><strong>2.4GHz Bluetooth</strong></li>
</ul>

<p>Finally, there are <strong>separate UART interfaces</strong> for the LoRa side and the Bluetooth side. The bridge is conceptually simple: feed data into the module over one interface, transmit across LoRa, and then output it over the other side so a phone can see it.</p>

<figure style="justify-self: center"><img alt="Two RYLR999 bridge nodes side by side with wiring visible and phone app ready to read incoming Bluetooth LE messages" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FPvjxYypn6OvXSnPTYwtl%2Fscreenshots%2F0b10fdc2-d0f3-4afd-a1d8-2cb808e9dd36.webp?alt=media&token=e15e84c5-4995-440b-b8be-8bd6f64d2a60" style="object-fit: cover;" width="100%">
<figcaption id="cap-3278a43" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">A clearer wiring-focused shot of the two-node bridge—both enclosures are set up side-by-side while the phone app subscribes to the Bluetooth characteristic.</figcaption>
</figure>

<h2>The core idea: bridge LoRa to Bluetooth</h2>

<p>The project’s architecture is two nodes:</p>

<ul>
	<li><strong>Sending node</strong>: generates or receives a message, sends it over LoRa.</li>
	<li><strong>Receiving node</strong>: receives the LoRa payload, bridges it out over Bluetooth.</li>
</ul>

<p>On the phone side, the user workflow is straightforward. A mobile app connects via <strong>Bluetooth LE</strong>, subscribes to the incoming characteristic, and prints the received messages as they arrive.</p>

<h1>Why this matters (beyond “range”)</h1>

<p>This isn’t about building a full LoRa network or replacing every connectivity option. It’s a lower-level approach: if you only need to move small packets of data from point A to point B, <strong>LoRa</strong> does the long-distance part, and Bluetooth does the human-friendly part.</p>

<p>That’s why the idea fits real-world sensor use cases like:</p>

<ul>
	<li>water level monitoring</li>
	<li>agriculture and livestock telemetry</li>
	<li>emergency and off-grid alerts</li>
	<li>infrastructure monitoring</li>
	<li>DIY prototypes that need “it just works” connectivity</li>
</ul>

<h2>Building the nodes (3D printed cases + real antennas)</h2>

<p>Having chips sitting on a bench is annoying long-term, so the build started with <strong>3D-printed enclosures</strong>. Each enclosure includes:</p>

<ul>
	<li>two holes on top to mount the LoRa and Bluetooth antennas</li>
	<li>a bottom opening so the node can be powered</li>
</ul>

<p>After the mechanical build, the first steps were functional testing:</p>

<ul>
	<li>connect the chip to a PC using a <strong>USB-to-serial</strong> adapter</li>
	<li>send commands like reset and addressing (AT-style commands)</li>
	<li>confirm that a “hello” message successfully transmits and is received</li>
</ul>

<p>Then the Bluetooth bridging behavior was added via the Bluetooth side jumpers/wiring so that messages appear on the phone app.</p>

<figure style="justify-self: center"><img alt="Phone connected via Bluetooth LE showing incoming LoRa-to-Bluetooth messages while the REYAX bridge nodes run in green 3D-printed enclosures with antennas" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FPvjxYypn6OvXSnPTYwtl%2Fscreenshots%2F0ff4460d-2047-4874-8db4-92294726bcc8.webp?alt=media&token=2a1e77ec-9a45-40a0-8e96-169de9c9851b" style="object-fit: cover;" width="100%">
<figcaption id="cap-4a46c22" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">The receiving node is up and running—Bluetooth on the phone is actively receiving the “message” notifications while the LoRa side transmits.</figcaption>
</figure>

<h2>Generating test messages with ESP32-C3</h2>

<p>To prove the concept reliably, an ESP32-C3 was used as a message generator on the sending node side. The reason is simple: it’s easy to send a periodic payload without needing external sensors while you validate the radio link.</p>

<p>The sending logic was “send every 10 seconds.” Each packet contained a small string like:</p>

<ul>
	<li><strong>“message: 52”</strong>, then 53, 54, and so on</li>
</ul>

<p>Those messages travel:</p>

<ol>
	<li>from the ESP32-C3 to the REYAX module via UART</li>
	<li>over <strong>LoRa</strong> to the receiving REYAX node</li>
	<li>then bridged out over <strong>Bluetooth LE</strong></li>
	<li>and finally displayed in the mobile app</li>
</ol>

<p>For the phone UI, the app used was <strong>LightBlue</strong>. The workflow was:</p>

<ul>
	<li>connect to the device via Bluetooth LE</li>
	<li>select the correct characteristic</li>
	<li>subscribe to “messages received”</li>
	<li>display incoming payloads as UTF-8 strings</li>
</ul>

<h2>Power notes you should not skip</h2>

<p>The demo used power banks for convenience, but the important lesson is voltage compatibility:</p>

<ul>
	<li><strong>These chips do not work on 3.3V.</strong></li>
	<li><strong>They require 5V.</strong></li>
</ul>

<p>So even if your ESP32-C3 runs happily at 3.3V, the LoRa/Bluetooth nodes still need the proper 5V supply. In this build, the ESP32-C3 primarily served as a logic sender, while the Bluetooth-focused side used wiring to ensure it still received 5V.</p>

<h2>Real-world range test at Fort De Soto</h2>

<p>The most convincing part was taking the system outside and seeing what it could do with actual obstructions, distance, and real antenna placement.</p>

<h1>Pier to far parking lot</h1>

<p>On the pier, the receiver kept getting packets as the sending node transmitted every 10 seconds. The narrator notes packet numbers climbing steadily, and then continued movement toward longer distances.</p>

<p>As the receiver moved farther, the link still produced usable traffic, even showing error packets along the way. Importantly, the test clarified that the result was achieved with <strong>a standard antenna</strong>, not an exotic custom antenna setup.</p>

<figure style="justify-self: center"><img alt="Close-up of smartphone app showing received messages from LoRa via Bluetooth LE during range test" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FPvjxYypn6OvXSnPTYwtl%2Fscreenshots%2F17dc978a-dab8-491b-a406-3a6ae192027c.webp?alt=media&token=97f07e2e-5277-4afa-a75c-79b090391b13" style="object-fit: cover;" width="100%">
<figcaption id="cap-d834ecc" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Close-up of the phone UI receiving LoRa payloads over Bluetooth LE as the test continues—this is what you’re trying to reproduce with your own nodes.</figcaption>
</figure>

<h1>North beach distance (including “behind trees and bushes”)</h1>

<p>The system was carried toward the far side and into locations where signal might be partially blocked. The receiver showed reliable packet reception during movement and reported values that included:</p>

<ul>
	<li><strong>RSSI</strong> (signal strength)</li>
	<li><strong>SNR</strong> (signal to noise ratio)</li>
</ul>

<p>Even when RSSI dropped significantly, the receiver still managed at least some successful decodes. That’s exactly what you want to know for sensor deployments: you need to know where “maybe it will work” turns into “it’s consistently readable.”</p>

<figure style="justify-self: center"><img alt="Hand positioning LoRa receiver antenna outdoors on a beach path near the water" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FPvjxYypn6OvXSnPTYwtl%2Fscreenshots%2Fb4ff5bb0-7b18-4630-b29e-f5a71888f907.webp?alt=media&token=a9a0b12f-5aa0-4f92-8ec1-fd9aa486034d" style="object-fit: cover;" width="100%">
<figcaption id="cap-ba975df" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Long-range check continues along the beach path—receiver and antenna are positioned to maximize signal for decoding reliability.</figcaption>
</figure>

<h1>Concrete bunkers: still receiving, but decoding may fail</h1>

<p>One of the more brutal tests was inside bunkers. The receiver recorded activity (it could “receive something”), but decoding failed with an error reported (an “Error 12”), which is a realistic reminder:</p>

<ul>
	<li>RF can sometimes penetrate, but decoding depends on enough SNR.</li>
	<li>Expect better results outdoors than inside thick concrete.</li>
</ul>

<figure style="justify-self: center"><img alt="Smartphone displaying the LightBlue Bluetooth LE app while testing a LoRa-to-Bluetooth bridge inside a concrete bunker" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FPvjxYypn6OvXSnPTYwtl%2Fscreenshots%2F20b0bce7-c2c0-4e2a-b463-ea0d3582a19c.webp?alt=media&token=bffe8990-35c5-4739-9ff2-c7409e503636" style="object-fit: cover;" width="100%">
<figcaption id="cap-96c375b" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">In the concrete bunker test, the receiver still shows incoming activity on the phone app—even though decoding can be unreliable when RF/SNR are poor.</figcaption>
</figure>

<h1>Closing the loop: finding the source</h1>

<p>The receiver eventually got much stronger RSSI again closer to the sending node, and packet numbers increased reliably. As the nodes approached alignment and separation decreased, the link became clearly stable.</p>

<p>That last part is practically useful. In the field, knowing whether you can “hunt down” a transmitting sensor by walking toward increasing signal helps with commissioning and troubleshooting.</p>

<h2>Common DIY applications for this LoRa + Bluetooth bridge</h2>

<p>This bridging approach is a great fit when you want:</p>

<ul>
	<li><strong>low data rates</strong> (small status updates)</li>
	<li><strong>long distance</strong> without Wi-Fi or cellular</li>
	<li><strong>easy inspection</strong> using a phone app</li>
	<li><strong>a simple receiver</strong> that outputs readable Bluetooth data</li>
</ul>

<p>Examples that map well to the demo:</p>

<ul>
	<li>a pump or tank sensor sending periodic “level” values</li>
	<li>a gate sensor that reports “open/closed”</li>
	<li>a weather station that transmits short summaries</li>
	<li>off-grid alarms that trigger periodic updates for confirmation</li>
</ul>

<h2>FAQ</h2>

<div data-faq-question="true">
<h3  data-faq-question="true">Is this the same thing as Meshtastic or LoRaWAN?</h3>

<p data-faq-answer="true">No. This is a simpler “link” approach. It doesn’t rely on a mesh system or LoRaWAN infrastructure. The goal is point-to-point long-range transmission with a Bluetooth bridge for the user interface.</p>
</div>

<div data-faq-question="true">
<h3  data-faq-question="true">Why bridge to Bluetooth at the receiver?</h3>

<p data-faq-answer="true">Bluetooth makes the received data easy to view on a phone without extra gateways. Your mobile app can connect via Bluetooth LE and subscribe to the incoming messages directly.</p>
</div>

<div data-faq-question="true">
<h3  data-faq-question="true">What antenna setup is required?</h3>

<p data-faq-answer="true">The build uses external antennas mounted through IPX connectors. A 915MHz LoRa antenna handles the long-range link, and a 2.4GHz Bluetooth antenna improves the local reception. The range test specifically mentions using a standard antenna, which still performed well outdoors.</p>
</div>

<div data-faq-question="true">
<h3  data-faq-question="true">Can I power these nodes with 3.3V?</h3>

<p data-faq-answer="true">No. The chips require 5V operation. Even if your microcontroller runs at 3.3V, provide 5V to the RYLR999 nodes.</p>
</div>

<div data-faq-question="true">
<h3  data-faq-question="true">How often should you send data?</h3>

<p data-faq-answer="true">For a test, the demo used a message every 10 seconds. In real deployments, you can tune update rate based on battery life and how quickly you need the data.</p>
</div>

<div data-faq-question="true">
<h3  data-faq-question="true">Where can the project files and source code be found?</h3>

<p data-faq-answer="true">Project files are available at the project link listed below, and the “Bluetooth to LoRa Bridge” project includes the hardware and software components used in this approach.</p>
</div>

<h2>Project link</h2>

<p>Project files: <strong><a href="https://hub.lorameshdevices.com/projects/reyax-rylr999-bluetooth-to-lora-bridge">Bluetooth to LoRa Bridge</a></strong></p>

<p>Links: (Note: As an affiliate, I earn from qualifying purchases)</p>

<ul>
	<li><a href="https://amzn.to/3PoPl4o">RYLR999 Amazon</a></li>
	<li><a href="https://www.digikey.com/en/products/detail/reyax/RYLR999-30dBm-LoRa-20dBm-2-4GHz-BLE-EVK/26600801">RYLR999 Digkey</a></li>
	<li><a href="https://www.ebay.com/itm/177071587469">RYLR999 eBay</a></li>
	<li><a href="https://lemosint.com/">RYLR999 US Distributor Lemos International</a></li>
	<li><a href="https://mtgelectronics.com">RYLR999 US Distributor Micro Technology Group</a></li>
	<li><a href="https://amzn.to/4lIB929">3D Printer I use (1 color)</a></li>
	<li><a href="https://amzn.to/4bqQOzQ">3D Printer I use (multi color)</a></li>
	<li><a href="https://amzn.to/4bpVaqL">USB To Serial</a></li>
	<li><a href="https://hub.lorameshdevices.com/projects/reyax-rylr999-bluetooth-to-lora-bridge">Project files</a></li>
</ul>

<p> </p>]]></content:encoded>
            </item>
                        <item>
                <title><![CDATA[Meshtastic Solar: DIY Solar Meshtastic Tree Node]]></title>
                <link>https://www.lorameshdevices.com/blog/meshtastic/meshtastic-solar-diy-solar-meshtastic-tree-node.html</link>
                <guid>https://www.lorameshdevices.com/blog/meshtastic/meshtastic-solar-diy-solar-meshtastic-tree-node.html</guid>
                <pubDate>Wed, 18 Mar 2026 14:22:39 +0100</pubDate>
                <dc:creator><![CDATA[Vivian van Zyl]]></dc:creator>
                <description><![CDATA[This Meshtastic Solar build is a compact, weatherproof LoRa node designed to hang high in a tree and keep itself charged no matter which way it spins in the wind. The idea is simple: wrap the node in multiple small solar cells, protect the electronics, use a simulated MPPT charge controller and a single 18650 cell, and run Meshtastic firmware for mesh networking. The result is a low-power, off-grid repeater or endpoint that can live in the canopy for weeks or months. 

 

Table of Contents


	What this design solves
	Parts and tools (quick list)
	Design and enclosure notes
	Step-by-step assembly
	Meshtastic setup and configuration
	Deployment tips
	Common pitfalls and how to avoid them
	Why this is a good Meshtastic Solar approach
	FAQ
	Resources and files


What this design solves

Traditional single-panel solar nodes are sensitive to orientation. A node that spins when hoisted into a tree can end up in a direction that receives little sun. This tree node uses three panels arranged around the body so at least one panel receives light regardless of orientation. It is also built slightly heavier so it does not constantly blow around, and the enclosure is designed to drain water downward and seal at the bottom. 

Parts and tools (quick list)


	Core board: Seeed nRF52840 with SX1262 (very power efficient for Meshtastic Solar).
	Alternative boards: Heltec V4, LoRa32/Heltec variants work too.
	Charge controller: Small simulated-MPPT TP4056-style step-up board (better than stock TP4056).
	Battery: 18650 (3500 mAh recommended).
	Solar: Small 5V micro-panels (three in parallel).
	Enclosure: 3D-printed body with drain design, or waterproof project box.
	Extras: SMA pigtail, breather plug, silicone sealant, 3M double-sided tape, small cable ties, hook for hoisting.



One small panel fitted into the side slot of the 3D‑printed tree node.


Design and enclosure notes

The enclosure is 3D-printed with a top hook and a bottom sealing plate so any water flows down and the bottom seals. I added indents for the solar panels and routed wires through small holes that are later sealed with silicone. There is a small breather plug at the bottom to help equalize pressure and reduce condensation inside the enclosure. 


Wires routed through the enclosure, ready for connection.


Step-by-step assembly


1. Prepare the LoRa board and antenna


Open the Seeed nRF52840 + SX1262 board, replace the default tiny antenna connector with a proper SMA pigtail, and identify the battery pads. The goal is to feed the board like it has a battery attached. The charge controller will simulate the battery connection rather than using the 5V pad. 


Here I’m holding the SMA pigtail I use to replace the tiny onboard antenna.



2. Mount and waterproof the solar panels


Use three small panels and glue them into the side slots with a small bead of silicone at the top and bottom to lock them in place. Feed the wires through the designed holes, then seal the inside where each wire enters so the enclosure remains waterproof. 


Panel wires joined and plugged into the charge controller with the charging LED active.



3. Wire panels in parallel and connect to charge controller


Join all positives together and all negatives together, then feed that pair to the solar input on the charge controller. Small panels should be paralleled for higher current while keeping voltage suitable for the charger. After wiring, verify the controller shows charging when exposed to light. 


4. Mount the charge controller, battery holder and core board


Use 3M double-sided tape to secure the controller and the board to the inside of the enclosure; tape works well if placed carefully. Watch polarity on every connector—these small two-pin JST connectors are often wired inconsistently from suppliers, so confirm the board markings before plugging in. 


Close-up inspection of the solar charge controller and its JST connectors before installation.



5. Install breather plug, antenna and final sealing


Fit the breather plug and SMA connector and tighten. Add silicone around the antenna feedthrough and the breather plug for extra protection. Do not insert the battery until the antenna is attached; powering a radio without an antenna can damage the transmitter. 


Battery holder and charge controller installed — ready to insert the 18650 and power up.



6. Battery and first power-up


Install the 18650 and plug the battery into the controller. Double-check positive and negative wiring. On power-up you should see the Meshtastic module LED flash. If using Bluetooth for initial setup, it can be paired temporarily, but for permanent deployment it is better to disable Bluetooth and enable remote management. 


Antenna plugged in and device ready for first power-up.


Meshtastic setup and configuration

Flash the latest Meshtastic firmware to the board. When first connecting via the Meshtastic mobile app the default PIN for devices without a screen is 123456. Configure LoRa region and channel (for example US frequencies like 906.875 MHz if applicable), set hops, enable MQTT if you use a backend, and give the node a sensible name like "voft.live tree node". 


Confirm the node shows online and battery status before deployment.


Deployment tips


	Orientation: The multi-panel approach mitigates random rotation, but still tie the node so it does not spin freely. A secondary tie prevents constant orientation changes in wind.
	Weight: Make the node slightly heavier so it resists being blown around but not so heavy that hoisting is difficult.
	Antenna: Use an external SMA antenna mounted at the bottom so it clears foliage and has space to radiate.
	Monitoring: Configure remote management and telemetry so you can monitor battery voltage and charging remotely and disable Bluetooth in the field.



Node with solar panel and antenna visible — shows orientation and tethering.


Common pitfalls and how to avoid them


	Wrong JST polarity: Double-check connector orientation. Many cheap connectors are wired backwards.
	Powering without antenna: Never transmit without an antenna attached—this can damage the RF stage.
	Insufficient charge controller: Small TP4056 boards are okay, but a simulated MPPT controller will keep the battery healthier and harvest more energy in variable light.
	Leak points: Seal solar wire entry holes and feedthroughs with silicone. Use the breather plug to reduce internal condensation rather than sealing completely airtight.


Why this is a good Meshtastic Solar approach

This tree node balances simplicity and reliability. The Seeed nRF52840 + SX1262 board is low-power and well-supported by Meshtastic. Multiple small panels reduce orientation risk and keep the node charging despite rotation. The design is modular: you can swap in other low-power LoRa boards and different solar sizes, and the 3D-printed enclosure means the project is reproducible. 

FAQ


What is the recommended board for a Meshtastic Solar node?


The Seeed nRF52840 with SX1262 is recommended for its power efficiency and LoRa performance. Heltec V4 and similar LoRa ESP32 boards also work if you prefer an alternative. 


How do I protect the electronics from moisture?


Design the enclosure so water drains away from electronics and seal any wire entry points with silicone. Use a breather plug to reduce internal condensation rather than making the case completely airtight. 


Can I use a different battery than an 18650?


Yes, but 18650 cells are compact, widely available and provide a good capacity-to-size ratio. If you use a different chemistry or cell format, ensure the charge controller and connectors match and that you adjust the enclosure accordingly. 


How long will the node run on battery alone?


Run time depends on board power draw, duty cycle, and sunlight. With a low-power board like the nRF52840 + SX1262, conservative TX intervals and a 3500 mAh 18650, the node can run for weeks without sun, and months with regular charging from the panels. 

Resources and files

3D print files, project documentation, and assembly files are available for reproducible builds. Use the printable files to adapt the enclosure size and panel layout. 

Seeed nRF52840 - https://www.seeedstudio.com/XIAO-nRF52840-Wio-SX1262-Kit-for-Meshtastic-p-6400.html?sensecap_affiliate=agiE1S0&referring_service=link 

Heltec V4 (No Screen) - https://amzn.to/4dqVV4c 

Charge Controller - https://amzn.to/4uynMFF 

18650 Battery - https://amzn.to/4koPUqq 

Battery Holder - https://amzn.to/4jZW9Pz 

SMA Connector - https://amzn.to/4bvpuz8 

915Mhz Antenna - https://amzn.to/3PmXJBi 

Solar Panels - https://amzn.to/47xSvJe 

3D Printable Files - https://www.printables.com/model/1640281-meshtastic-meshcore-tree-node 

Project files - https://hub.lorameshdevices.com/projects/solar-tree-node-meshtastic-meshcore 

  
]]></description>
                <content:encoded><![CDATA[<p>This Meshtastic Solar build is a compact, weatherproof LoRa node designed to hang high in a tree and keep itself charged no matter which way it spins in the wind. The idea is simple: wrap the node in multiple small solar cells, protect the electronics, use a simulated MPPT charge controller and a single 18650 cell, and run Meshtastic firmware for <a href="http://lorameshdevices.com/blog/meshtastic/what-is-meshtastic-and-what-is-it-used-for.html" target="_blank">mesh networking</a>. The result is a low-power, off-grid repeater or endpoint that can live in the canopy for weeks or months.</p>

<p><span style="display: flex; justify-content: center;"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" src="https://www.youtube.com/embed/8FNJho8vJiw" style="width: 100%; max-width: 550px; aspect-ratio: 16/9;" title="YouTube video player"></iframe></span></p>

<h2>Table of Contents</h2>

<ul>
	<li><a href="#what-this-design-solves">What this design solves</a></li>
	<li><a href="#parts-and-tools-quick-list">Parts and tools (quick list)</a></li>
	<li><a href="#design-and-enclosure-notes">Design and enclosure notes</a></li>
	<li><a href="#step-by-step-assembly">Step-by-step assembly</a></li>
	<li><a href="#meshtastic-setup-and-configuration">Meshtastic setup and configuration</a></li>
	<li><a href="#deployment-tips">Deployment tips</a></li>
	<li><a href="#common-pitfalls-and-how-to-avoid-them">Common pitfalls and how to avoid them</a></li>
	<li><a href="#why-this-is-a-good-meshtastic-solar-approach">Why this is a good Meshtastic Solar approach</a></li>
	<li><a href="#faq">FAQ</a></li>
	<li><a href="#resources-and-files">Resources and files</a></li>
</ul>

<h2 id="what-this-design-solves">What this design solves</h2>

<p>Traditional single-panel <a href="http://lorameshdevices.com/blog/meshtastic/exploring-the-meshtastic-solar-node-a-diy-solar-powered-communication-solution.html" target="_blank">solar node</a>s are sensitive to orientation. A node that spins when hoisted into a tree can end up in a direction that receives little sun. This tree node uses three panels arranged around the body so at least one panel receives light regardless of orientation. It is also built slightly heavier so it does not constantly blow around, and the <a href="http://lorameshdevices.com/blog/meshtastic/meshtastic-enclosure-a-guide-to-sensor-integration-and-environmental-monitoring.html" target="_blank">enclosure</a> is designed to drain water downward and seal at the bottom.</p>

<h2 id="parts-and-tools-quick-list">Parts and tools (quick list)</h2>

<ul>
	<li><strong>Core board</strong>: Seeed nRF52840 with SX1262 (very power efficient for Meshtastic Solar).</li>
	<li><strong>Alternative boards</strong>: Heltec V4, LoRa32/Heltec variants work too.</li>
	<li><strong>Charge controller</strong>: Small simulated-MPPT TP4056-style step-up board (better than stock TP4056).</li>
	<li><strong>Battery</strong>: 18650 (3500 mAh recommended).</li>
	<li><strong>Solar</strong>: Small 5V micro-panels (three in parallel).</li>
	<li><strong>Enclosure</strong>: 3D-printed body with drain design, or waterproof project box.</li>
	<li><strong>Extras</strong>: SMA pigtail, breather plug, silicone sealant, 3M double-sided tape, small cable ties, hook for hoisting.</li>
</ul>

<figure style="justify-self: center"><img alt="Small solar panel pressed onto the yellow 3D-printed node body showing the wire and top hook." src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FJzk4JJhwfJ1OtCtLzLET%2Fscreenshots%2F07b28920-6fad-474a-95e1-8e0d931ad147.webp?alt=media&token=1b337d88-0d64-490f-ba5e-40d1af4f1823" style="object-fit: cover;" width="100%">
<figcaption id="cap-89ee7b3" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">One small panel fitted into the side slot of the 3D‑printed tree node.</figcaption>
</figure>

<h2 id="design-and-enclosure-notes">Design and enclosure notes</h2>

<p>The enclosure is 3D-printed with a top hook and a bottom sealing plate so any water flows down and the bottom seals. I added indents for the solar panels and routed wires through small holes that are later sealed with silicone. There is a small breather plug at the bottom to help equalize pressure and reduce condensation inside the enclosure.</p>

<figure style="justify-self: center"><img alt="Red and black solar wires routed through holes in the interior of a yellow 3D-printed enclosure, hands positioning the wires." src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FJzk4JJhwfJ1OtCtLzLET%2Fscreenshots%2F7b944e97-77f6-41bc-90ff-53f5072d132c.webp?alt=media&token=af9ab560-878c-46d5-8902-475c396d106e" style="object-fit: cover;" width="100%">
<figcaption id="cap-19259ef" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Wires routed through the enclosure, ready for connection.</figcaption>
</figure>

<h2 id="step-by-step-assembly">Step-by-step assembly</h2>

<h1>1. Prepare the LoRa board and antenna</h1>

<p>Open the <a href="http://lorameshdevices.com/blog/meshtastic/exploring-the-seeed-studios-wio-sx1262-with-xiao-esp32s3-a-tiny-meshtastic-node.html" target="_blank">Seeed</a> nRF52840 + SX1262 board, replace the default tiny <a href="http://lorameshdevices.com/blog/meshtastic/diy-meshtastic-antenna-build-simple-guide-for-beginners.html" target="_blank">antenna</a> connector with a proper SMA pigtail, and identify the battery pads. The goal is to feed the board like it has a battery attached. The charge controller will simulate the battery connection rather than using the 5V pad.</p>

<figure style="justify-self: center"><img alt="Hand holding SMA pigtail connector for LoRa antenna" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FJzk4JJhwfJ1OtCtLzLET%2Fscreenshots%2Fea1f0fba-e786-4e3f-adc7-2ec0bc8c5cc6.webp?alt=media&token=b4340792-11e5-4e07-b995-b002a0ea4fa3" style="object-fit: cover;" width="100%">
<figcaption id="cap-02f42dd" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Here I’m holding the SMA pigtail I use to replace the tiny onboard antenna.</figcaption>
</figure>

<h1>2. Mount and waterproof the solar panels</h1>

<p>Use three small panels and glue them into the side slots with a small bead of silicone at the top and bottom to lock them in place. Feed the wires through the designed holes, then seal the inside where each wire enters so the enclosure remains waterproof.</p>

<figure style="justify-self: center"><img alt="Charge controller with red charging LED illuminated and red/black solar wires connected, ready for installation." src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FJzk4JJhwfJ1OtCtLzLET%2Fscreenshots%2F90b96a78-09da-4e2f-bb4f-068b98811e9e.webp?alt=media&token=9169cc0d-d5e8-4add-bf51-2d9abf1573c1" style="object-fit: cover;" width="100%">
<figcaption id="cap-838e8f6" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Panel wires joined and plugged into the charge controller with the charging LED active.</figcaption>
</figure>

<h1>3. Wire panels in parallel and connect to charge controller</h1>

<p>Join all positives together and all negatives together, then feed that pair to the solar input on the charge controller. Small panels should be paralleled for higher current while keeping voltage suitable for the charger. After wiring, verify the controller shows charging when exposed to light.</p>

<h1>4. Mount the charge controller, battery holder and core board</h1>

<p>Use 3M double-sided tape to secure the controller and the board to the inside of the enclosure; tape works well if placed carefully. Watch polarity on every connector—these small two-pin JST connectors are often wired inconsistently from suppliers, so confirm the board markings before plugging in.</p>

<figure style="justify-self: center"><img alt="Close-up of a blue solar charge controller board held between fingers showing JST ports and PCB markings" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FJzk4JJhwfJ1OtCtLzLET%2Fscreenshots%2F3f0fecb4-4970-4d8a-b8cc-9de03c4e56cb.webp?alt=media&token=bc8a53b1-1fec-417f-a69d-587137dc3a23" style="object-fit: cover;" width="100%">
<figcaption id="cap-2b4a2c1" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Close-up inspection of the solar charge controller and its JST connectors before installation.</figcaption>
</figure>

<h1>5. Install breather plug, antenna and final sealing</h1>

<p>Fit the breather plug and SMA connector and tighten. Add silicone around the antenna feedthrough and the breather plug for extra protection. Do not insert the battery until the antenna is attached; powering a radio without an antenna can damage the transmitter.</p>

<figure style="justify-self: center"><img alt="Top-down view of the Meshtastic tree node showing battery holder, charge controller, wiring and tools" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FJzk4JJhwfJ1OtCtLzLET%2Fscreenshots%2F415b476b-bde9-4c2a-9229-bf7bb748903d.webp?alt=media&token=92d4e82f-f2df-4da1-876d-345317d0237b" style="object-fit: cover;" width="100%">
<figcaption id="cap-8d68c11" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Battery holder and charge controller installed — ready to insert the 18650 and power up.</figcaption>
</figure>

<h1>6. Battery and first power-up</h1>

<p>Install the 18650 and plug the battery into the controller. Double-check positive and negative wiring. On power-up you should see the Meshtastic module LED flash. If using Bluetooth for initial setup, it can be paired temporarily, but for permanent deployment it is better to disable Bluetooth and enable remote management.</p>

<figure style="justify-self: center"><img alt="Close-up of the Meshtastic tree node green base with antenna connector inserted and hands holding the device" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FJzk4JJhwfJ1OtCtLzLET%2Fscreenshots%2F98576064-c3e8-4c5e-8b00-3e4ae39004e6.webp?alt=media&token=e5863cfe-c410-45e2-a639-63816ce03dc2" style="object-fit: cover;" width="100%">
<figcaption id="cap-1ed463d" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Antenna plugged in and device ready for first power-up.</figcaption>
</figure>

<h2 id="meshtastic-setup-and-configuration">Meshtastic setup and configuration</h2>

<p>Flash the latest Meshtastic firmware to the board. When first connecting via the Meshtastic mobile app the default PIN for devices without a screen is <strong>123456</strong>. Configure LoRa region and channel (for example US frequencies like 906.875 MHz if applicable), set hops, enable <a href="https://www.lorameshdevices.com/blog/meshtastic/what-is-mqtt-for-meshtastic.html" target="_blank">MQTT</a> if you use a backend, and give the node a sensible name like "voft.live tree node".</p>

<figure style="justify-self: center"><img alt="Close-up of the Meshtastic app listing 'ViVSoft.live Tree Node' with an online indicator and battery icon visible on the phone screen." src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FJzk4JJhwfJ1OtCtLzLET%2Fscreenshots%2F9fced855-c083-41a0-a807-318fecd2c74d.webp?alt=media&token=18610261-a636-4c26-9938-ec78a2b8a78c" style="object-fit: cover;" width="100%">
<figcaption id="cap-6471ad1" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Confirm the node shows online and battery status before deployment.</figcaption>
</figure>

<h2 id="deployment-tips">Deployment tips</h2>

<ul>
	<li><strong>Orientation</strong>: The multi-panel approach mitigates random rotation, but still tie the node so it does not spin freely. A secondary tie prevents constant orientation changes in wind.</li>
	<li><strong>Weight</strong>: Make the node slightly heavier so it resists being blown around but not so heavy that hoisting is difficult.</li>
	<li><strong>Antenna</strong>: Use an external SMA antenna mounted at the bottom so it clears foliage and has space to radiate.</li>
	<li><strong>Monitoring</strong>: Configure remote management and telemetry so you can monitor battery voltage and charging remotely and disable Bluetooth in the field.</li>
</ul>

<figure style="justify-self: center"><img alt="Close view of Meshtastic solar tree node hanging under gazebo, visible solar panel and whip antenna" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2FJzk4JJhwfJ1OtCtLzLET%2Fscreenshots%2Ffb9c8334-6bad-4d96-9b5a-2e63d3a18acf.webp?alt=media&token=ac9bc75f-6711-410f-b99f-cc38896db013" style="object-fit: cover;" width="100%">
<figcaption id="cap-55fefdb" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Node with solar panel and antenna visible — shows orientation and tethering.</figcaption>
</figure>

<h2 id="common-pitfalls-and-how-to-avoid-them">Common pitfalls and how to avoid them</h2>

<ul>
	<li><strong>Wrong JST polarity</strong>: Double-check connector orientation. Many cheap connectors are wired backwards.</li>
	<li><strong>Powering without antenna</strong>: Never transmit without an antenna attached—this can damage the RF stage.</li>
	<li><strong>Insufficient charge controller</strong>: Small TP4056 boards are okay, but a simulated MPPT controller will keep the battery healthier and harvest more energy in variable light.</li>
	<li><strong>Leak points</strong>: Seal solar wire entry holes and feedthroughs with silicone. Use the breather plug to reduce internal condensation rather than sealing completely airtight.</li>
</ul>

<h2 id="why-this-is-a-good-meshtastic-solar-approach">Why this is a good Meshtastic Solar approach</h2>

<p>This tree node balances simplicity and reliability. The Seeed nRF52840 + SX1262 board is low-power and well-supported by Meshtastic. Multiple small panels reduce orientation risk and keep the node charging despite rotation. The design is modular: you can swap in other low-power LoRa boards and different solar sizes, and the 3D-printed enclosure means the project is reproducible.</p>

<h2 id="faq">FAQ</h2>

<h3  data-faq-question="true">What is the recommended board for a Meshtastic Solar node?</h3>

<p data-faq-answer="true">The Seeed nRF52840 with SX1262 is recommended for its power efficiency and LoRa performance. <a href="http://lorameshdevices.com/blog/meshtastic/how-to-install-a-heltec-v3-in-a-case-for-meshtastic.html" target="_blank">Heltec</a> V4 and similar LoRa ESP32 boards also work if you prefer an alternative.</p>

<h3  data-faq-question="true">How do I protect the electronics from moisture?</h3>

<p data-faq-answer="true">Design the enclosure so water drains away from electronics and seal any wire entry points with silicone. Use a breather plug to reduce internal condensation rather than making the case completely airtight.</p>

<h3  data-faq-question="true">Can I use a different battery than an 18650?</h3>

<p data-faq-answer="true">Yes, but 18650 cells are compact, widely available and provide a good capacity-to-size ratio. If you use a different chemistry or cell format, ensure the charge controller and connectors match and that you adjust the enclosure accordingly.</p>

<h3  data-faq-question="true">How long will the node run on battery alone?</h3>

<p data-faq-answer="true">Run time depends on board power draw, duty cycle, and sunlight. With a low-power board like the nRF52840 + SX1262, conservative TX intervals and a 3500 mAh 18650, the node can run for weeks without sun, and months with regular charging from the panels.</p>

<h2 id="resources-and-files">Resources and files</h2>

<p>3D print files, project documentation, and assembly files are available for reproducible builds. Use the printable files to adapt the enclosure size and panel layout.</p>

<p>Seeed nRF52840 - <a href="http://Meshtastic Solar: DIY Solar Meshtastic Tree Node">https://www.seeedstudio.com/XIAO-nRF52840-Wio-SX1262-Kit-for-Meshtastic-p-6400.html?sensecap_affiliate=agiE1S0&referring_service=link</a></p>

<p>Heltec V4 (No Screen) - <a href="https://amzn.to/4dqVV4c">https://amzn.to/4dqVV4c</a></p>

<p>Charge Controller -<a href="https://amzn.to/4uynMFF"> https://amzn.to/4uynMFF</a></p>

<p>18650 Battery - <a href="https://amzn.to/4koPUqq">https://amzn.to/4koPUqq</a></p>

<p>Battery Holder - <a href="https://amzn.to/4jZW9Pz">https://amzn.to/4jZW9Pz</a></p>

<p>SMA Connector - <a href="https://amzn.to/4bvpuz8">https://amzn.to/4bvpuz8</a></p>

<p>915Mhz Antenna - <a href="https://amzn.to/3PmXJBi">https://amzn.to/3PmXJBi</a></p>

<p>Solar Panels - <a href="https://amzn.to/47xSvJe">https://amzn.to/47xSvJe</a></p>

<p>3D Printable Files - <a href="https://www.printables.com/model/1640281-meshtastic-meshcore-tree-node">https://www.printables.com/model/1640281-meshtastic-meshcore-tree-node</a></p>

<p>Project files - <a href="https://hub.lorameshdevices.com/projects/solar-tree-node-meshtastic-meshcore">https://hub.lorameshdevices.com/projects/solar-tree-node-meshtastic-meshcore</a></p>

<p> </p>]]></content:encoded>
            </item>
                        <item>
                <title><![CDATA[MeshCore Sensors Tutorial: Setting Up the T1000E Node]]></title>
                <link>https://www.lorameshdevices.com/blog/meshcore/meshcore-sensors-tutorial-setting-up-the-t1000e-node.html</link>
                <guid>https://www.lorameshdevices.com/blog/meshcore/meshcore-sensors-tutorial-setting-up-the-t1000e-node.html</guid>
                <pubDate>Thu, 12 Mar 2026 19:37:23 +0100</pubDate>
                <dc:creator><![CDATA[Vivian van Zyl]]></dc:creator>
                <description><![CDATA[  

 

  

MeshCore treats sensor nodes differently from typical mesh devices. Instead of constantly broadcasting telemetry, a MeshCore sensor sits quietly and responds when a companion node asks for data. That pull-based approach helps extend battery life and keeps sensor nodes focused on sensing rather than relaying network traffic. 

 

What is a MeshCore sensor?

A MeshCore sensor is a node whose primary job is to collect telemetry—temperature, luminosity, GPS, battery level—and deliver that information only when polled by a companion node. The device itself does not relay messages or act as a full network participant. That makes it ideal for long-term monitoring where power efficiency matters. 

Hardware used in this example

The example setup uses a Seeed SenseCAP T1000-E as the sensor. It’s a compact tracker with built-in GPS, temperature sensor, lux sensor, and a battery. A separate companion radio (a Heltec V3 in this case) acts as the active device that polls the T1000-E for telemetry. 

  


Clear front view of the T1000‑E showing the antenna pad, sensors and logo.


  

Pull vs push: why MeshCore pulls telemetry

Traditional Meshtastic-style setups often push telemetry periodically. MeshCore opts for a pull model: the companion node sends a request and the sensor replies. Benefits include: 


	Lower power consumption on the sensor since it does not transmit constantly.
	Simpler sensor firmware—no need to participate in routing or message relaying.
	On-demand readings so the companion only requests data when needed.


Custom firmware and setup notes

Right now, turning a T1000-E into a MeshCore sensor requires a firmware change. That means compiling a small sensor section from the MeshCore source and flashing it onto the T1000-E as custom firmware. Once flashed, the T1000-E functions strictly as a sensor node. 

The firmware change is lightweight: it disables routing/relay roles and exposes a telemetry endpoint that responds to authenticated requests from a companion. 

Discovering and adding sensors in the MeshCore app

Use the app’s tools menu and choose "Discover nearby nodes." The app can find repeaters, room servers, companion nodes, and now sensors. When the companion radio is in range it will list detected sensors separately. 

  


Tools menu with 'Discover Nearby Nodes' highlighted


  

When the T1000-E appears in the sensor list you can add it. After adding, opening the node and hitting the telemetry button prompts the companion to authenticate and pull the latest readings. 

  


Open the T1000‑E node (highlighted) to view telemetry or send commands.


  

Telemetry, commands, and map view

A telemetry request returns a concise payload: battery level, temperature, luminosity, and GPS coordinates if GPS is enabled. Because each telemetry call is a pull, the sensor only wakes to reply, keeping average power use low. 

  


Telemetry results: battery, temperature, luminosity and GPS coordinates with map.


  

You can manage the sensor from the app once authenticated: set radio region, change basic settings, or issue commands. For example, sending a "GPS on" command will enable the GPS module and subsequent telemetry requests will include location. 

  


In-app console confirming the 'gps on' command — GPS enabled on the T1000‑E.


  

The app map shows sensors with a distinct icon so they stand out from repeaters and room servers. Clicking the sensor on the map brings up its last-known telemetry and location. 

  


The app map shows the t1000‑e sensor icon and its last-known location.


  

Practical tips and best practices


	Use a dedicated companion radio to poll sensors. A small Heltec V3 or similar works well.
	Enable GPS only when needed—GPS uses more power, so toggle it from the companion when you need location fixes.
	Keep authentication secure—default passwords are fine for testing, but change them for production deployments.
	Place sensors thoughtfully so the companion can reliably reach them when it polls telemetry.


Where MeshCore sensor nodes shine

MeshCore sensor nodes are good for environmental monitoring, asset tracking, or use cases where periodic data is fine and long battery life is essential. They are especially useful when you want the advantages of LoRa range without loading small sensors with relay duties. 

Quick setup checklist


	Flash the T1000-E with the MeshCore sensor firmware build.
	Power on the companion radio and open the MeshCore app.
	Discover nearby nodes → select "Discover sensors".
	Add the T1000-E entry and authenticate.
	Request telemetry or send commands (for example, "GPS on").
	Use the map view to verify location and sensor iconography.


Final thoughts

MeshCore’s pull-based sensor model is a useful pattern for low-power telemetry deployments. Converting a compact tracker like the T1000-E into a dedicated sensor node keeps hardware simple, preserves battery life, and still gives you on-demand access to temperature, light, GPS, and battery data via a companion device. 

Links: (Note: As an affiliate, I earn from qualifying purchases)


	Seeed T1000E (Use code 'S0G9HWFL' for a discount) - https://www.seeedstudio.com/SenseCAP-Card-Tracker-T1000-E-for-Meshtastic-p-5913.html?sensecap_affiliate=agiE1S0&referring_service=link
	Seeed T1000E at Amazon - https://amzn.to/4qy0tJI


  
]]></description>
                <content:encoded><![CDATA[<p> </p>

<h1> </h1>

<p> </p>

<p>MeshCore treats sensor nodes differently from typical mesh devices. Instead of constantly broadcasting telemetry, a MeshCore sensor sits quietly and responds when a companion node asks for data. That pull-based approach helps extend battery life and keeps sensor nodes focused on sensing rather than relaying network traffic.</p>

<p><span style="display: flex; justify-content: center;"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" src="https://www.youtube.com/embed/vOiujRQaMDE" style="width: 100%; max-width: 550px; aspect-ratio: 16/9;" title="YouTube video player"></iframe></span></p>

<h2>What is a MeshCore sensor?</h2>

<p>A MeshCore sensor is a node whose primary job is to collect telemetry—temperature, luminosity, GPS, battery level—and deliver that information only when polled by a companion node. The device itself does not relay messages or act as a full network participant. That makes it ideal for long-term monitoring where power efficiency matters.</p>

<h2>Hardware used in this example</h2>

<p>The example setup uses a Seeed SenseCAP T1000-E as the sensor. It’s a compact tracker with built-in GPS, temperature sensor, lux sensor, and a battery. A separate companion radio (a Heltec V3 in this case) acts as the active device that polls the T1000-E for telemetry.</p>

<p> </p>

<figure style="justify-self: center"><img alt="SenseCAP T1000‑E front view showing antenna pad, sensor window and SenseCAP logo" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2Ff8BHRyS6V4qKzkfDuilm%2Fscreenshots%2Fcd08bc0a-3a96-418e-84e4-e626188dda64.webp?alt=media&token=c96fe1ba-164f-4c97-b5f9-a29d1c6e3a8d" style="object-fit: cover;" width="100%">
<figcaption id="cap-20fb5c5" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Clear front view of the T1000‑E showing the antenna pad, sensors and logo.</figcaption>
</figure>

<p> </p>

<h2>Pull vs push: why MeshCore pulls telemetry</h2>

<p>Traditional Meshtastic-style setups often push telemetry periodically. MeshCore opts for a pull model: the companion node sends a request and the sensor replies. Benefits include:</p>

<ul>
	<li><strong>Lower power consumption</strong> on the sensor since it does not transmit constantly.</li>
	<li><strong>Simpler sensor firmware</strong>—no need to participate in routing or message relaying.</li>
	<li><strong>On-demand readings</strong> so the companion only requests data when needed.</li>
</ul>

<h2>Custom firmware and setup notes</h2>

<p>Right now, turning a T1000-E into a MeshCore sensor requires a firmware change. That means compiling a small sensor section from the MeshCore source and flashing it onto the T1000-E as custom firmware. Once flashed, the T1000-E functions strictly as a sensor node.</p>

<p>The firmware change is lightweight: it disables routing/relay roles and exposes a telemetry endpoint that responds to authenticated requests from a companion.</p>

<h2>Discovering and adding sensors in the MeshCore app</h2>

<p>Use the app’s tools menu and choose "Discover nearby nodes." The app can find repeaters, room servers, companion nodes, and now sensors. When the companion radio is in range it will list detected sensors separately.</p>

<p> </p>

<figure style="justify-self: center"><img alt="MeshCore Tools screen showing Discover Nearby Nodes, Antenna Coverage, Rx Log and other tools" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2Ff8BHRyS6V4qKzkfDuilm%2Fscreenshots%2F68b75f3c-3be7-47b1-8389-7d3da326c480.webp?alt=media&token=33008e2f-a1ce-41a2-bb00-b34ea40f7283" style="object-fit: cover;" width="100%">
<figcaption id="cap-cbd6d63" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Tools menu with 'Discover Nearby Nodes' highlighted</figcaption>
</figure>

<p> </p>

<p>When the T1000-E appears in the sensor list you can add it. After adding, opening the node and hitting the telemetry button prompts the companion to authenticate and pull the latest readings.</p>

<p> </p>

<figure style="justify-self: center"><img alt="MeshCore app node list with the t1000-e Sensor selected and highlighted" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2Ff8BHRyS6V4qKzkfDuilm%2Fscreenshots%2Fd5686626-526c-47bf-b8ca-2b525f62cb48.webp?alt=media&token=5be10aba-f604-4318-925b-169f141dba3b" style="object-fit: cover;" width="100%">
<figcaption id="cap-377b118" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Open the T1000‑E node (highlighted) to view telemetry or send commands.</figcaption>
</figure>

<p> </p>

<h2>Telemetry, commands, and map view</h2>

<p>A telemetry request returns a concise payload: battery level, temperature, luminosity, and GPS coordinates if GPS is enabled. Because each telemetry call is a pull, the sensor only wakes to reply, keeping average power use low.</p>

<p> </p>

<figure style="justify-self: center"><img alt="MeshCore telemetry showing battery 92% 4.11v, temperature 26.6°C, luminosity 3 lux and GPS coordinates with map" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2Ff8BHRyS6V4qKzkfDuilm%2Fscreenshots%2F25211fcb-ee96-44ce-b04b-a324815127e5.webp?alt=media&token=d34eb264-d465-4994-96b6-51f952fe9880" style="object-fit: cover;" width="100%">
<figcaption id="cap-1d0390e" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">Telemetry results: battery, temperature, luminosity and GPS coordinates with map.</figcaption>
</figure>

<p> </p>

<p>You can manage the sensor from the app once authenticated: set radio region, change basic settings, or issue commands. For example, sending a "GPS on" command will enable the GPS module and subsequent telemetry requests will include location.</p>

<p> </p>

<figure style="justify-self: center"><img alt="MeshCore sensor console showing commands including 'set gps on' and 'gps on' with response 'ok'" src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2Ff8BHRyS6V4qKzkfDuilm%2Fscreenshots%2Fa5306f70-acde-46cd-8acd-b08484c22c89.webp?alt=media&token=009561af-8bdc-4edb-8138-529b6e318752" style="object-fit: cover;" width="100%">
<figcaption id="cap-dd34ce8" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">In-app console confirming the 'gps on' command — GPS enabled on the T1000‑E.</figcaption>
</figure>

<p> </p>

<p>The app map shows sensors with a distinct icon so they stand out from repeaters and room servers. Clicking the sensor on the map brings up its last-known telemetry and location.</p>

<p> </p>

<figure style="justify-self: center"><img alt="MeshCore app map displaying the t1000-e sensor icon and label, highlighting the sensor on the map." src="https://firebasestorage.googleapis.com/v0/b/videotoblog-35c6e.appspot.com/o/%2Fusers%2FKJ47vpgI2ybmjlTkWXNkqdWG1cF3%2Fblogs%2Ff8BHRyS6V4qKzkfDuilm%2Fscreenshots%2F47da6a4f-a06c-41a8-9556-8cd741ed3124.webp?alt=media&token=dc97f0b9-6f31-456a-9ee5-0222d2c57b4f" style="object-fit: cover;" width="100%">
<figcaption id="cap-4d91ab7" style="margin:0; padding:0; padding-top:5px; padding-bottom:5px; font-size:small; text-align:center">The app map shows the t1000‑e sensor icon and its last-known location.</figcaption>
</figure>

<p> </p>

<h2>Practical tips and best practices</h2>

<ul>
	<li><strong>Use a dedicated companion radio</strong> to poll sensors. A small Heltec V3 or similar works well.</li>
	<li><strong>Enable GPS only when needed</strong>—GPS uses more power, so toggle it from the companion when you need location fixes.</li>
	<li><strong>Keep authentication secure</strong>—default passwords are fine for testing, but change them for production deployments.</li>
	<li><strong>Place sensors thoughtfully</strong> so the companion can reliably reach them when it polls telemetry.</li>
</ul>

<h2>Where MeshCore sensor nodes shine</h2>

<p>MeshCore sensor nodes are good for environmental monitoring, asset tracking, or use cases where periodic data is fine and long battery life is essential. They are especially useful when you want the advantages of LoRa range without loading small sensors with relay duties.</p>

<h2>Quick setup checklist</h2>

<ol>
	<li>Flash the T1000-E with the MeshCore sensor firmware build.</li>
	<li>Power on the companion radio and open the MeshCore app.</li>
	<li>Discover nearby nodes → select "Discover sensors".</li>
	<li>Add the T1000-E entry and authenticate.</li>
	<li>Request telemetry or send commands (for example, "GPS on").</li>
	<li>Use the map view to verify location and sensor iconography.</li>
</ol>

<h2>Final thoughts</h2>

<p>MeshCore’s pull-based sensor model is a useful pattern for low-power telemetry deployments. Converting a compact tracker like the T1000-E into a dedicated sensor node keeps hardware simple, preserves battery life, and still gives you on-demand access to temperature, light, GPS, and battery data via a companion device.</p>

<h2>Links: (Note: As an affiliate, I earn from qualifying purchases)</h2>

<ul>
	<li>Seeed T1000E (Use code 'S0G9HWFL' for a discount) - <a href="https://www.seeedstudio.com/SenseCAP-Card-Tracker-T1000-E-for-Meshtastic-p-5913.html?sensecap_affiliate=agiE1S0&referring_service=link">https://www.seeedstudio.com/SenseCAP-Card-Tracker-T1000-E-for-Meshtastic-p-5913.html?sensecap_affiliate=agiE1S0&referring_service=link</a></li>
	<li>Seeed T1000E at Amazon - <a href="https://amzn.to/4qy0tJI">https://amzn.to/4qy0tJI</a></li>
</ul>

<p> </p>]]></content:encoded>
            </item>
            </channel>
</rss>
