Remix.run Logo
peteforde 2 days ago

I would love to better understand how a device launched the year before I was born could be so flexible in its configuration and operation. I can't update the code running on a microcontroller on my desk in front of me without it triggering a reboot.

When they talk about rerouting power and performing a "big bang" reconfiguration with a 23 hour lag on equipment that was underpowered when the 8088 came out... it kind of melts my brain.

Apparently it still has ten years worth of fuel left!

tavavex 2 days ago | parent | next [-]

NASA pioneered a lot of what underpins modern design of critical computer systems. Voyager's systems are impressively robust. As far as I know, they can patch it by directly sending up new assembly instructions that are written into its memory, and doing a warm reboot to get it to start executing new instructions without powering down anything. They had the foresight to make their software highly editable, while also having multiple redundancy and emergency systems. Despite this, I wonder how much pressure the people writing this software feel. Even with all the simulators and months of rigorous testing, sending up something that can (in the worst case) break the probe has to be terrifying.

tedd4u 2 days ago | parent | next [-]

Watch the documentary "It's Quieter in the Twilight" to find out how the people responsible for Voyager 1 & 2 feel about it.

https://www.imdb.com/title/tt17658964/

aag a day ago | parent [-]

I second your recommendation. I watched it last night, and loved it. It was beautiful to see the level of competence and devotion of the tiny group running the spacecraft.

peteforde 21 hours ago | parent [-]

Yep! If there was ever a solid recommendation for a movie to recommend to your dad...

sebazzz 2 days ago | parent | prev | next [-]

> Even with all the simulators and months of rigorous testing, sending up something that can (in the worst case) break the probe has to be terrifying.

I would guess that even that case is partially accounted for by a watchdog that is hardwired into the system.

sidewndr46 2 days ago | parent | prev [-]

As another commenter noted, NASA did not design Voyager. They are responsible for launch and operations.

ndiddy 2 days ago | parent | prev | next [-]

Here's a talk about how the Voyager team fixed the flight data computer on Voyager 1 when a memory chip went bad on it a few years ago. It goes over how the flight computer works and he walks through a few assembly routines. https://www.youtube.com/watch?v=YcUycQoz0zg

Some of the challenges they had to deal with while developing the fix:

- The only source code they had for the flight data software was an OCR'd Microsoft Word document (with typos) that was likely scanned from a hard copy assembler listing printout.

- The processor runs a custom instruction set developed by JPL for the Voyager mission. The documentation they had on the processor was incomplete.

- Everybody who had designed the flight software was dead.

- They had no assembler, no debugger, and no processor simulator. They had no testbed, the only two FDS processors were in space.

mek6800d2 a day ago | parent [-]

The 2025 YouTube video is "How We Diagnosed and Fixed the 2023 Voyager 1 Anomaly from 15 Billion Miles Away" by David Cummings of JPL.

There is a Vimeo video of the Voyager team reacting when data first began trickling in from Voyager 1 after the fix in April 2024. "Voyager 1 Team Reacts to Receiving Engineering Data From Spacecraft" (JPLraw channel): https://vimeo.com/939376171

Cummings is the one against the back wall who shoots his two arms up in the air in celebration. He and Armen Arslanian (in the blue shirt to his left, right in the image) developed the software fix.

The slides from Cummings' presentation can be downloaded as a PDF from the Flight Software Workshop Day 2 page, first entry: https://drive.google.com/drive/folders/1BXSBUgEJExsLSE-m585I...

Evidlo 2 days ago | parent | prev | next [-]

> microcontroller on my desk in front of me without it triggering a reboot

Most microcontrollers can update their own flash while running, either with a built-in bootloader or a user-programmed bootloader that takes up a little bit of the flash.

What makes you think that Voyager isn't "rebooted" though?

mananaysiempre 2 days ago | parent [-]

This kind of update is often kind of ass to do, though, because you may not be able to execute from said flash while you’re updating it.

So you copy a small write routine into RAM, copy a chunk of new data there too, jump to the routine, then it returns to your main bootloader in flash which receives the next chunk from a UART or whatever (because of course it doesn’t fit into RAM all at once), rinse and repeat. You aren’t exactly going to be serving realtime interrupts during this.

(So if you do need minimal downtime, you probably have dual external flash chips, or even just two microcontrollers given execute-from-external-flash would bump you up to fancy micros.)

estimator7292 2 days ago | parent | prev [-]

With sufficient motivation and effort, you could have a self-updating microcontroller. You could, if you really wanted to, write firmware just as robust, reliable, and flexible as the Voyager system.

It's just that in most cases, the amount of effort required is orders of magnitude higher than is really justifiable.