The actual news release has a bit more information.
The team discovered that a single chip responsible for storing a portion of the FDS memory — including some of the FDS computer’s software code — isn’t working. The loss of that code rendered the science and engineering data unusable. Unable to repair the chip, the team decided to place the affected code elsewhere in the FDS memory. But no single location is large enough to hold the section of code in its entirety.
So they devised a plan to divide the affected code into sections and store those sections in different places in the FDS. To make this plan work, they also needed to adjust those code sections to ensure, for example, that they all still function as a whole. Any references to the location of that code in other parts of the FDS memory needed to be updated as well.
That’s incredible. It also reminds me of the episode of Star Trek Deep Space 9 where they need to find space to store a bunch of people’s transporter patterns, so they just dump them into the stations computer, replacing everything that used to be there lol
It interesting that the memory is so discrete that it can be reprogrammed when a single ROM fails. And it’s really neat that they made the whole thing accessible to a radio controlled boot loader. The planning that went into building and maintaining Voyager is really incredible.
I wonder if we could still build one as robust these days?
Im guessing it could still listen just not talk back
Edit read the article
Although the radio signal from the spacecraft had never ceased its connection to ground control operators on Earth during the computer problem, that signal had not carried any usable data since
I know that this is supposed to be a joke, and I do find it funny, but I also find it sad that it carries a large dose of truth. C is such a “low-level” high-level language that it makes you deal directly with memory allocation and management as well as pointer arithmetic to advance addresses in the stack, which in my opinion is very important for programmers to gain an understanding of the actual hardware and architecture their programs are running on, because I feel that many don’t have that understanding. Should Rust replace C in many applications, especially low-level, I fear that we will ultimately end up with worse code because of that. (BTW I know that Voyager’s program is not written in C, this is just purely about your statement on Rust.)
I was hoping they would say in this article what they did to fix it!
The actual news release has a bit more information.
Source: https://www.jpl.nasa.gov/news/nasas-voyager-1-resumes-sending-engineering-updates-to-earth
That’s incredible. It also reminds me of the episode of Star Trek Deep Space 9 where they need to find space to store a bunch of people’s transporter patterns, so they just dump them into the stations computer, replacing everything that used to be there lol
NASA engineers, man.
It interesting that the memory is so discrete that it can be reprogrammed when a single ROM fails. And it’s really neat that they made the whole thing accessible to a radio controlled boot loader. The planning that went into building and maintaining Voyager is really incredible.
I wonder if we could still build one as robust these days?
Wait how did they do all that WITHOUT contact?
The problem was that Voyager sent junk data back to us due to a memory fault. It was still responsive to receive updates from Earth and to pings.
Pinging Voyager 1 takes about 2 days, so testing updates is naturally quite slow.
Not only round trip time, the hardware only supports bandwidth of 160bps at this range. Down from the 21.6kbps at launch.
Im guessing it could still listen just not talk back
Edit read the article
This Satelite must offer option to install software updates over the air, so they modified software and slowly uploaded it to the satelite.
rust programmers couldn’t imagine the memory hacks smh
I know that this is supposed to be a joke, and I do find it funny, but I also find it sad that it carries a large dose of truth. C is such a “low-level” high-level language that it makes you deal directly with memory allocation and management as well as pointer arithmetic to advance addresses in the stack, which in my opinion is very important for programmers to gain an understanding of the actual hardware and architecture their programs are running on, because I feel that many don’t have that understanding. Should Rust replace C in many applications, especially low-level, I fear that we will ultimately end up with worse code because of that. (BTW I know that Voyager’s program is not written in C, this is just purely about your statement on Rust.)
C will never fully go away.
Constrained environments will always remain in C.
But RUST offers the best trade off today. It is way better than C++.
C IMO is not comparable to RUST.
Can we appreciate how they can basically change software of this 45y/o satelite over the air? Original designers thought everything through
They just kept wiggling the coat hanger until the signal cleared up
It was much more complicated than that.
They also had to wrap half a roll of tin foil around the antennas.