How BalenaOS Ran the First Docker Containers In Space
One June morning, at 4:21 a.m., a 2700 kg (~ 6,000 pounds) rocket launched in Sweden carrying over 272 kg of scientific experiments. It rose majestically over 300 kilometers (148 miles) into the sky, before flawlessly executing its return back to earth. After landing, the science experiments were successfully recovered by helicopter and returned for further analyses.
One experiment involved a Raspberry Pi Zero , the tiny $5 board with a 1GHz ARM11 core — and a container engine. “To our knowledge this is the first time a Moby/Docker container engine has been flown to space!” noted Internet-of-Things software vendor Balena in a blog post, adding that its operating system, BelanaOS, was the one chosen to run the Docker containers.
It’s exciting to see today’s space researchers making good use of all our technologies — even humble off-the-shelf parts — while combining them with state-of-the-art rocket science, operating systems, and powerful sensors. It’s a way to try a new direction in both the exploration of space and the materials that we’re using to do it. And while offering some inspiring hints about what the future might look like, it also gives a surprisingly fresh perspective on some of the technologies that we’re already using.
The Origins of the Experiment
One of the experimenters was Nico Maas, an “IT Systemelektroniker” working as a ground controller for the European Space Agency’s “Columbus” module (launched to the International Space Station in 2008).
Maas’s webpage reports that he works out of the Microgravity User Support Center in a German Aerospace Center facility (DLR Cologne), a group responsible for preparing and operating experiments in different gravity-challenged environments, including experiments on the International Space Station, on “parabolic” flights offering moments of weightlessness, and even the Mole temperature sensor experiments being conducted on Mars.
The MUSC operates major equipment for the scientific use of space, including those used for materials science, biological and extraterrestrial sciences and technology.” That’s where the containers-in-space experiment began. In October, the AIP Review of Scientific Instruments published a new paper co-authored by Maas explaining MUSC’s goal was to test “a new commercial off-the-shelf on-board computer platform” for research rockets.
For this experiment, the different applications were run in separate containers, so a crash or malfunction by one application would be isolated, not effecting the other applications,
It’s not the first time a popular microcontroller board has flown into space. The paper also references the ARDUSAT, an Arduino based “cubesat” nanosatellite that lets students create their own satellite-based space experiments. But the paper’s abstract explains the rationale for this experiment was “to supersede the aging microchip ATMEGA328P as the de facto standard for commercial off-the-shelf onboard computers with a more powerful system for different kinds of high-speed sensors and image acquisition applications.”
Balena’s blog post notes that the ATmega328 microchip is the one currently used in some Arduino boards, but that more computing power may be required for “more complex projects involving high throughput data sampling and cryptography.” The paper gives an example of high-speed sensors and image acquisition applications. For this experiment, the different applications were run in separate containers, so a crash or malfunction by one application would be isolated, not affecting the other applications. So a camera application ran in one container, while the time synchronization application ran in another.
After some vacuum testing at the Institute of Material Physics in Space at the German Aerospace Center in Cologne, the team was ready to test their contraption in the real-world rigors of space. The researchers dubbed their new project apex — a name derived from “advanced processors, encryption, and security experiment,” while proudly noting that their simple design included a redundant microcontroller system with flash storage.
Beyond the Cloud(s)
Balena’s blog offers a nice summary of the mission: The rocket carried the high-definition camera attached to a Raspberry Pi Zero with two ESP32-PICO-D4 microcontrollers “and an array of sensors connected via an i2c bus.” There was also a special connection allowing it to interface with the rocket’s service module so it could receive signals notifying it of key data-gathering moments in the experiment starting with an indicator for the moment of lift-off.
— Nico Maas (@nmaas87) October 9, 2019
“A sudden loss of power or brown-out during a write cycle to the on-board SD card has a high chance of corrupting the filesystem and rendering the device unable to boot and function as a result,” the blog noted. “Of course, in an application such as this where the primary purpose is data capture, write cycles are almost continuous, increasing the risk of corruption even further.”
But fortunately, all the software — running in containers — was controlled by Balena’s own implementation of the Moby/Docker container engine, balenaEngine.
Why BalenaOS? Balena’s blog post touts their OS as “designed for reliability, fault tolerance, harsh networking conditions and unexpected shutdowns — perfect for this environment.” BalenaOS uses the customizable Linux components from the Yocto project (a Linux Foundation effort to improve software development process for embedded and IoT devices), then optimizes those components for the devices they support — one of which, of course, is the Raspberry Pi. “In balenaOS all application logic and services are encapsulated in Docker containers,” explains their help page for the Raspberry Pi 3 B/B+. The BalenaOS web site notes that they’re using Docker because it “uses the power of containerization to provide a consistent environment for your software to operate inside at a far smaller performance penalty than virtualization.”
The guys over at DLR MORABA made an awesome video of the ATEK / MAPHEUS-8 mission, which included our payload apex :)! https://t.co/Xwdfm4zf3j
— Nico Maas (@nmaas87) August 26, 2019
The mission was completed successfully — although that raises the question of what happens next. Looking forward, the paper says that the research team would like to conduct more experiments, possibly to improve their data throughput while maintaining the same levels of redundancy and resilience. And one possible way to make that happen, they write, could involve the use of “quorum-based” techniques (where agreement among a majority of instances becomes the equivalent of having a “quorum” of voters giving validity to a result.)
It’s a lot to think about, and it also seems like a fun experiment, for which Maas was uniquely qualified for. His GitHub profile lists him as a “Raspberry Pi geek”, while also noting he’s also been a Docker Campus Ambassador — a student who received special training from Docker “to help their peers learn…” But there’s something inspiring about seeing the simple everyday technologies of our modern world being hoisted far above planet earth, pioneering a path for even more experiments — and experimenters — in the future.
Maybe one small step for containers will someday be seen as a giant leap for mankind.
- Popular Mechanics shares a list of internet predictions it got wrong.
- Vint Cert creates a list of the “top moments” of the internet’s first 50 years.
- Gartner sees real-world applications for AI when predicting technology’s top 10 “strategic trends.”
- MIT and Harvard fund projects that use AI to improve journalism.
- Winners announced for Facebook’s 9th annual “Hacker Cup” programming contest.
Feature image via Pixabay.