Published by Vivian van Zyl in Meshtastic the 10/15/2026 at 08:47 pm
A Meshtastic device can send its GPS position over the air, but that is not the same as keeping a track on the device itself. In the standard setup I was using, disconnecting the phone meant the node continued broadcasting its location without saving a local history for later.
I wanted something simple: take a node out for a walk, leave the phone disconnected, and download the route when I got home. So I modified the Meshtastic firmware to add on-device GPS location caching.
I have this running on a SenseCAP T1000E and a Heltec T096. Both remain Meshtastic nodes, with their normal communication functions, but now they can also record a route independently of the phone.
Meshtastic is open source, and its module system gives you a useful way to add your own functionality without creating an entirely separate application. My modification adds a local cache for GPS points, controls for starting and stopping recording, and a way to replay those saved positions into the Meshtastic app.
The basic workflow is:
The device still sends position updates over the air as normal. Local recording is an additional function, not a replacement for Meshtastic communication. You can still receive messages and hear the usual notification sounds while recording your route.
In this build, I set the cache capacity to 500 location points. With automatic recording every minute, that gives you roughly eight hours of tracking capacity, provided the device has a GPS location to save.
That figure describes the number of points the cache can hold, not a battery-life measurement. You can also build up a collection of points across separate outings. One of my test devices had 205 points collected during experiments over about a month, while the other contained routes from several days of walking.
The T096 still has the familiar Meshtastic screens. I added one extra page for the tracker, showing whether recording is on or off and how many points are cached.
For example, the display can show tracking switched off with 205 of 500 points cached. Stopping recording does not remove those points. They remain available to download later.
To start recording:
With tracking enabled, the firmware saves a location every minute when a GPS position is available. The cached-point counter increases as points are recorded. A count of 205, for instance, becomes 206 after the next successful recording.
To stop, open the menu again and select Stop Tracking. This stops the extra local recording function. The node continues doing its normal Meshtastic work, including sending positions according to its configuration.
The same menu also includes Clear Cache, but save that until you have downloaded or exported anything you want to keep.
The T1000E does not have a screen, so I implemented the tracker controls through its button. The idea is to make it useful on its own, without needing to pull out a phone just to start a walk.
| Button action | Tracker function |
|---|---|
| One press | Save the current location to the cache. |
| Two presses | Start or stop automatic recording every minute. |
| Three presses | Clear the cached locations. |
A double press starts recording with an audible beep. While recording, the device beeps every minute as it records. Double-press again to stop.
The single-press action is handy when you just want to record where you are right now, rather than run continuous tracking. It writes that current location into the same cache.
These shortcuts belong to this custom firmware. They are not instructions for the standard T1000E firmware.
Once you return, connect to the device through the Meshtastic app as usual. There is no separate tracker app required for this part.
The position history may initially look empty. In my demonstration, the connection indicator was orange while connecting, then turned green. Once connected, the saved positions started arriving and the route filled in on the map.
On my T096, the downloaded history included driving routes as well as the walking route I use regularly. Connecting to the T1000E brought in its own saved points from several days of walking. Apparently, I do quite a lot of walking!
This is an important distinction: the app's position history and the device's cache are separate.
I deleted the position history in the app, disconnected, and connected again. The device replayed the saved positions, and the route appeared again. The points were still on the node.
So, if a route returns after you delete it from the phone, that is expected. To remove the source of that replay, you need to clear the cache on the tracker itself.
Once the positions are in the Meshtastic app, you can export them as a GPX file and open the result in another mapping application.
I exported a test track, gave it a name, then opened it through the file browser in GPX Viewer. The same route appeared there, this time drawn over its map.
The process is straightforward:
I also included a Windows batch tool called tracker.bat. It provides another way to export a GPX file without using the Meshtastic app. The repository documentation explains that option.
After saving your route, you can clear the device's cached positions so they no longer replay into the app.
On the T096, the counter returns to 0 of 500. After I cleared the cache and reconnected, the old saved route no longer arrived. A current location could still appear, but that was a fresh position rather than the previous cached history.
If you want to remove the route from both places, clear the app's history as well as the device's cache. Export anything important first.
I put the firmware, source changes, and instructions in the tracker-firmware GitHub repository. It includes builds for the T096 and T1000E, device-control documentation, installation notes, and the Windows export tool.
Before flashing, back up your Meshtastic configuration and export your keys. Do that first, before changing the firmware.
For the demonstrated devices, installation uses the familiar flashing-mode and drag-and-drop process:
The flashing instructions shown for the T096 use two presses of Reset to make the drive appear. For the T1000E, hold the button while connecting the charging cable. Follow the repository's device-specific instructions rather than assuming that every Meshtastic board flashes the same way.
I used Meshtastic 2.8.1 for the demonstrated build. The tracker changes can also be incorporated into another firmware version and compiled, rather than being tied only to that build.
The source changes are concentrated in four files. Part of the work changes the button-handling thread, because the tracker needs those additional button actions. The rest uses Meshtastic's optional add-on modules, which provide a place for custom functionality to run inside the firmware.
I also compiled an ESP32-S3 version, mentioning Heltec V3 and V4 hardware as additional targets. That is separate from the hands-on T096 and T1000E examples here, so check the available files and instructions for your particular board.
I have a similar tracker project for the T1000E LoRaWAN edition, with comparable single-press and double-press controls. That project is aimed at LoRaWAN rather than Meshtastic.
Do not confuse the LoRaWAN-edition firmware with the Meshtastic tracker build. There are supporting write-ups and architecture diagrams on the resource hub, but the firmware must match the device edition and the system you intend to use.
What I like about this modification is how little it changes the everyday experience. It is still a Meshtastic node. It simply remembers where it has been, so you can take it out on its own and bring the route back afterward.
|
No. The modification adds local location caching while retaining normal Meshtastic communication, including position broadcasts and message reception.
The automatic recording interval is one minute, but the device needs a GPS position available to save a location point.
Deleting position history in the app does not remove the points cached on the device. Reconnecting allows the node to replay them. Clear the device cache if you no longer want those saved positions to return.
Yes. The repository includes a Windows batch tool called tracker.bat that can export a GPX file without using the Meshtastic app.