# LoRa_APRS_Tracker: an ESP32 tracker and digipeater for the APRS-over-LoRa network

> The CA2RXU LoRa APRS Tracker firmware turns an ESP32 board with a LoRa module and GPS into an APRS tracker, digipeater and weather station, with an OLED screen, a menu, Bluetooth TNC support and Winlink mail over APRSLink. It suits an amateur radio operator who wants to appear on the LoRa APRS map, and there is a web flasher for installing it.

**richonguzman/LoRa_APRS_Tracker** — LoRa APRS Tracker with Tx and Rx capabilities, Messages, Wx, Winlink and more...

- Repository: https://github.com/richonguzman/LoRa_APRS_Tracker
- Stars: 519 · Forks: 148
- Language: C++
- License: GPL-3.0
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/richonguzman-lora-aprs-tracker

## What the firmware is, and the iGate it depends on

This is firmware for using ESP32 based boards with LoRa modules and GPS to operate in the APRS world, and the readme carries a note that shapes the whole product.

To use the Tx/Rx capabilities of this tracker you should also have a LoRa iGate near you.

That is the key structural fact about the network. A LoRa APRS tracker is not self-sufficient: it transmits a position beacon and it can receive messages, but the receive path works through a separate iGate that is connected to the wider APRS network, usually over the internet, and the tracker talks to that iGate over LoRa. The iGate is a separate project in the same repository organisation, linked from the note.

So the deployment shape is two devices. The tracker is the thing you carry, and the iGate is the thing that sits at home or at a repeater site with internet access and bridges between the local LoRa APRS network and the global APRS-IS network. The topic list names the roles explicitly: aprs-igate, aprs-is, aprs-tracker, digipeater and igate.

The primary language is C++, the licence is GPL-3.0, the default branch is main, and the last push was on 2026-10-19. The recent releases are V4.0.1 on 2026-10-06, with LoRa TX power from the WebUI, the Hydra board and fixes, and V4.0 on 2026-09-30, with GPS baud rate auto detect, CAD and CAD timeout, new boards and fixes. Before that comes V2.4.3.2 from 2026-04-22, so the version numbering jumped from a 2.4 line to a 4.0 line, which is worth knowing if you are following the releases.

The project title in the readme is the CA2RXU LoRa APRS Tracker/Station, and the name of the topics list shows the intended hardware: esp32, lora, nrf52840 and arduino, with platformio and vscode for the build.

## The menu, the screen and the power behaviour

The feature list opens with a tracker with a complete menu, and the readme points at the wiki for how to access it. The menu covers reading, writing and deleting messages with an I2C keyboard or a phone, asking for a weather report, listening to other trackers around, and changing the display eco mode, which turns the screen off after four seconds, and the screen brightness.

That is a substantial user interface for a microcontroller, and it is the thing that distinguishes this from a bare beacon transmitter. Writing a message to a tracker over LoRa, and then having a phone read it, is the sort of feature that makes the device useful as a station rather than only as a position source.

The OLED screen has more than one mode. It shows altitude, speed and course, or BME280 weather data, or the number of new messages received. It also shows recently heard trackers, stations and iGates that have transmitted. A tracker that displays the last few stations it heard is giving you a local view of the network around you, which is genuinely useful when you are out of coverage of the internet-facing iGate.

The power handling is the other part of the hardware story. The processor runs from 240 MHz down to 80 MHz to save almost 20% power consumption, and the timeline shows a series of additions around battery behaviour: a battery monitor process added to protect the battery with a voltage sleep, a new improved battery monitor for Heltec boards, battery measurements at 30 second intervals to avoid accelerated discharge, and a configuration where the WiFi access point stops after one minute with no client connected.

There are also the notification outputs, which are the hardware feedback for a device used while walking. There are LED notifications for transmission and for messages received, and sound notifications with a YL44 buzzer module.

## Radio protocol details, and the CAD addition

Two of the more technical entries in the feature list describe the radio behaviour.

The first is that all GPS beacons and packets are encoded for less time on RF and LoRa transmission. On a shared low-power network the time on air is a shared resource, so a compact encoding is what lets more trackers coexist in the same region. The second is the change in V4.0: CAD, Channel Activity Detection, was added, along with GPS baud rate auto-detection.

CAD is the mechanism that decides whether the channel is clear before transmitting, and on LoRa APRS it is what reduces the collision rate when several trackers in the same area beacon at similar moments. The V4.0 release also added a CAD timeout, which is the other half of that: how long to wait when the channel appears busy.

The timeline also records a detail that shows how much of this firmware is shared with the iGate project. The entry for 2024-06-21 says 3rd Party Packets decode added following the corrections on iGate Firmware, which tells you that the packet encoding and decoding on both sides is a compatibility surface that has to be kept in step.

Frequency selection is handled explicitly. The feature list says you can change between the 3 major frequencies used by LoRa APRS worldwide, and the timeline entry for 2024-02-29 gives them as the EU, PL and UK sets, with a later entry noting that all boards with 433 MHz and 915 MHz versions were available.

The radio library choice is also recorded. Since 2024-05-16 all boards work with the Radiolib LoRa library, and the timeline credits a specific contributor for that work. The BLE and Bluetooth Classic split is another of these: since 2025-02-09 Bluetooth connections let you decide to use BLE or BT Classic and KISS or TNC mode.

The APRSPacketLib dependency is updated regularly, with entries for 1.0.7 in September 2026 and another update in December 2025, which tells you the packet format layer is maintained outside this repository.

## The web flasher, the boards and the build layout

Installation is the part of this project that differs most from a normal software project, and the readme leads with it.

There is a WEB FLASHER/INSTALLER, hosted as a static page, and the timeline records when it appeared, on 2024-10-09, with a code reformatting ahead of it in August 2024 for the SmartBeacon change. A web flasher for an ESP32 project means you can flash the firmware from a browser with a serial connection, without installing a toolchain, which is the difference between a project that hobbyists use and one that only people with a development environment can use.

The wiki structure shows how much of the project lives in documentation rather than in the readme. There is a FAQ covering GPS, Bluetooth, Winlink, BME280 and more, a supported boards and buying links page, an installation guide, a tracker configuration page explaining each setting, an upload firmware and filesystem page, and a menu guide. The wiki is bilingual, English and Spanish, and the tracker configuration page is the one to read first, because that is where the setting-by-setting documentation lives.

The board support is broad and is the thing most likely to decide whether this fits your build. The timeline shows a Hydra DIY board with ESP32, GPS and a 1W E22-400M30S added on 2026-10-01, a T-Beam V1.x with SX1262, the Heltec Wireless Stick Lite V3 as a TNC with no display, RPC Electronics MicroTracker, Lilygo TTGO T-Deck and T-Deck Plus, QRP Labs LightTracker Plus, Heltec V3 and V3.2 and Wireless Tracker, TROY_LoRa_APRS, WEMOS ESP32 Battery Holder, ESP32S3 DIY boards, ESP32_C3 DIY boards, and an F4GOH DIY board with an LLCC68.

The LLCC68 note is worth reading, because it is a hardware constraint rather than a preference. The entry for 2024-08-12 says the EByte E220 400M30S 1 watt LoRa module was added for a DIY ESP32 Tracker, and notes that LLCC68 supports spreading factor only in the range of 5 to 11. The radio choice constrains what the firmware can do.

The repository layout matches the structure of the project. There is a platformio.ini for the build, a src/ directory, variants/ for the per-board definitions, include/ and common_settings.ini, a data/ and data_embed/ pair for the filesystem content, a tools/ directory, and extra/ for additional files. The data and data_embed split is the interesting one, because it pairs with the wiki page on uploading firmware and filesystem, meaning the firmware needs more than the binary.

## What the tracker does beyond position reporting

Three features push this beyond a GPS beacon, and each one is a different kind of integration.

Weather data comes from a BME280 module, shown on the screen and transmitted as Wx Telemetry. The modules are autodetected, both by I2C address and by whether the part is a BME280, a BMP280 or a BME680, and there is dynamic height correction of the BME280 pressure readings so the pressure-derived altitude is right. The timeline also shows that Wx Telemetry Tx on the Tracker only happens if you are standing still for more than 15 minutes, because the on-screen data is available while moving but is not sent. That is a sensible rule: transmitting continuously from a moving vehicle crowds the network for no benefit.

Winlink mail is handled through APRSLink, which is the bridge between the amateur radio APRS network and the Winlink message service. The timeline entry for 2024-02-21 records the feature and links the APRSLink project. It is a niche capability, and it is the kind of thing that explains why this firmware is more than a locator.

Bluetooth turns the tracker into a TNC. The readme says Bluetooth capabilities to connect with Android and APRSDroid, or iPhone and the APRS.fi app, and use it as a TNC. The timeline shows BLE support for Android devices was added in August 2024, that a BT Classic packet fix landed in April 2026, and that from February 2025 the choice between BLE and BT Classic and between KISS and TNC is yours. A TNC mode means the phone's APRS app can talk to the tracker as if it were a conventional radio modem, which is how you get messaging and telemetry on a phone without any radio of its own.

The APRS protocol features themselves are worth listing too. Third party packet decoding was added, the path of WIDE1-1 is omitted when the tracker speed is over 200 km/h or the altitude is over 9000 metres, because it is probably a plane, and there is a personal note for each beacon callsign and a custom status selection.

## Conclusion

LoRa_APRS_Tracker fits an amateur radio operator who wants to be visible on the LoRa APRS network with a tracker built from a readily available ESP32 board, and it does not fit someone who only wants to receive, since the read and write side of the tracker needs a separate LoRa iGate nearby. Before flashing, check the supported boards list in the wiki, because the firmware is board-specific with different LoRa modules, GPS parts and power paths, and note that the read and write capabilities of the tracker require the LoRa iGate project to be running near you.

## FAQ

### What is the LoRa_APRS_Tracker and what hardware does it need?

It is firmware for ESP32 based boards with LoRa modules and GPS, so you can operate in the APRS world as a tracker, digipeater or station. To use the Tx and Rx capabilities you also need a LoRa iGate near you, since the tracker reaches the wider APRS network through it.

### How do I install the LoRa_APRS_Tracker firmware?

The readme points to a WEB FLASHER/INSTALLER hosted as a static page, so you can flash from a browser. The wiki has an installation guide, a tracker configuration page explaining each setting, a page on uploading firmware and filesystem, and a separate page listing supported boards with buying links.

### What can the LoRa APRS tracker do besides send a GPS position?

It can read, write and delete messages with an I2C keyboard or a phone, ask for a weather report, show recently heard trackers and iGates, transmit BME280 weather data as Wx telemetry, act as a Bluetooth TNC for APRSDroid or the APRS.fi app, and pass Winlink mail through APRSLink.

### Which boards does the LoRa APRS Tracker firmware support?

The timeline records support for the Hydra DIY board, T-Beam V1.x, Heltec Wireless Stick Lite V3 as a TNC, RPC Electronics MicroTracker, Lilygo TTGO T-Deck and T-Deck Plus, QRP Labs LightTracker Plus, Heltec V3 and V3.2 and Wireless Tracker, TROY_LoRa_APRS, WEMOS ESP32 Battery Holder, ESP32S3 and ESP32_C3 DIY boards, and an F4GOH DIY board. The wiki page on supported boards and buying links has the current list.

## Sources

- [Issues](https://github.com/richonguzman/LoRa_APRS_Tracker/issues)
- [License: GPL-3.0](https://github.com/richonguzman/LoRa_APRS_Tracker/blob/main/LICENSE)
- [README](https://github.com/richonguzman/LoRa_APRS_Tracker/blob/main/README.md)
- [Releases](https://github.com/richonguzman/LoRa_APRS_Tracker/releases)
- [richonguzman/LoRa_APRS_Tracker on GitHub](https://github.com/richonguzman/LoRa_APRS_Tracker)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/richonguzman-lora-aprs-tracker
