SpaceX Software: Not So Different From Everyday Apps
At Blue Label Labs, we haven’t had the pleasure of sending any of our products to space, at least just yet – though the products we build cater to Earthlings, there is something to be said about the SpaceX software. The fun part is that most of the software and components you find on SpaceX equipment are not so different from common smart devices.
Believe it or not, the smartphone you use every day is essentially more powerful when stacked against any single component of the SpaceX ship that propels and navigates the vessel through space. Because of this, there are some useful lessons to learn from various elements of the SpaceX program.
Two business lessons from SpaceX
Before we dive into some facts about SpaceX software, take a moment to watch the most recent launch of the Falcon 9 rocket carrying the Dragon spacecraft if you haven’t done so already.
Outside of enthusiasts, outer space is the last thing on the mind of most business people. From a bird’s eye view, it would seem there is little, if any, intersection with companies in the space travel business when compared to every industry on the face of the planet. However, this isn’t quite the case as there are a few notable common denominators with other businesses.
Times have changed since the 60s when teams of mathematicians using mostly raw brainpower manually performed calculations to compute everything from launching a rocket to making a lunar landing. Not surprisingly, space travel has followed a trajectory taken by many other industries meaning it no longer requires teams of people crunch numbers as this is now handled by interwoven software that makes escaping Earth’s atmosphere possible.
Today, these calculations are performed by integrated devices installed throughout the vessel. Interestingly, most components carrying out computing functions are relatively simple when compared to many of the sophisticated devices we use daily. To save on costs, SpaceX software runs by using common programming techniques and frameworks on top of modestly powered hardware. To be brief, this saves money and reduces the number of errors that can occur from an overly complex setup.
Perhaps the best way to illustrate this point is with the “The Cake Server” video you can watch here:
Brilliant, no doubt. But it’s undoubtedly much easier to simply slice off a piece of cake yourself than to build something inspired from an episode of the Roadrunner versus Coyote.
Simplicity reduces the chances of disaster and lowers costs at the same time, the latter of which was a major factor in getting the ball rolling with SpaceX. It’s also worth mentioning that Elon Musk originally was offered an operation rocket at the cost of $8 million which he declined, knowing he could build something cheaper.
The key takeaway here is that even those vested in space travel are bound to common business principles: keep it simple and find the least expensive way to do it.
A rundown of SpaceX software and hardware
The SpaceX Falcon 9 and Dragon vessel (i.e. the rocket and ship portion, respectively) are controlled by a series of connected components that are installed through the ship which connects back to a central “stack” of systems. You can think of it as a relatively modern car equipped with sensors on all major mechanical and electrical systems.
Like monitoring systems for tire pressure, engine integrity, emissions, and so on, sensors running on 18 different MCUs and MPUs (tiny, dedicated computers) send data to a central stack running three different instances of Linux – as a side note, Linux platforms are what we (and many others use) to power many of the apps and websites we build. Each instance of Linux is powered by a dual-core processor where the system runs each core in a redundant setup.
To be brief, the hardware on the ship sends data to a central flight system that runs calculation and crosschecks the output against the second core of the system which is then verified against the output of the other machines. The reason for this is because radiation in space can cause “bit flipping” where values can switch from 1 to 0 (or vice versa) which changes the values of a calculation. The redundant setup allows bad output to be tossed out in lieu of running the wrong values through a precision system that could cause any number of issues with the operation of the spacecraft.
After all, one little slip up while in the void of space could lead to dire consequences.
These sensors capture and send data for a myriad of conditions like heat, positioning, and velocity (to name a few) which are processed by the aforementioned central systems that mostly uses an application written in C++ running on top of Linux distros which use Chromium web apps to view and interact with components distributed around the ship.
They also use an application running on top of Windows called LabVIEW that links the data compiled through the various Chromium apps with the ground software control team. Chromium being the open-source version of Chrome, allows the developers to tailor the platform to their liking which is ideal for creating a highly specific running environment for web apps. This app consolidates data collected from the central flight system and displays graphical output on consoles for connected teams.
The SpaceX team also uses a few other open-source systems to collect and transmit data from around the vessels such as:
- Das U-boot. This is used as a universal boot loader for the embedded systems running on the MCUs and MPUs throughout the ship. Sometimes devices will enter a stage of “near failure” where bit flipping occurs (i.e. values running in memory switch from 1s to 0s and vice versa) because of the harsh conditions in space so this system enables the devices to boot back into an operational state after shutdown with minimal intervention.
- Buildroot. This tool enables the development team to properly prepare embedded images that run on controllers around the ship. By creating a uniform installation style, this ensures the systems “fit” the embedded system correctly. This helps ensure that the Das U-boot configuration works as intended as well.
- MUSL. Because the primary coding for most of the ship’s operations is in C (or some derivative) this open-source library allows the software to run on Linux. This gives the various programs running at different areas on the ship the dependencies required to run properly.
While these probably don’t sound like common apps, you may be surprised to know that they’re likely in use all around you. A good example is high-end security systems – everything from cameras to entry systems often use small, embedded systems that are specialized in running devices in tandem wherever they may be installed. It’s also fairly common to see these kinds of systems in use in advanced manufacturing – for example, something like a robotic arm may have a few MCUs running at different points of the device to handle operations like precision movement and networking with other systems.
Finally, everything comes together thanks to what one engineer refers to as a “super sexy REST API” which exchanges information between systems in real-time. Data is exchanged between the multitude of components installed throughout the ship using an agnostic system to transfer information regardless of the language. Much like cloud-enabled apps of today, REST and RESTful APIs are like central nervous system, acting as the main interface to securely move data between systems.
And that is how SpaceX software accomplishes space travel in this day and age.
Blue Label Labs can make your software “take flight”
We love stories about brilliant simplicity that produces extraordinary results as we build disruptive software for our clients in the same manner. Get in touch with us to learn how we can get your idea for an app off the ground and into digital marketplaces.