Monday, September 7, 2026

182 Miles / 292 km on LoRa: Tracking a Batteryless Polish APRS Balloon from California

On September 6, 2026, a solar-powered LoRa APRS balloon launched from Poland more than six weeks earlier woke up off the California coast. From my home LoRa APRS iGate in Ridgecrest, California, I was able to receive it directly over RF from approximately 182 miles / 292 km away.

On the morning of September 6, I noticed something unusual appearing in the received-packet list of my home LoRa APRS iGate.

The callsign was:

SP0LND-6

At first, what caught my attention was simply that I was hearing a high-altitude balloon.

Then I looked at where it actually was.

It wasn't over Ridgecrest. It wasn't even particularly close to Ridgecrest. It was moving across California and Nevada at roughly 46,000–47,000 feet / 14,000–14,300 meters, and my iGate was repeatedly decoding its LoRa packets directly over RF.

As the morning went on, the balloon kept moving farther away.

My station kept hearing it.

By the time I reached the farthest packet I can positively confirm as having been gated by my station, SP0LND-6 was approximately:

182 miles / 292 km away

And the receiving station wasn't anything exotic: a Heltec V3 connected to a Diamond X50A vertical mounted at my house.

What started as a fun morning of balloon tracking turned into a fascinating demonstration of high-altitude LoRa propagation, APRS networking, solar-only balloon design, and one important configuration lesson for LoRa APRS iGate operators.


TL;DR

LoRa APRS uses low-power LoRa radios to send APRS data over surprisingly long distances, somewhat like Meshtastic but tied into the APRS network.

  • SP0LND-6 is a batteryless, solar-powered Polish LoRa APRS digipeater balloon launched on July 25, 2026.
  • On September 6, 2026, it woke up off the California coast after sunrise and began transmitting again.
  • My home iGate, KI6PSP-11 in Ridgecrest, California, received and gated it from approximately 182 miles / 292 km away while it was at about 46,900 feet / 14,300 meters.
  • The balloon's mission is not just tracking; it is specifically designed to communicate through third-party TX-capable LoRa APRS iGates.
  • My iGate had TX enabled, but my APRS-IS filter was only m/50 — about 31 miles / 50 km — so the Internet side of the station was much narrower than the RF side.
  • A giant static filter such as m/300 is not ideal because it would pull in a large amount of unrelated terrestrial APRS traffic.
  • A better solution would be dynamic APRS-IS friend filters based on stations actually heard over LoRa, and I submitted a feature request to the CA2RXU / LoRa_APRS_iGate project for that behavior.
  • APRS.fi's “Stations heard directly by” list can miss legitimate receptions because it is derived from APRS-IS traffic and duplicate suppression; my local packet log and raw qAR,KI6PSP-11 packets are stronger evidence of what my station actually heard.

What Is SP0LND-6?

SP0LND-6 is a Polish experimental LoRa APRS digipeater balloon operated by Damian, SQ2CPA, as part of the SP0LND balloon project.

This particular SP0LND-6 flight was launched on July 25, 2026. The mission report describes its primary objective as communication and control, not simply position tracking.

The payload was designed to explore how an airborne LoRa APRS node could interact with terrestrial LoRa APRS infrastructure far from the operator's own radio coverage.

The payload uses an HT-CT62 module with an SX1262 LoRa transceiver. Its antenna is a quarter-wave ground-plane design with two radials, an arrangement selected after earlier flights demonstrated just how important antenna performance was to long-range balloon communication.

During the original documented portion of the mission, SP0LND-6:

  • decoded 2,077 frames from 259 callsigns
  • digipeated 411 frames from seven stations
  • was heard by 109 iGates
  • was received from approximately 286 miles / 461 km away
  • successfully received another station from approximately 277 miles / 445 km away on 433.775 MHz at 300 bps

Those numbers matter because they show that the long-distance reception I later experienced in California was entirely consistent with what this payload had already demonstrated.


More Than Just a Tracker

The most interesting part of SP0LND-6 is what it was designed to prove.

Eventually, a long-duration balloon leaves its home country. Once that happens, its operator can no longer simply transmit directly to it.

Instead, SP0LND-6 was designed to make use of whatever LoRa APRS network happened to be underneath it.

A command could originate through APRS-IS, reach a TX-capable LoRa APRS iGate somewhere near the balloon, be transmitted over RF, and then be received by the balloon.

The balloon could respond, and another iGate could carry the reply back into APRS-IS.

During the original mission testing, commands were sent over APRS-IS while third-party iGates in Poland, Czechia, and Slovakia handled the RF side of the communication.

The operator's own station didn't need to transmit the RF packet at all.

That becomes important later in this story, because my own iGate was capable of doing more than simply listening.


A Floater, Not a Burst Balloon

At first glance, the published mission report can make it look like SP0LND-6 only flew for 11 hours and 46 minutes.

That is not what happened.

That time represents the initial period during which the balloon was visible through the available LoRa APRS ground network.

The report specifically notes that SP0LND-6 was still airborne when APRS-IS coverage was lost.

Its last reported altitude during that portion of the flight was approximately 44,700 feet / 13,625 meters, and there was no burst or descent.

SP0LND-6 is a floater.

Rather than climbing until the balloon bursts, it climbed into the stratosphere and settled into a float region around 44,300–44,800 feet / 13,500–13,650 meters.

That is how a balloon launched in Poland in July could still be flying over the United States in September.


No Battery: The Sun Is the Power Switch

One of the most fascinating parts of this particular balloon is what it doesn't carry.

There is no backup battery.

The payload operates from solar power.

That means the balloon does not remain fully powered throughout the night. When available sunlight drops too far, the electronics shut down.

When the sun returns, so does the balloon.

And that explains exactly what happened off the California coast on September 6.

7:35:31 AM PDT

The first packet I captured was a simple identification/status packet:

LoRa APRS Balloon DIGI - www.SP0LND.pl/digi

Additional identification packets followed over the next several minutes.

7:42:56 AM PDT

The first position and telemetry packet appeared:

  • Position: 35°24.49'N / 121°55.23'W
  • Speed: 88 MPH / 142 km/h
  • Course: 67°
  • Altitude: 46,418 feet / 14,148 meters

At that moment, SP0LND-6 was still off the California coast.

Twenty-three seconds later, another position followed.

The sequence makes sense for a batteryless solar payload.

First, the panels receive enough sunlight to bring the electronics online.

The radio begins transmitting.

Then the GPS and other systems become fully available, and complete telemetry starts appearing.

SP0LND-6 wasn't being launched off California.

It was waking up.


Crossing California

Once the payload was fully awake, SP0LND-6 began leaving a clear APRS track northeastward from the Pacific.

It came ashore in California, continued northeast across the state, passed through Nevada and Utah, and kept moving across the western United States.

One thing worth remembering when looking at an APRS map is that the line represents reported positions, not necessarily a continuous breadcrumb trail showing every place the balloon traveled.

A gap might mean:

  • no suitable iGate was in range
  • a packet wasn't received
  • the balloon was outside network coverage
  • or the solar-powered payload was asleep

On September 6, however, there was excellent coverage across much of the western United States.

And my station became part of it.


My LoRa APRS iGate

My station is located in Ridgecrest, California and operates as:

KI6PSP-11

The receiving setup is fairly simple:

  • Heltec V3
  • Richon Guzman's LoRa_APRS_iGate firmware
  • Diamond X50A dual-band vertical
  • antenna base approximately 19.5 feet / 5.9 meters above ground
  • good-quality coax between the antenna and Heltec

The antenna is an ordinary omnidirectional amateur-radio base vertical.

I was not using a Yagi.

I wasn't tracking the balloon with a directional antenna.

There was no rotator automatically following it across the sky.

The iGate was simply sitting at home doing its normal job.


Watching the Signal Get Weaker

As SP0LND-6 continued northeast, I could watch its packets appearing in the iGate's local received-packet list.

These were not simply positions I was seeing on APRS.fi.

My radio was actually decoding the balloon directly over LoRa RF.

PositionAltitudeRSSISNR
37°09.51'N / 118°36.09'W46,851 ft / 14,280 m-118 dBm-5.5 dB
37°19.57'N / 118°19.06'W46,985 ft / 14,321 m-116 dBm-4.25 dB
37°28.18'N / 118°04.16'W46,977 ft / 14,318 m-116 dBm-4 dB
37°37.19'N / 117°48.89'W47,002 ft / 14,326 m-119 dBm-7.25 dB
37°43.47'N / 117°38.49'W47,058 ft / 14,343 m-117 dBm-4.75 dB

For someone accustomed to conventional FM radio, the negative SNR values can look strange.

They aren't.

One of LoRa's greatest strengths is its ability to successfully decode signals below the conventional noise floor.

A negative signal-to-noise ratio does not necessarily mean an unusable signal.

And I was watching that capability in action.


The Farthest Confirmed Reception

The farthest packet I have positively confirmed as being gated through my own station occurred at:

11:17:10 AM PDT

SP0LND-6 reported:

  • Position: 38°09.87'N / 116°54.14'W
  • Altitude: 46,887 feet / 14,291 meters
  • Speed: 104 MPH / 167 km/h
  • Course: 52°

Most importantly, the APRS path showed:

qAR,KI6PSP-11

That is much stronger evidence than simply drawing a line between my house and the balloon on a map.

It shows that KI6PSP-11 actually received the RF transmission and gated the packet into APRS-IS.

The calculated ground distance between my station and the balloon was approximately:

182 miles / 292 km

The actual slant-range RF path was only slightly longer.

That is nearly 186 miles / 300 km of potential RF coverage from a tiny solar-powered balloon payload to an omnidirectional antenna mounted at a house.

Why APRS.fi Did Not Always Show My Station as Having Heard It

While I was actively receiving SP0LND-6, I noticed an apparent contradiction on APRS.fi.

My local iGate's received-packet list clearly showed SP0LND-6 being decoded over LoRa RF, and APRS raw packets showed qAR,KI6PSP-11 on packets my station had gated. Yet the APRS.fi page for KI6PSP-11 did not list SP0LND-6 under “Stations heard directly by KI6PSP-11.”

The important distinction is that this APRS.fi table is computed by APRS.fi from APRS-IS traffic. It is not a “heard stations” list uploaded by the CA2RXU firmware.

APRS-IS also performs duplicate suppression. With a high-altitude balloon, several iGates may hear the exact same RF packet. If another iGate's copy reaches APRS-IS first, later duplicate copies may not become the packet APRS.fi uses when it builds its direct-heard statistics.

So APRS.fi's “heard directly” table is useful, but it is not a complete record of every RF packet a particular iGate actually decoded.

For this flight, the stronger evidence was:

  • the local LoRa received-packet log, which proves my receiver actually decoded the balloon over RF, and
  • the raw APRS path showing qAR,KI6PSP-11, which independently confirms that my station gated at least some of those packets into APRS-IS.

This also matters for the filter discussion later in this article: the firmware's own Last Heard data is a better representation of the iGate's actual RF neighborhood than APRS.fi's derived summary statistics.


Why 182 Miles / 292 km Is Possible

If both radios were sitting close to ground level, a 182-mile / 292-km UHF path would be extraordinary.

But SP0LND-6 wasn't sitting on the ground.

It was almost:

47,000 feet / 14.3 km above the Earth.

That changes the geometry completely.

At that altitude, the balloon has line-of-sight access to an enormous area of the Earth's surface.

The terrestrial limitations we normally associate with UHF communications no longer apply in quite the same way.

The mission's own earlier results demonstrate this:

  • SP0LND-6 was received from approximately 286 miles / 461 km
  • SP0LND-6 itself received another LoRa APRS station at approximately 277 miles / 445 km

So my 182-mile / 292-km reception wasn't beyond what the payload was capable of.

It was simply my turn to be one of the stations underneath it.


The Part I Nearly Missed

After the balloon crossed my area, I contacted Damian, SQ2CPA, the operator behind SP0LND.

That conversation led me to discover one of the most useful lessons from the entire flight.

My iGate had TX enabled.

It was also configured to gate APRS-IS messages and objects back to RF.

In other words, my station was capable of doing more than simply hearing the balloon.

But my APRS-IS filter was:

m/50

That filter covered a radius of approximately:

31 miles / 50 km

Meanwhile, my radio was hearing the balloon from:

182 miles / 292 km

The RF side of my station was operating at almost six times the radius that I had configured APRS-IS to consider local.

My first thought was simply to make the APRS-IS radius much larger — perhaps m/300. That would include a balloon at 186 miles / 300 km, but it would also subscribe the iGate to ordinary APRS traffic across that entire area, even though most ground stations at those distances are nowhere near my realistic RF coverage.

That led to a better question: instead of making the iGate's entire APRS-IS footprint huge, could the Internet-side filter temporarily follow a distant station that the radio has actually heard?


A Traditional APRS Mindset Meets a 47,000-Foot / 14.3-km LoRa Station

The interesting part is that I suspect this configuration is not unique to my station.

When I originally configured the iGate, the default radius was even smaller — approximately:

12 miles / 20 km

That didn't seem unreasonable.

Many amateur radio operators come to APRS with a 2-meter terrestrial mindset.

We expect APRS stations to be:

  • cars
  • handheld radios
  • fixed stations
  • repeaters
  • digipeaters

Most of them are on or relatively close to the ground.

We also tend to value conservation and efficiency. There is little reason to pull huge amounts of unnecessary Internet traffic into an iGate if only nearby stations are relevant.

For normal terrestrial APRS, a radius of:

  • 12 miles / 20 km
  • 19 miles / 30 km
  • or 31 miles / 50 km

can make perfect sense.

But then someone puts a LoRa radio at:

45,000–47,000 feet / 13.7–14.3 km

Suddenly, a station nearly:

186 miles / 300 km away

can still be a perfectly valid RF neighbor.

The definition of local changes.


If You Operate a LoRa APRS iGate, Check Your Filter

This may be the most useful takeaway from the entire experience.

If you operate a LoRa APRS iGate and want your station to support:

  • high-altitude balloons
  • airborne digipeaters
  • long-distance LoRa trackers
  • APRS-IS-to-RF messaging
  • experimental airborne relay systems

then review your APRS-IS filter settings.

Do not automatically assume that a radius appropriate for terrestrial 2-meter APRS is also appropriate for high-altitude LoRa APRS.

SP0LND-6 was specifically designed around the idea that it could travel far beyond Poland and make use of whatever LoRa APRS infrastructure happened to be underneath it.

The mission report encourages iGate operators to enable TX capability because an RX-only station can watch the balloon pass, while a TX-capable station can potentially become part of the communication path.

But TX capability alone is not the entire story.

Your APRS-IS configuration also needs to account for the fact that a high-altitude LoRa station can be a legitimate RF neighbor from hundreds of miles / hundreds of kilometers away.

In my case:

Demonstrated LoRa RF reception: approximately 182 miles / 292 km

APRS-IS filter radius during the flight: only 31 miles / 50 km

Why a Huge Static Radius Is Not the Best Answer

Simply changing the filter to something like:

m/300

would expand the APRS-IS feed to approximately 186 miles / 300 km around the iGate. That solves the balloon-distance problem, but it also pulls in a large amount of terrestrial APRS traffic that may have no realistic RF relationship to the iGate.

A more elegant approach would be to keep the normal local filter and dynamically add a friend-range filter around a distant LoRa station that the iGate has actually heard.

For example, the normal local filter could remain:

m/50

Then, after hearing SP0LND-6 directly over RF, the iGate could temporarily use:

m/50 f/SP0LND-6/20

That would preserve the normal 31-mile / 50-km local APRS area while also following traffic within approximately 12 miles / 20 km of the balloon itself.

If the balloon leaves RF range and drops out of the iGate's Last Heard list, the temporary friend filter could be removed automatically.

A Firmware Improvement Request

I reviewed the LoRa_APRS_iGate firmware I am running and found that it already maintains a Last Heard list of stations received over LoRa. That same Last Heard information is used when deciding whether APRS-IS traffic should be transmitted back to RF.

What the firmware does not currently do is dynamically modify the APRS-IS filter based on those heard stations.

I have submitted a feature request to the CA2RXU / LoRa_APRS_iGate project proposing exactly that: keep the operator's normal local filter, but optionally add temporary APRS-IS friend filters for selected stations that are actually being heard over LoRa RF.

Possible matching could be based on:

  • all recently heard LoRa stations,
  • a configured callsign prefix such as SP0LND,
  • an APRS symbol such as Balloon, or
  • a combination of those choices.

For the SP0LND project specifically, even a simple prefix filter could be useful:

m/50 p/SP0LND

That would allow an iGate to retain its normal local feed while also following the SP0LND family of stations. A true Last-Heard-driven friend filter, however, would be more efficient because it would follow only the distant stations the iGate has actually demonstrated it can hear.

Until firmware can do this automatically, the important thing is for LoRa APRS iGate operators to understand that their RF coverage and APRS-IS filter coverage may be very different when high-altitude stations are involved.


The Balloon Went Dark Again — Exactly as Designed

As SP0LND-6 continued across the United States, it eventually went silent again over Montana and the Dakotas.

Normally, seeing a balloon disappear from APRS would raise questions.

Did it fail?

Did the transmitter stop working?

Did the balloon descend?

Not necessarily.

Remember:

There is no battery.

As daylight disappeared, so did the available power.

The balloon went dark.

Then the sun came back.

And so did SP0LND-6.

By the next daylight period, it was transmitting again farther east, including over Lake Michigan.

That repeated sleep-and-wake cycle may be one of the most fascinating aspects of the entire project.

Every night, the radio essentially disappears.

Every morning, sunlight brings it back.

The electronics boot.

GPS reacquires.

The transmitter returns.

And SP0LND-6 joins whatever LoRa APRS network happens to be underneath it.


More Than Six Weeks After Launch

SP0LND-6 launched from Poland on:

July 25, 2026

The documented portion of its original flight ended while the balloon was still floating around:

44,700 feet / 13,625 meters

Then, on the morning of:

September 6, 2026

it woke up off the coast of California.

That means the balloon had survived for more than six weeks.

Not with a large battery maintaining continuous operation.

Instead, this tiny payload had repeatedly:

  • shut itself down at night
  • floated through darkness
  • waited for sunlight
  • restarted
  • reacquired GPS
  • and returned to the radio network

again and again.

That makes tracking a solar-only floater very different from watching a normal vehicle tracker.

Silence does not necessarily mean failure.

Sometimes silence is simply nighttime.


A Tiny Payload and a Very Large Network

The 182-mile / 292-km reception number is fun.

But I don't think it is actually the most interesting part of the story.

Consider what was happening.

The balloon operator was in Poland.

SP0LND-6 was over Nevada.

My iGate was in Ridgecrest, California.

Other iGates were hearing it across California, Nevada, Utah, and beyond.

A command could potentially enter APRS-IS from somewhere else in the world, reach a TX-capable iGate underneath the balloon, emerge onto LoRa RF, reach the airborne payload, and return through another gateway.

No cellular subscription.

No commercial satellite service.

No proprietary worldwide tracking network.

Instead, the system relies on individual amateur radio operators maintaining pieces of infrastructure that collectively become a much larger network.

That is exactly the concept SP0LND-6 was designed to explore.

And for part of September 6, my station became one of those pieces.


Station Details

For anyone interested in reproducing or comparing the setup:

  • Callsign: KI6PSP-11
  • Location: Ridgecrest, California
  • Radio: Heltec V3
  • Firmware: Richon Guzman LoRa_APRS_iGate
  • Antenna: Diamond X50A
  • Antenna base height: approximately 19.5 feet / 5.9 meters AGL
  • Feedline: quality 50-ohm coax
  • LoRa APRS channel: 433.775 MHz / 300 bps
  • APRS-IS server: SoCal APRS2
  • APRS-IS filter during the flight: m/50 — approximately 31 miles / 50 km
  • Filter improvement being explored: dynamic APRS-IS friend filters driven by the firmware's Last Heard list
  • Farthest confirmed reception: approximately 182 miles / 292 km
  • Balloon altitude at that reception: 46,887 feet / 14,291 meters

Final Thoughts

I started that Saturday morning simply watching packets appear on an iGate.

By the end of the day, I had learned considerably more about:

  • LoRa propagation
  • high-altitude radio geometry
  • APRS-IS filtering
  • solar-powered balloon operation
  • international amateur-radio networking
  • and the engineering behind a very clever experiment

Yes, the headline number is fun:

182 miles / 292 km on LoRa

But I think the more important lesson is this:

High-altitude LoRa completely changes our idea of what “local” means.

A filter designed around terrestrial APRS can become the limiting factor when the RF side of your station is capable of hearing something nearly 186 miles / 300 km away. The answer may not be to make every iGate subscribe to an enormous static area, but to make the APRS-IS side smarter about following the distant stations the radio is actually hearing.

And somewhere above us, a tiny Polish balloon with no battery continues to shut down every night, wake with the sun, and search for the next amateur-radio network underneath it.

That's pretty hard not to love.

73,
Edward — KI6PSP


Sources and Further Reading



Ed KI6PSP http://KI6PSP.blogspot.com

No comments:

Post a Comment