The software packages SpaceX uses inside its Falcon rockets, Dragon capsules and Starlink satellites are close cousins to programs that may be on your PC or phone.
NASA astronauts Bob Behnken and Doug Hurley used the foundation of Google’s Chrome browser — the most widely used browser in the world — every time they tapped the touchscreens that controlled the Crew Dragon capsule as it flew to the International Space Station on the last two days of May. And each SpaceX rocket and satellite uses a variation of the Linux operating system that powers each of the world’s billions of Android phones.
In a Reddit AMA that took place as Hurley and Behnken help out on the space station, SpaceX programmers revealed how Elon Musk’s company has worked to modernize its part of the space industry, a field that still relies on technology dating back decades. Software is less visible than some of the company’s imagination-grabbing hardware, like booster rockets that return to Earth and land themselves. But it’s every bit as important, because it controls all aspects of space flight. For example, software runs the SpaceX emergency abort sequence that lofts the Crew Dragon capsule away in the event a Falcon rocket explodes.
Crew Dragon’s Chromium interface
SpaceX uses Chromium, Google’s open-source foundation for the Chrome web browser, for the touchscreen user interface on the Crew Dragon, said Sofian Hnaide, a developer who worked on the Crew Dragon display technology used in the Demo-2 launch that carried the two astronauts to the space station. SpaceX began the effort to demonstrate its design ideas to NASA, but SpaceX stuck with it.
Scenes of SpaceX launching NASA astronauts into orbit, moment by moment
“We liked all the modern features that comes with browsers out of the box,” Hnaide said during the AMA, adding that Chromium gave SpaceX access to lots of programmers already skilled with the technology.
Touchscreens exemplify SpaceX’s modernized computing approach, but the Dragon capsule also has more traditional hardware buttons for critical actions like responding to a cabin fire, said Wendy Shimata, who manages the Dragon software team.
Linux inside Starlink
The Chromium-based interface connects to vehicle control software written in the C++ language and running on the open-source Linux operating system. SpaceX maintains its own Linux variant, said Josh Sulkin, leader of software design for SpaceX’s Crew Dragon capsule, but it’s a close cousin to the version running inside every Android phone.
SpaceX modifies Linux to support the company’s own hardware. It also enables real-time Linux options, which helps ensure the software responds to input reliably and quickly.
For Starlink, SpaceX’s growing network of satellites to deliver internet access to computers on Earth, “each launch of 60 satellites contains more than 4,000 Linux computers,” Sulkin said. Most of those govern tiny computers called microcontrollers with narrow but often important responsibilities.
“The constellation has more than 30,000 Linux nodes (and more than 6,000 microcontrollers) in space right now,” he said, referring to a computing system that’s part of a larger group working in parallel.
SpaceX incorporates not just modern software, but also modern software development methods like frequent updates.
SpaceX updates its Starlink software weekly, said Matt Monson, who leads Starlink software work and previously worked on the company’s Dragon. “By the time we launch a batch of satellites, they’re usually on a build that already [is] older than what’s on the rest of the constellation,” he said. “On this kind of project, pace of innovation is everything.”
SpaceX also held a week-long hackathon with astronauts Behnken and Hurley, letting them try the software during the day, then rebuilding it each night to incorporate their feedback for the next day’s tests.
SpaceX also uses A/B testing, which lets the company test changes on a subset of satellites, he said. It’s a method widely used in more conventional programming, for example to gauge whether a website loads faster.
Updates can be critical. “We’ve had many instances where a satellite on orbit had a failure we’d never even conceived of before, but was able to keep itself safe long enough for us to debug it, figure out a fix or a workaround, and push up a software update,” Monson said.
That isn’t to say software is fluid. The Crew Dragon software was locked down months before launch.
SpaceX computer security
Modern software means modern software problems, like security. SpaceX uses several security methods to keep its spacecraft, systems and data safe, said Jeff Dexter, who runs SpaceX’s flight software and cybersecurity programs.
For example, SpaceX uses end-to-end encryption to protect data sent to and from Starlink satellites from interception, and all hardware runs software signed by SpaceX to help block outside software, he said. It also runs automated tests to hunt for problems in software.
“We have a dedicated team that identifies how our vehicles and satellites could be hacked so we can eliminate or prohibit these sorts of threats when we’re building our vehicles,” Dexter said.
Even what SpaceX programmers do for fun sounds serious. One Redditor asked if they play Kerbal Space Program, a spaceflight simulator game good for those who enjoy orbital mechanics.
“Of course we play KSP,” Hnaide said.