A curious engineer peeked under the hood of a Loon…

Mike Puchol
15 min readMay 4, 2020

Five years ago, while pondering over options for delivering Internet to residents of a large slum in Nairobi, I got interested in Loon, both as an extremely cool project — if I put my geeky scientist hat on, and possibly as a delivery medium for places where fiber is just not going to happen — if I put my CTO hat on.

In a series of articles, I’m going to take a look at some interesting details about Loon’s operations over Kenya, and analyze how far the project has come:

  • Part I: Loon navigation capabilities and operational deployment in Kenya.
  • Part II: Radio and capacity dynamics of Internet delivery through the Loon network.
  • Part III: Strategic and commercial aspects of the Loon deployment in Kenya.

In Part I, I will be analyzing the capabilities of Loon’s algorithmic navigation system, flight dynamics, and operational deployment over Kenya, derived from the observations in balloon behavior.

It was 2015, and I was digging through strange data

Data such as the price of helium, which is surprisingly high, and also, a finite resource. It vents into space when it escapes, and there is no getting it back. Some of the conclusions from my analysis, published on my blog, which you can find archived here, were:

  • To cover a territory such as India with balloons, you need a constant release/recovery cycle, and quite a lot of helium — anywhere between $20 and $450 million’s worth a year, depending on wether the balloons are aerostatic or they move.
  • Getting the volumes of data required up to the balloons for relay and delivery is a big challenge.
  • Delivering the data back to the ground is also a challenge, as you are effectively creating “megacells” from a ground coverage perspective, and you cannot just load up dozens of eNodeBs onto the balloon, which has a limited payload capacity.
  • Navigating balloons at such altitudes is hard.

It’s 2020, and Loon is flying over Kenya!

Someone whom I recently discussed my 2015 article with commented: “you didn’t know a lot of details back then”, which is true! And, I still don’t, so bear with me ;-)

I’m going to revisit the original article, armed with new details from the operational deployment in Kenya, and more information that has become available over time.

How real is it?

Very! There is certainly a lot of action over Kenya right now, and in order to gauge the extents, I looked at FlightRadar24¹ as a first source of information. It’s a shame that their historical playback tools are broken, the Loons appear and disappear, track history gets lost randomly… it’s not very useful at all if you want to do any form of deep analysis. The natural next step — with my nerd hat firmly on — was to gather the data and create a tool to visualize it. Enter the Loon Tracker²:

The Loon Tracker

You can check it out yourself and play around with it here: https://mm.mg/loon

This tool also combines Facebook’s Population Density Maps, a dataset which provides population densities with a resolution of 30 meters. The Loon Tracker currently can:

  • Track Loon flights over Kenya which use ADS-B.
  • Show the population density under a specific Loon location, displaying the total population and total addressable market (TAM) in the “Flight stats” panel.
  • Show the actual and historic flight data, including speed, altitude, heading, and altitude plot.
  • Browse and animate through a Loon’s historical path.
  • Generate loiter time heatmaps, picturing where Loons have been and for how long.

A note on TAM: the values are derived by taking 9% of the total population under the Loon’s footprint, as that is Telkom’s market share. We have to keep in mind that to access a Loon’s LTE signal, you need a Telkom SIM card in your phone. The 9% value is quite a big assumption, as it assumes an equal distribution of Telkom customers (which would have been driven by their terrestrial coverage in the first place), but I had to work on something!

From a Kenyan to the Loon

Your chances to connect to a Loon are driven by various factors:

  • A Loon passing over your location on the ground.
  • How long the Loon’s footprint stays over you.
  • How far away you are from the flight path.
  • Knowing a Loon is passing overhead in the first place — this sounds trivial, but isn’t!

To get a feel for these dynamics, let’s run through some scenarios (all times are Zulu — no pun intended!).

A millennial student, living with his parents and cat, skipping on his homework, in Eldoret. Slow-moving, sometimes stationary Loon.

Start position on the left, finish on the right

Loon flight 114 started covering Eldoret, when it began a slow pattern of zig-zag motions, at speeds below 5 knots, at times being almost stationary, and eventually began picking up speed above 20 knots, leaving the area “fast & loud” towards the east-northeast. Our young friend could have stayed connected to this Loon for close to 17 hours, not bad! The loiter time heatmap completes the picture:

Red indicates slower speeds, and increased loiter time

A farmer, finishing her breakfast, about to start her day in the tea plantation, in Kisumu. The eggs on toast were nice. Fast-moving Loon.

Green/yellow trails indicates lower altitudes, orange/red higher altitudes

The same Loon flight 114 started covering Kisumu arriving from the west-southwest. This time, the Loon was really going at it, plowing through the plantation at over 20 knots! It left our farmer without signal at around 09:07, giving her just over two hours of Internet access. The loiter heatmap also correlates with these timings:

Less concentration of red indicates shorter loiter times

We can conclude that if the flight path passes over your location, you should be able to get connected for a reasonable amount of time. At the maximum velocity we have seen a Loon travel at, we could expect a connection time of around 50 minutes. However, the further away you are from the centerline, the lower your potential connection time will be.

Up in the sky, look! It’s a bird! It’s a plane! It’s Loon!

Once we have established that you could get anywhere from a few minutes to several hours of Loon coverage at random times, we need to tackle the next tough nut — how do users on the ground know they can use their phones to access the Internet during coverage periods? Our farmer could be busy collecting tea leaves, while a Loon flies overhead, and be none the wiser. If she looks at her phone she would see she’s got a signal, but we can’t expect users to be looking at their phones all the time in wonder.

There are various things we could try to alleviate this issue, I will list them but won’t go into detail, as that could warrant a post on its own:

  • Flash/broadcast SMS from the Loon to registering UE, announcing availability of signal. With beam-forming antennas, approximate location of an UE could be determined, allowing for a prediction of approximate “airtime”.
  • An App that provides predictive coverage patterns, updated by each Loon as it passes by — akin to GPS receivers downloading ephemeris data to determine constellation location.
  • A big loud fog horn hanging off the Loon.³

From the Loon to a Kenyan

How do things look the other way around? Our Loon’s ability to be effective also depends on several factors:

  • Flying over populated areas.
  • The existing LTE coverage in the areas it flies over.
  • Availability of LTE devices in the areas it covers.
  • Density of users with a Telkom SIM card in their device.
  • The same factors around velocity and loiter time as for ground users previously discussed.

We cannot really know, in any given footprint, how many Telkom subscribers there are, but we can take a guess, based on Facebook’s population density maps, and Telkom’s market share of 9%, so we will use these two as a proxy, taking a best-case guess.

It is also quite hard to know, given the lack of publicly-available information, the real ground coverage provided by Telkom’s 4G network, so we won’t take it into account in our analysis.

By right-clicking on any Loon over Kenya, the Tracker will plot a heatmap of population density within its footprint. We can see two examples below:

Loon flight 114 over Eldoret
Loon flight 136 over a sparsely populated area

It’s quite clear that the flight path strategy of the Loon fleet is critical to its success in reaching users on the ground. Let’s do a quick sanity check, while we are at it, on Facebook’s population density map’s accuracy:

Sparsely populated area, zoomed into a small town’s satellite view

Not bad! Wether the counts of people are accurate is up for debate, but as a proxy for actual population densities, it’s quite good.

In our two examples, we saw a total population of close to 1.7 million people, with a total addressable market of 150,000 people. In the second case, we had just about 42,000 people, and a TAM of 3,800. How we position our Loons is, thus, of crucial importance. We could take two broad approaches:

  • Revenue-centric: position the Loons over highly populated areas, and also focus on those with higher TAM based on our knowledge of subscriber densities.
  • Service-centric: position the Loons over areas with 2G coverage, which would benefit the most from having LTE coverage not currently provided by the terrestrial network.

These options will be further developed in Part III of this series of articles.

Piloting a massive polyethylene bag full of helium at 60,000 feet on the other side of the planet

Is no easy feat, and one of the most impressive developments I have seen in Loon. The amount of control they have over each balloon is nothing short of totally awesome, and worth taking a deeper look into. As written by Salvatore Candido in his post on reaching 1 million hours flown, and Astro Teller in his post describing Loon’s software algorithms, Loon uses a vast amount of historical flight data to feed an algorithm which helps predict future behavior, and thus steer balloons automatically.

How good is good?

This is the current view of all Loon tracks over Kenya, caught by the Tracker so far:

What a bunch of multi-colored spaghetti!

At first sight, it looks like quite a mess. However, without the benefit of knowing where Loon’s operators really wanted their balloons to be, it’s hard for me to judge how good a mess this is (or not!). If we compare with flight patterns of powered aircraft under air traffic control, we can see the difference:

Seattle-Tacoma accumulated flight tracks⁴

Nobody is going to expect the level of accuracy afforded to a powered aircraft from a free-floating Loon, but within the realms of their current capabilities, let’s see how good it gets. A few caveats before diving into this one:

  • I have no idea about the algorithms, level of automation, manual intervention, or other inputs/outputs on the Loon steering systems, and how those can affect the observations made.
  • I have no idea if any of the motions observed where a result of a human directing a Loon to a target, or to loiter over a particular area, and if so, how large this area is afforded to become. Thus, I could flag something as “it’s not really doing its job” and be totally unfair!
  • These are my best guesses based on observation of flight data, nothing more.
  • Loons have not been tracked all the way from origin or to destination, due to the restrictions of ADS-B coverage, which results in gaps, and some Loons appearing and disappearing all over the place. We should not assume a Loon showing in grey (not tracked for over 2 hours) has dropped to the ground at that spot, but that we lost ADS-B tracking of it, for reasons unknown.

Loon flight dynamics

Below is the individual track of Loon flight 140, which starts just before 11:00 on April 22nd:

The flight begins over the Tsavo national park, where it stays until the 23rd, when it departs towards the north. This would seem intentional, as the Loon clearly changes altitude in order to remain “on station” — however, the population in this are is quite low, at around 13,000 people in total. It is also an area possibly lacking Telkom ground coverage, which would then make sense for Loon to cover, and see increased usage.

Tsavo showing loiter time and population heatmaps

The move towards the north could also seem intentional, but it is not tied to a change in altitude, which remains at around 62,000 feet. It could just be that there was a command to travel north, and winds just happened to change direction and took the Loon that way. At around 15:20, something interesting happens:

Without a major change in altitude, the Loon turns left 90º, and begins a west-southwest trajectory. Again, maybe intentional, but it could just be the winds being picky. However, if 100ft is really all it takes for such a shift in direction, then the required level of control over altitude is huge.

Let’s now look at the clearest example of the “figure 8” maneuver that Loon’s algorithms decided was best to keep station:

“Red” legs at higher altitude are run at higher speeds

We can see the Loon starting on a southwest course at 20 knots and 58,000 feet, until it climbs to just under 61,000 feet, causing an almost 180º course change. It’s quite surprising how winds can change in a space of 3,000 feet! After the course change, the Loon picks up significant speed, up to 45 knots.

The whole exercise lasted from 13:30 to 20:00, thus providing six and a half hours of Internet access to the area surrounding Simba⁵.

With total population of around 350,000 people, some 31,000 Telkom customers could have benefited from having a Loon overhead — not bad going at all!

Altitude-driven course changes

Here is a video of a course change executed by Loon 114 by changing altitude in a climb, over the South Atlantic Ocean, resulting in a very pretty loop:

A second interesting example of algorithm-driven navigation is this course change by Loon 132, currently heading to Kenya after passing Madagascar:

The navigation profile (target: Kenya) required the turn to the north, and the Loon makes a first attempt to climb, but as soon as the algorithms realize it is turning south instead, it gets commanded to descend. After 60km of travel, the Loon begins to climb again, this time detecting a turn towards the north, and so the climb continues, sharply but briefly stopping at 57,600 feet and veering south before resuming the turn. Why, after this sharp turn to the south is detected, does the Loon continue to climb? Likely, the vast amount of wind profile data which feeds the algorithms can work out something along these lines: “once a climb results in a turn in the desired direction, there is a chance of 2.6% that the winds will veer in the wrong direction, so continue the climb regardless”.

It’s worth watching the sequence in motion — amazingly, the Loon almost completely changes direction in a space of barely 300 feet of altitude change:

Algorithms? We don’t need no stinkin’ algorithms!⁶

One observation made by the Loon team once they “let the AI loose” (my words!) was that in order to keep station, the steering algorithms chose the “figure 8” all by themselves, based on the learnings from millions of hours of flight data.

The “figure 8” holding pattern chosen by Loon’s AI/ML

Why was a normal racetrack-style pattern not chosen, like those flown by commercial aircraft when waiting for a spot in the landing queue?

A racetrack holding pattern

The reason did not require a complex, software-defined, autonomous steering and navigation algorithm, but some pen & paper and understanding the wind gradients. Let’s start with our descent point, and see how the wind gradient (the direction the wind changes by as we descend) affects our Loon:

Wind rotates 180º from east to west as we descend, direction vectors shown in different colors

As we descend, the wind direction changes, and we are pushed in the direction pointed at by the colored arrows. What happens during ascent, once we complete the westward leg?

The wind direction vectors have been drawn in the original direction as the descent segment, and we can see that they would turn the Loon around, but in the process, also push it north, moving the eastward leg towards the north too.

The end result of this would be a net displacement towards the north with each loop, which is not what we’re aiming for:

Definitely not what we are looking for…

Depending on the wind speeds, the displacement could throw the Loon off station fairly quickly. I’m sure an algorithm could learn all this by itself, feeding tons of historical flight data through neural networks, and coming up with the best shape to achieve the objective, but in this particular case, the algorithm came to a rather obvious conclusion.

The algorithms are a lot more useful in general navigation around the globe, or staying in a certain location providing service, where automated decisions are key in managing a large fleet of balloons. Long-term, statistical weather trends, combined with short-term, observation-driven adjustments, and plenty of measured data points from actual flights, makes this kind of AI-driven navigation possible. The value of these algorithms is such that Loon is licensing its software defined network (SND) to Telesat to manage their fleet of LEO satellites.

Wind directions and speeds vary greatly with altitude in any given spot of the Earth

As I finish writing this first post, I’m watching Loon 132 making its way to Kenya, having started tracking it over DRC. This is an example of the non-intuitive way Loons navigate by following winds that take them in seemingly long trajectories, but which are shorter in duration.

Conclusions

The level of navigational capabilities exhibited by Loon is nothing short of amazing. They have proven that control of a balloon’s course to a destination, and holding its position once on station, using nothing but altitude changes, is feasible and viable.

How much the observed behavior can be improved by more algorithmic learning, against the somewhat unpredictable nature of winds, is one of the main uncertainties.

From where the project was four years ago, when I first analyzed it, Loon has come VERY far, and shown that providing Internet in a particular region, from a balloon floating in the stratosphere, is feasible. Advances in materials, machine learning, sensors, and communications have made what seemed a far-fetched dream a reality.

There are still many issues to solve and questions to ask, and I will analyze them in Part II and III, such as:

  • How many customers and with how much bandwidth can be served from a Loon?
  • What are the air-to-ground and air-to-air communications going to require to support the traffic?
  • How do the Loon cells interact with the ground networks?
  • What is the effective service the Loon balloons may have provided over Kenya so far?

Footnote: do moonshots matter?

Four years ago, in a “normal” world, I would likely have killed the project, given the costs and challenges I concluded would be faced, compared with the financial returns and economic models that could be realized. The amount of revenue required to pay for all the helium, logistics, hardware, research, ground infrastructure, etc. was way too high compared to the amount of service that could be delivered, and the area that could be covered. It was a clash of CAPEX and OPEX against ARPU and unit economics.

However, if you approach the issue with a “moonshotty attitude”, instead of as a pure beancounter, things look different. What seemed like an impossible problem — keeping a balloon almost stationary over a certain area for long periods of time — is now quite real.

Thinking big allows you to challenge pre-made assumptions, much like a startup is looking for something big, something that will make a huge impact, not just a good business to run and live comfortably from. Some people setup a bakery to lead a relatively comfortable life with low risks, others start companies like Loon or SpaceX to make a 10x or 100x impact on specific problems facing humanity as a whole, such as Internet access and connectivity. It all started with the moonshot and JFK!

So, moonshots do matter!

[1] https://www.flightradar24.com

[2] First name that came to mind. Too obvious. Suggestions welcome

[3] This is no joke! It’s called a diaphone, and the biggest one in the world can be heard from 32km away. It lives in a lighthouse in Tasmania.

[4] Source: FlightRadar24 contest page found here

[5] Simba translates to “power” or “lion” in Swahili, so it is quite an appropriate location to show off navigation skills!

[6] Of course we do need algorithms, but it’s a cheap opportunity to use the famous movie quote…

--

--