NASA’s Martian helicopter runs Linux
Feb 22, 2021 — by Eric Brown 19,989 viewsThe semi-autonomous Ingenuity drone copter that will launch soon from NASA’s Perseverance rover runs open source Linux on a Snapdragon 801 along with components from Sparkfun.
Like other NASA rovers, the Perseverance rover that successfully landed last week on Mars’ Jezero Crater runs on Wind River’s VxWorks RTOS. Yet tucked underneath the SUV-sized rover is an autonomous mini-helicopter called Ingenuity that runs Linux. The debut of Linux on Mars was revealed on Feb. 17 by Tim Canham, Mars Helicopter Operations Lead at NASA’s Jet Propulsion Laboratory (JPL) in an interview with IEEE Spectrum.


Illustration of Ingenuity sitting next to Perseverence (left) and Ingenuity in the lab
(Source: NASA via IEEE Spectrum)
(click images to enlarge)
If successful, Ingenuity will be the first craft to fly in the atmosphere of Mars or any other extra-terrestrial planet. Linux has already made it to Martian orbit in the form of some Gumstix Overo modules controlling a camera that hitched a ride aboard a pair of proof-of-concept MarCO CubeSat satellites. The CubeSat cameras confirmed the successful landing of NASA’s Mars Insight lander in 2018.
Ingenuity is another proof-of-concept experiment, in this case for flying on Mars. It is not part of Perseverance’s primary mission, which is to search for signs of life. Yet, if the drone helicopter happens to capture an image of a Martian waving up at it when it makes its test flights in the coming weeks, all glory goes to Linux.
— ADVERTISEMENT —
The dual-propped, 1.8 kg mini-copter runs an open source F Prime Linux distribution developed by JPL that was designed primarily for CubeSats along with a more customized flight software framework that runs on top of it. Ingenuity’s hardware components will be detailed so developers can build their own similar craft.


Ingenuity in flight animation (left) and closeup of laser altimeter and VGA navigation camera
(Source: NASA via IEEE Spectrum)
(click images to enlarge)
The “F” reference implementation is designed to run on a Broadcom SoC on a Raspberry Pi, but the Ingenuity instead uses Qualcomm’s Snapdragon 801, which has four Krait cores similar to Cortex-A15. It is unclear if JPL is also using Qualcomm’s Snapdragon 801 based Snapdragon Flight reference platform. Designed for Unmanned Aerial Vehicles (UAVs) such as Ingenuity, Snapdragon Flight includes features such as a DSP for real-time flight control and VGA camera support.
The Snapdragon 801 can clock to 2.2GHz which is far more powerful than the processors on Perseverence. The Ingenuity puts that processing muscle to work on its guidance loops that run at 500Hz in order to maintain control in the low-density atmosphere. The extra processing power is also applied to the frame-to-frame image capture.
Ingenuity is not fully autonomous but follows a preconfigured flight plan based on existing imaging of terrain features. The Linux stack running on the Snapdragon captures and analyzes images from the craft’s downward-pointing VGA camera for navigation.
The system tracks features “from frame to frame at 30 Hz,” Canham told IEEE Spectrum. However, if a wind gust knocks it off course, the craft can correct its flight path autonomously, says Canham.
Ingenuity is equipped with some hardened, radiation resistance avionics components, but much of the design is commercial grade COTS. In fact, some parts, such as the laser altimeter, were ordered from SparkFun. Other components include a cellphone-grade IMU, an inclinometer, and a 13-megapixel color camera.
Ingenuity will attempt a series of 90 second flights within a 30-day period. Just getting off the ground will be a major accomplishment given that the atmosphere that is only 1 percent of the density of Earth’s.
500 hz is quite fast for an air vehicle control system. That has to include receiving data from all the sensors over modest interfaces, calculating the flight control algorithms to and updating control surface positions and thrust, etc. A lot of fly by wire aircraft have 29 to 50 millisecond control loop cycles.
Good job it isn’t running Windows, it would take 3 minutes to start up, and crash after 10 minutes, after freezing 4 times, and doing 31 updates ??
We are waiting for lift up
Nasa should at least give some pr credit to kurl tecnologies
So exciting , good luck & keep up the great work @NASA and @JPL.
I read about this new NASA Mars project in another publication recently, but alas several commenters to the article lamented NASA no deploying Microsoft base technologies instead, and had impression that such move meant that NASA was skimping on best quality of technology and therefore falling in credible value.
Sad that large commercial, proprietary technology behemoths ar seen as the only solution vendors for significant NASA or any US government technology/engineering ventures.