Voyager’s 15 Billion Mile Software Update

Alphabets Sounds Video

share us on:

In this lesson, we explore the remarkable journey of NASA’s Voyager space probes, which continue to operate on 50-year-old computers with only 70 kilobytes of memory. Despite facing challenges such as distorted data and aging thrusters, a dedicated team is developing software updates to maintain the probes’ functionality from 15 billion miles away, utilizing efficient coding techniques and a unique memory system. The lesson highlights the ingenuity required to keep these historic spacecraft operational and the legacy they represent in space exploration.

Voyager’s 15 Billion Mile Software Update

In 2015, NASA sought a software engineer with a unique skill set. The ideal candidate needed expertise in FORTRAN and Assembly, programming languages from the mid-20th century that many modern graduates might not know. This role was crucial for a small team working on the Voyager space probes. Amazingly, these probes still operate on their original 50-year-old computers, which have only 70 kilobytes of memory. Despite this limited capacity, these computers have successfully navigated the probes through our solar system, leading to groundbreaking discoveries.

Challenges with Voyager’s Computers

Voyager’s computers occasionally face issues. Recently, Voyager 1 began sending back distorted data about its orientation in space. Additionally, the thrusters, which help maintain the probe’s direction, showed signs of wear. Each time the thrusters fire, small amounts of hydrazine fuel accumulate in the pipes, potentially causing blockages. Currently, Voyager is using backup thrusters, and if these fail, it could mean the end for the probe. At 15 billion miles away, clearing these blockages is impossible. To address these issues, the team is developing a software update to be sent across the universe.

Understanding Voyager’s Computer Systems

Voyager is equipped with three main computers. The primary computer manages major instruments, monitors the spacecraft’s health and temperature, and controls the other two computers. The second computer is responsible for Voyager’s orientation, using reference points and firing thrusters to keep the antenna directed toward Earth. The third computer handles the storage and processing of scientific data and images collected by Voyager’s instruments.

Voyager doesn’t use a conventional operating system, as any programming language would consume too much memory. This isn’t the first time Voyager has received updates. For instance, at Neptune, where light levels were much dimmer than on Earth, engineers reprogrammed the camera for longer exposures. After leaving Neptune, NASA began shutting down non-essential instruments to conserve power, rewriting Voyager’s code to ensure its continued operation.

Updating Voyager from 15 Billion Miles Away

Updating such old hardware from 15 billion miles away is a complex task. Voyager’s software operates using plated wire memory, storing code in its most basic form—ones and zeros. This memory consists of a grid of wires and metal plates, where each intersection represents a bit of memory. By passing a current through a plate and a wire, a magnetic field is generated, indicating either a zero or a one. This design retains data even during power outages, allowing each bit to be updated.

With only 70 kilobytes of memory, engineers must be efficient with their code. Voyager uses pseudo code, which consists of shortcut commands for repetitive tasks, saving memory. An interpreter on the main computer reads the ones and zeros, activating the pseudo code to execute commands, enabling automation.

Humans can’t code directly in binary, so a more advanced language is needed for Voyager’s software. Initially, the software was developed in Assembly Language with some FORTRAN. Assembly is a straightforward language closer to machine language. Once finalized, the code is compiled into machine code and transmitted to Voyager via the Deep Space Network at 16 bits per second, taking nearly a day to reach the probe.

How Voyager’s Updates Work

Voyager’s computers are interrupt-driven, meaning the software follows a set list of instructions until interrupted. When an update is sent, it includes an interrupt signal prompting the main computer to halt its current tasks and focus on the update instructions. The new code is loaded into memory, flipping the bits to their new positions. The code is verified for accuracy before the main computer resumes normal operations.

Over the years, Voyager has received numerous updates and patches to enhance its functionality. In 1995, an update was implemented to restart certain components if they failed. In 2014, this code proved crucial in saving Voyager 1 during a hardware malfunction. In 2010, a single bit in Voyager’s memory flipped, causing a synchronization issue between the computers, resulting in delayed commands. A software update was dispatched to correct the faulty bit.

The Legacy of Voyager

These remarkable stories illustrate how the iconic Voyager probes have endured nearly 50 years in space. It’s astonishing that the physical components, transistors, and hardware onboard Voyager’s computers continue to function as intended after all this time.

Now, for the Primal Space giveaway: the winner of the previous giveaway is Yasmine. Congratulations! In the next video, we will be giving away a Primal Space-designed Voyager poster. To participate, simply sign up at the link below, like the video, and leave a comment about where you would send a Voyager 3 if it launched today. Thank you for watching, and I’ll see you in the next video!

  1. What are your thoughts on the longevity and continued functionality of the Voyager probes, given their age and the technology they use?
  2. How do you think the challenges faced by the Voyager team in updating the software from 15 billion miles away compare to modern software updates on Earth?
  3. Reflect on the significance of using outdated programming languages like FORTRAN and Assembly for the Voyager probes. What does this tell you about the evolution of technology?
  4. Considering the limited memory capacity of Voyager’s computers, how do you think engineers balance the need for efficiency with the complexity of the tasks the probes perform?
  5. What lessons can be learned from the Voyager mission about problem-solving and innovation in the face of technological constraints?
  6. In what ways do you think the Voyager mission has influenced or inspired current and future space exploration projects?
  7. How do you feel about the idea of sending updates to a spacecraft that is 15 billion miles away, and what does it reveal about human ingenuity and perseverance?
  8. Reflect on the legacy of the Voyager mission. What do you think it represents in terms of human achievement and exploration?
  1. Explore FORTRAN and Assembly Language

    Research and present a brief history of FORTRAN and Assembly Language, focusing on their significance in early computing. Create a simple program in each language to understand their syntax and functionality. Share your findings and code with the class to discuss the challenges and advantages of using these languages for space missions like Voyager.

  2. Simulate Voyager’s Memory Constraints

    Design a small-scale project that mimics Voyager’s memory limitations. Use only 70 kilobytes of memory to create a program that performs a specific task, such as data collection or image processing. Reflect on the difficulties faced and strategies used to optimize memory usage, then present your project to your peers.

  3. Analyze the Deep Space Network

    Investigate how the Deep Space Network communicates with distant spacecraft like Voyager. Create a visual presentation explaining the network’s components, signal transmission process, and challenges faced when sending updates across vast distances. Discuss how these factors influence the design and execution of software updates for space probes.

  4. Role-Play a Voyager Software Update

    In groups, simulate the process of developing and sending a software update to Voyager. Assign roles such as software engineer, mission control operator, and Voyager probe. Develop a step-by-step plan to address a hypothetical issue, considering memory constraints and communication delays. Present your plan and discuss potential risks and solutions with the class.

  5. Debate the Future of Space Exploration

    Engage in a debate about the future of space exploration and the role of technology like Voyager. Consider the challenges of maintaining and updating aging technology versus developing new missions. Discuss the potential benefits and drawbacks of launching a Voyager 3, and propose destinations and objectives for such a mission. Conclude with a class vote on the most compelling argument.

In 2015, NASA posted a job opening for a software engineer with a unique skill set. The candidate needed to be proficient in FORTRAN and Assembly, two programming languages from the 1940s and 1950s that many recent graduates may not be familiar with. The role involved joining a small team working on the Voyager space probes. Remarkably, both Voyager probes still operate on their original 50-year-old computers, which have only 70 kilobytes of memory. While this may seem minimal, it has been sufficient for navigating the probes through our solar system and making significant discoveries.

However, issues do arise with Voyager’s computers. Recently, Voyager 1 began sending back distorted telemetry data regarding its orientation in space. Additionally, the thrusters responsible for maintaining Voyager’s direction showed signs of wear. Each time the thrusters are activated, small amounts of hydrazine fuel accumulate in the pipes, leading to blockages over time. Voyager is currently using its backup thrusters, and if these were to fail, it would spell the end for the probe. At a distance of 15 billion miles, there is no way to clear the tubes, but to mitigate the buildup and address the telemetry issue, the small team overseeing Voyager started developing a software update to be transmitted across the universe.

Voyager is equipped with three main computers. The primary computer manages all major instruments, monitors the spacecraft’s health and temperature, and controls the other two computers. The second computer is responsible for Voyager’s orientation, seeking predetermined reference points and firing the thrusters to keep the antenna directed toward Earth. The third computer handles the storage and processing of all scientific data and images collected by Voyager’s instruments.

Voyager does not utilize a conventional operating system, as any programming language would consume too much memory. However, this is not the first time Voyager has undergone updates. At Neptune, where light levels were 900 times dimmer than on Earth, engineers had to reprogram the camera for longer exposures. After leaving Neptune, NASA began shutting down non-essential instruments to conserve power, as having code for inactive instruments was wasteful given the limited memory. Consequently, engineers completely rewrote Voyager’s code and performed a software update to ensure its continued operation.

But how does NASA update such old hardware from 15 billion miles away? To grasp the complexity of this task, it’s essential to understand how Voyager’s software functions. Each computer on Voyager employs plated wire memory, which stores the code in its most fundamental form—ones and zeros. This memory consists of a physical grid of wires and thin metal plates, where each intersection represents a single bit of memory. By passing a current through a plate and a specific wire, a magnetic field is generated, indicating either a zero or a one. This design was advantageous because it allowed data to be retained even during power outages, and each bit could be updated.

With only 70 kilobytes of memory available, engineers must be extremely efficient with their code. Alongside basic machine code, Voyager utilizes pseudo code, which consists of shortcut commands that can be triggered to perform repetitive tasks without consuming excessive memory. An interpreter on the main computer reads the ones and zeros, and upon encountering a predetermined code, it activates the pseudo code to execute a command, saving memory and enabling automation.

However, humans cannot code directly in binary, necessitating a more advanced language for writing Voyager’s software. Initially, the software was developed in Assembly Language with some FORTRAN. Assembly is a straightforward language that is more understandable for humans while being closer to machine language. Once the code is finalized, it is compiled into machine code and transmitted to Voyager via the Deep Space Network. The data transfer rate is 16 bits per second, taking nearly a full day to reach the probe.

Voyager’s computers are interrupt-driven, meaning the software follows a set list of instructions until interrupted. When an update is sent, it includes an interrupt signal that prompts the main computer to halt its current tasks and focus on the update instructions. The new code is then loaded into memory, flipping the bits to their new positions. The code is verified for accuracy before the main computer resumes normal operations.

Over the years, Voyager has received numerous updates and patches to enhance its functionality. In 1995, an update was implemented to restart certain components if they failed. In 2014, this code proved crucial in saving Voyager 1 when a hardware malfunction occurred. In 2010, a single bit in Voyager’s memory flipped, causing a synchronization issue between the computers, resulting in delayed commands. A software update was dispatched to correct the faulty bit.

These remarkable stories illustrate how the iconic Voyager probes have endured nearly 50 years in space. It is astonishing that the physical components, transistors, and hardware onboard Voyager’s computers continue to function as intended after all this time.

Now, for the Primal Space giveaway: the winner of the previous giveaway is Yasmine. Congratulations! In the next video, we will be giving away a Primal Space-designed Voyager poster. To participate, simply sign up at the link below, like the video, and leave a comment about where you would send a Voyager 3 if it launched today. Thank you for watching, and I’ll see you in the next video!

SoftwareA set of instructions, data, or programs used to operate computers and execute specific tasks. – The software development team is working on a new application that will improve data processing efficiency.

CodingThe process of writing instructions for a computer to perform specific tasks, often in a programming language. – Coding in Python has become increasingly popular due to its simplicity and versatility.

MemoryThe component of a computer that stores data and instructions temporarily or permanently. – Upgrading the computer’s memory can significantly enhance its performance when running multiple applications.

ComputersElectronic devices that process data and perform tasks according to a set of instructions. – Computers have revolutionized the way we conduct research and analyze large datasets.

ProgrammingThe act of creating software by writing code in various programming languages. – Programming assignments often require students to solve complex problems using algorithms.

AssemblyA low-level programming language that is closely related to a computer’s machine code instructions. – Learning assembly language can provide deeper insights into how software interacts with hardware.

FortranA high-level programming language used primarily for numerical and scientific computing. – Fortran remains a popular choice for developing applications in physics and engineering due to its computational efficiency.

UpdateThe process of making changes to software or data to improve functionality or fix issues. – It is crucial to regularly update your software to protect against security vulnerabilities.

DataInformation processed or stored by a computer, which can be in the form of text, numbers, images, or other formats. – Analyzing large sets of data can reveal trends and patterns that are not immediately obvious.

AutomationThe use of technology to perform tasks with minimal human intervention, often to increase efficiency. – Automation scripts can save time by handling repetitive tasks such as data entry and report generation.

All Video Lessons

Login your account

Please login your account to get started.

Don't have an account?

Register your account

Please sign up your account to get started.

Already have an account?