X

SpaceX rockets fly with software you can find on your Android phone

Programmers detail the software that makes the Falcon rockets, Dragon capsules and Starlink satellites tick. And yes, they play Kerbal Space Program.

Stephen Shankland Former Principal Writer
Stephen Shankland worked at CNET from 1998 to 2024 and wrote about processors, digital photography, AI, quantum computing, computer science, materials science, supercomputers, drones, browsers, 3D printing, USB, and new computing technology in general. He has a soft spot in his heart for standards groups and I/O interfaces. His first big scoop was about radioactive cat poop.
Expertise Processors | Semiconductors | Web browsers | Quantum computing | Supercomputers | AI | 3D printing | Drones | Computer science | Physics | Programming | Materials science | USB | UWB | Android | Digital photography | Science Credentials
  • Shankland covered the tech industry for more than 25 years and was a science writer for five years before that. He has deep expertise in microprocessors, digital photography, computer hardware and software, internet standards, web technology, and more.
Stephen Shankland
4 min read
spacex-touch-screen

NASA astronauts Bob Behnken, left, and Doug Hurley familiarize themselves with touchscreens inside the SpaceX Crew Dragon spacecraft. 

SpaceX

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

See all photos

"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.

That means a web app written in HTML and JavaScript, just like millions of websites, is showing the astronauts what they need to see, and interpreting their taps and swipes. That's a departure from traditional aerospace programming methods using lower-level languages.

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.

Modern methods

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.

Watch this: SpaceX set to to take its first astronauts into space