Apollo Comms Part 34: Trying every function of the Apollo command system

Apollo Comms Part 34: Trying every function of the Apollo command system

Show Video

Greeting Earthlings. If you follow the channel,  you know that we are resurrecting the Apollo   communications system, with original  spacecraft and NASA ground equipment. In the previous episode, we finally were able to  transmit a command from our original NASA Up-Data   Link test system, or UDL for short, over to the  spacecraft, and decoded it all the way through the   complicated chain of original electronic boxes  that were in the spacecraft: the transponder,   the premodulation processor, the central  timing equipment, and the Up-data Link decoder.

And that felt like a major achievement. However,  the result was admittedly somewhat underwhelming:   we made a multimeter beep on  the space side of the link. [Marc] All right, that's first  command 4601, that's abort relay one. Send... Oh, works!

[Eric] Works! [Marc] All right, we got it. So that was it. [Eric] Right there! [Marc] So, in this episode, we’ll give  the Up-Data Link the grand workout and   demonstration it deserves, sending  commands to flip relays and lights,   take control of the Central Timing Equipment,  and the exercise the most powerful capability   of them all, controlling of the Apollo Guidance  Computer remotely via its DSKY. In essence,   we’ll show you how you could have hacked the  spacecraft, if you had been so enclined and   well-equipped in 1969. I’m sure NASA will be glad  that we only figured this out 55 years too late... [Marc] So, we were looking at something fun that   we could connect our relays to. And a  panel of lights would be a good thing.

So, the idea is to light up one of the lights  that were controlled by the UDL in the actual   missions. There are two that I am aware of, the  abort request light, and the Crew Alert light. Apollo Crew Alert and Abort  Lights (with elevator music) The Crew Alert light was on the main  Caution and Warning panel. In this diagram,   you can verify that it is directly wired into  the relay K2 of the UDL. Interestingly enough,   the Crew Alert light was only controllable by the   ground. It also could only be reset by  the ground, and not by the astronauts.

The other light controlled by the ground via the  UDL, is the abort light. It was on subpanel 1B,   right in front of the commander, where the  emergency manual controls for boost, entry   and abort are also located. Looking at its wiring  in the schematics, you can see that the light is   wired both to the Abort A relay and the Abort B  relay in the UDL. The only difference is that the   Abort B relay is resettable by the crew, while the  Abort A relay is resettable only by the ground. You can actually double check that in the UDL  schematics. Here is the Abort A S-K1 relay,  

and it can be reset from the ground via this wire.  But it has no reset connection to the front panel.   The Abort B relay does have such a  connection, called reset override,   leading to the Up Telemetry Command Reset button,   and is pointed out in this side note that  says “crew cannot reset K-1 to K-5 relays”. Which are these relays over here. The side legend  tells us what they do. We already know that the   Abort A and the Crew Alert lights cannot  be reset by the crew. The ACE refers to the   Automated Checkout Equipment. The ACE was used to  talk to the Apollo Guidance Computer while on the  

ground. As we’ll see later, there was a separate  wire path for transmitting ones and zeroes,   so apparently you can block either of these. TRDC  stands for the Tape Recorder Data Conditioner.   This is one is even more arcane. The TRDC was  an electronic box in charge of retiming the  

data bits as they were replayed by the onboard  tape data recorder, to straighten them out   before transmission. Today it would be called  a clock and data recovery circuit. Apparently,   the ground could bypass that box and send the raw  un-retimed bits if the TRDC were to malfunction. There you go, you know everything. All right,  we rat-holed again, back to our abort light. The spacecraft operations manual tells  me that the abort light was used by the   ground to request a manual abort, but only  as a backup to voice communications. The  

commander would then have to initiate the  abort by rotating his translation controller   handle. This is indeed confirmed by the wiring,  which does nothing else than turn on the light. The actual abort signal was generated  manually by the handle rotation. There were of course automatic and triple  redundant abort circuits that needed no   astronaut intervention, but for relatively  few conditions. They are detailed here:  

too much pitch or yaw rates, too much  roll rates, or not enough thrust. That’s   it for the auto abort. For all the rest, the  ground would turn on the light via the UDL,   as we are about to reenact here, and the  astronauts would have to react to it.

We’d love to have a real Apollo  caution and warning panel to light up,   but we have the next best thing: a period  correct warped panel of roto-tellites,   from Marcel’s collection of course. These  indicators were used all over the place in   Apollo control rooms. The panel arrived way more  banged up than the auction pictures suggested,   so while Mike and Eric are wiring up the  UDL, I need to do a little unbending.

[Marc] This one was just bent so much,   I had to take out the rods and the  rods were bent at 30° in there. This is the last one, it's pretty good. And this one. All right.

Gee, hook how mangled that thing is. We just do it by eye. All right. Tada! Okay, so, this is why these are called  Roto-Tellites. You rotate them, and then   you can change the bulbs from the back, which is  now the front. So, no need to dismantle the thing. So, everyone has left, and I still  haven't finished my panel. At least,  

it's back together. There are some cables  that are mangled, deep inside here. Fortunately I have the extraction tool,  which sometimes works. There we go. Oh, yeah, I see the problem! It is attached, but it's been  partially cut. Okay. So that   explains it. It's probably part of the  big accident that bent the whole thing. All right, so let's see... So, this should be one. And then  two, three. It kind of makes sense.

We can hook it up to the updata  link, and see if we can light some. [Marc] Hey guys, you have  wired up a few more things? [Mike] We have, yeah. We've got a big light  panel that used to be round, and is now flat. [Marc] Oh, this one, yes.

We're going to turn relays... [Mike] Yep, so we'll flip the relay... [Marc] ...lights through the relays... [Mike] ...turn on the lights.

[Eric] We've only got two of them connected,  but you should still be able to see. [Marc] (laughter) I've been  trying to motivate Mike... [Eric] It's a lot of wiring! [Marc] ...and Eric to wire the 72 lights,  

but I had no success. The connectors  are so impossible. They are so dense. Anyhow it's, a lot of work for little reward. And I've been busy making tapes that could   potentially turn those on.  So I'm going to try that. So now, the question is, what is the correct  binary command to turn our lights on and off. We now have two lights, one connected to the  Abort A and one to the Abort B relay. I sort   of messed up, I wanted Abort A and Crew  Alert, but I did not give Mike and Eric   the correct relays. Anyhow, it will allow us to  demonstrate the difference between Abort A and B.

The relays in the UDL are of the fancy latching  kind. You can spy them at the bottom of the UDL.   It’s the kind that remembers its state, so  there are two coils per relay, a set coil,   and a reset coil. The coils are actuated  by the logic block below them. Fortunately,   there is a table on the side  that summarizes how it’s encoded. The first three bits are the vehicle address.  You could wire up your UDL to respond to  

one of 8 different vehicle addresses. The  command module was assigned to address 4,   and that’s how we configured our UDL  in the previous episodes. The next 3   bits are the system address. The system that  flips the relays is called the RTC system,  

and uses system addresses 5 and 6. RTC by the  way, stands for Real Time Command, and when you   overhear the Houston controllers referring to  sending RTC commands, it means they are sending   commands to flip relays via the UDL. Other  systems addresses were used for test commands,   controlling the AGC, and setting the central  timing equipment. We’ll exercise them later on. So, back to RTC commands. On system address 6,  bits 7 to 12 indicate which relay coil will be  

activated. These 6 bits form a two digit octal  number, which happens to be the number drawn   on the relay coils. In our case, we need to  tickle coils 00, 01, 06 and 07. You can see   that there are no coil numbers with a digit 8  or 9, this is indeed an octal numbering system. There are an additional 4 codes  for the system at address 5,   called the Salvo Reset codes. These  reset a whole bunch of relays at once.

Here is the list of all the relay  coil numbers next to their function,   essentially this is the Real Time Command  cheat sheet, an Apollo hackers’ dream. It   also sheds more light on what the Salvo  Reset commands do. The first salvo code   gets you back to a normal flight condition  (no alarms, TRDC in normal mode, ranging off,   reset the PCM telemetry settings), and the  second one resets the communication system.

For our first demo, our commands  are therefore going to be:  Turn on Abort A is 4601 (as in  vehicle 4, system 6, coil 01)  Turn off Abort A is 4600 (which  is the same, for coil 00)  Turn on Abort B is 4607, and Turn off Abort B is 4606. But we are not quite done yet, we need to  punch a command tape for our clunky UDL   transmitter. And it is not as simple  as punching the command numbers in,   oh no. The UDL tape reader does not use the ASCII  encoding that every one else used to punch their   8-bit tapes. Instead, it uses another code  that Master Ken cracked many episodes ago,   and has some embedded error checking features.  Here is the reversed engineered list from my  

notebook. For a 0, you have to type in an  8, a 1 is actually a 1 by pure accident,   a 2 is a star, and so on and so forth.  Many are special control characters. To add insult to injury, they also hijacked  character bit 7 and parity bit 8 as special   tape control bits. Plus you need to add  a three digit command number preamble,   which will be read and indicated to the left  of the current command, but not transmitted.  

And then you need a leader and sync command to  start. So, making tapes quickly gets complicated. I ended up with an incomprehensible file of  mostly special characters, which I then sent via   serial to my ASR-33 Teletype, which we repaired  some years ago - I knew it would come in handy   one day. And finally, out comes a punched  command tape, which I eventually got right. Okay, done. Hopefully this is a  good one, we made a few bad ones. Let's try to see if that works. Okay. 0 0 0, got the start. All right, that's  first command, 4601. That's Abort Relay 1.

4600 clears it. Relay one again. Clears it. 4607, that's Abort Relay 2.

4606, that's clearing that relay. Try again. Yeah, we got it! Let's try that.

Can you put the receive on  "up". (transmitted data sounds) Okay, I'm sending stuff, that's good. [Mike] We're seeing it on the scope. [Marc] Okay, so turn it back to normal. Now I'll... (tape noises) That should have turned it... Oh no, not  yet! I haven't turned the relay on yet.

If I do this, I will. No. No cigar? [Eric] Are we looking at the data valid? [Marc] Okay, well, let's keep going on. No? Neither? That should be the second relay. Am I selecting the right thing at least? Did you hear a relay click at all? [Eric] No.

[Marc] Do I have the bits  the right polarity. Yeah,   we did. Should I try... You know, I could  try my older tape, where it worked, right? Let me try another tape. Okay, zero.

Anything? Oh, sorry... [Eric] I heard a click. [Marc] You heard a click? [Eric] I heard a click.

[Marc] Okay, there should hear another  click here. You hear another click? [Mike] Yeah! [Eric] It's definitely clicking. [Marc] It's clicking. It's clicking,  but our lights are not indicating. Oh, did I give you the wrong pinout? [Eric] Yeah maybe that's it. [Marc] Yep, that's what what I did. I gave Eric  the wrong panel pins. So let's try this again,   with feeling, and the correct panel wiring.

[Marc] ... with feeling. So, that should  be Abort 1. I'm going to tape stop it,   and give you the command. See if it clicks. It did! All right! Then I keep going. And that's  going to be Clear Abort 1.

Sending it. [Mike] Yeah. [Marc] All right. We have  command of our spacecraft. And then, that should turn the  other one on. That's Abort 2. [Eric] That's Abort 1. [Marc] Oh, I have twice Abort 1? [Mike] Yeah.

[Marc] Yeah, I do have twice Abort 1. [Mike] Hey! [Eric] There is Abort 2! [Marc] Okay. Okay! (laughter) [Eric] Can you turn on Abort 2 again? [Marc] You want to do what? [Eric] The Command Reset switch. [Marc] Oh! [Mike] We can turn off Abort 2, but not Abort 1.

[Eric] That's correct! [Marc] Abort 2. [Eric] Yep. [Marc] You tell me, you can reset that one? [Eric] From the switch here, Command Reset. [Marc] It works! [Eric] It reset the relay! [Marc] Yeah! And Abort 1 you  cannot reset it, for some reason.

And, if we had the patience, we  could wire more lights. But instead,   since we don't have the  patience, we wired the CTE. Where's CTE? Over there. And that's this guy, over here, the one  that gives us the time in the mission. And, supposedly, we're supposed  to remote control it. So I've  

made a tape for that, we'll see if that works. Before we leave the subject of RTC commands,  let’s briefly scan the ones we’ve not already   talked about. You’ll quickly discover that  they all have to do with controlling the   data communication system: turning the  transmitter power amplifier on, resetting   the antenna configuration, turning ranging and  telemetry on, switching the telemetry bit rate,   and controlling the tape data recorder. These were  implemented as shadow switches to the astronaut’s  

manual switches on the control panel. The ground  controlled relays always have precedence over the   command panel switch positions, unless you flip  up the magic Command Reset button that we just   demonstrated, which would give back control to  the panel, by virtue of resetting the relays. In practice, the astronauts were rarely  bothered with setting ranging, telemetry,   and data bit rates manually, nor did  they have to manage the tape recorder   voice and data dumps. This was done from the  ground via RTCs, lightening the workload.

However, if you had to, you could  flip the Up Telemetry switch,   the same that we just flipped up to reset the  relays, to the down ”Off” position instead.   That would shut out the ground commands  entirely - in case you were worried that   the Soviet equivalent of CuriousMarc and  team was tinkering with your spacecraft. Last but not least, you probably noticed  that there are no RTC commands to actually   fly the spacecraft - this was done instead  via the Apollo Guidance Computer commands,   which we’ll demonstrate later. But before that, let’s play with  the Central Timing Equipment. The CTE produced reference frequencies, timing  pulses and second ticks used throughout the   spacecraft. It also provided the mission clock,  both in parallel and serial form, which was used   to timestamp every telemetry message sent  back to earth, and to sequence automatic   events in the SIM bay, the service module bay  with all the external scientific equipment. It  

is one of the rare Apollo piece of electronics,  besides the AGC, that used integrated circuits. We got it working back in episode 25, and  hooked it up to an HP Nixie instrument display,   for extra vintage style points. The ground could  control this clock remotely via the UDL system 4. It’s pretty straightforward: you use  Vehicle Address 4, System Address 4,   and then send a series of 6-bit binary numbers  for the seconds, minutes, hours and days. Once   received, they are sent out as that many pulses to  set the appropriate counters on the CTE, as if you   were setting a digital clock by repeatedly  pressing on the minutes or hours button.

But there is something very odd about  the bit structure of this command. Maybe you even spotted it already.  But I sure didn’t at first,   which is going to lead to interesting results. [Marc] So, here we go, that's my CTE messages  tape. And, what did I do? This was complicated.

One is supposed to reset, then I go to 4  days 3 hours 2 minutes 1 second. Then I go   to the landing time of Apollo 11. And then I  go back through the sequence a couple times. Took me a whole orbit to figure that one out.

So watch this. Zero zero, okay. So that should be  now 44 000000. Let's see if I... Yeah! [Mike] Aha! [Marc] It worked. Okay! Let's try the next one. So, this one should be 01 02 03 04,  if I got the right order of stuff.

01 06 02... So I got my encoding  wrong in the second bit. Okay. I'm getting there. I need another orbit. This one should be the time of landing. Oh no, I got it completely wrong. It's 4 day 6 hours 55 minutes and 40 seconds.   And I got I got 45 instead of 55.  Do I get 6? I got 3 instead of 6.

[Mike] Is this just an endianess then? [Marc] I think so. And it looks that they switched from big endian   to small endian as they move from  Vehicle Address / System Address. And then, this obviously means 4, so that's  the most significant bit over here. But here,  

the seconds has the most significant bit at the   other end. So there's some reversal  here, that I have to figure out. So I think I sort of figured it out. I  put my time in second, minute, hour, days,   which gives me that binary representation.  Now I have to reverse the endianess.

So 000001 becomes 100000. And  then I do that for every number. And then I have to split them in two  octal numbers. That gives me 40 20 60 10. And then, this, I have to encode  with my little tape cheat sheet.

And then I'll have to add 4 4, but with the  opposite endianness. So I think I have it. So the time of of landing is: FS FS 8 NAK BELL  # # 8 1 8. That's the landing of Apollo 11. Try again.

All right CTE with endianness changed. Okay, so that should reset the time. It does! Next one, so that should be 04 03 02 01.  Oh yes, I got it, that was the bit order! And then, somebody remembers the time of Apollo 11  landing? Days 4, hours 6, minute 55, 40 seconds. Day 4, hour 6, minute 55,  40 seconds! We've landed! [Mike] Nice! [Marc] Yeah, all right! Oh well it worked, but I slightly messed up  again, the GET time of the Apollo 11 landing,   per the contact light, is 6 days  6 hours 45 minutes and 40 seconds,   not 55 minutes and 40 seconds. But you get the  idea, and I don’t feel like making another tape. [Aldrin] ACA out of detent. Command Engine  Override off. Engine Arm off. 413 is in.

[Houston] We've had shut down. [Capcom] We copy you down Eagle! [Mike] (laughter) [Marc] But what a thing, they change endianness  in the middle of the message! (laughter) Okay, well. But that's pretty  cool. I can reset time in space. Okay, so are you guys busy trying to wire the AGC? [Mike] Mhm. [Eric] That is correct! [Marc] So, because, the next thing  we want to do is wire the AGC. [Eric] Wires! [Mike] Yep! [Marc] Because this whole system could  basically control the entire AGC. [Mike] Yeah, it gives you the  ability to press DSKY keys. So  

anything you can do through the  DSKY, you can do from the ground. [Marc] Yeah. And then, on the way  down, it could read anything of course. [Mike] Mhm. [Eric] Sort remote desktop for Apollo! [Mike] Yeah, yeah. So we saved the best for last. You could control  the Apollo Guidance Computer from the ground,   just like the astronauts did, by simply  sending DSKY key press codes. Since the  

AGC continuously transmitted what was  displayed on its DSKY screen via down   telemetry, Houston could operate the  computer remotely if they wanted to. For that, you used system address 3.  The data payload consisted of a 1 bit,   a 5 bit key code, its 5 bit complement, and  the 5 bit keycode repeated again. With an   endianness that is not quite specified, but  we’ll figure it out. The resulting 16 bit   data word was transmitted serially to the AGC  by pulses over two wires, one to input a 0,   and another one to input a 1. The AGC  was responsible to check for validity. Note that two switches, one on the command  panel, and one in the lower bay, had to be   set both to the Accept position, in order to  grant remote access to the AGC. Generally,  

that was not the case, and the ground  had to specifically request computer   access before they uploaded anything, and  access was turned off right afterwards. [Mike] It's 16 bits you need to send for every  key. Every key is going to be its own UDL message. [Marc] Okay.

[Mike] It'll be a leading 1... [Marc] Okay. [Mike] ...and then the 5 bit key code... [Marc] Okay. [Mike] ...and then the 5 bit key code inverted...

[Marc] Right. [Mike] ...and then the 5 bit  key code uninverted again. [Marc] Yes. And then, we have to  split it with the right endianness. [Mike] Right.

[Marc] It's good that we did  the clock before we do the AGC! [Mike] I think the clock is reversed from the AGC. [Marc] Good! (laughter) Sadly, we don’t have the real AGC with us anymore,  but Mike still has his gate exact FPGA replica. He   breadboarded two input stages for the zeroes  and ones lines, and we should be in business. [Marc] You brought your replica? [Mike] Yep. So I've got both the AGC and  the monitor programed into that FPGA. [Marc] Oh, it has shrunk? That's a new one? [Mike] Yeah.

[Marc] All right! It's a long time  we didn't have an AGC running. [Mike] Yeah! [Marc] At least here. I'm sure  you had it running at your place. [Mike] Well, it's been a while since I've  had the blinkenlights going at my place too! So what I'm going to do is, I'm going to set  up my wild card register to monitor address 45,   which is what the update is  going to get shifted into. So we can see what bits the AGC is getting.

[Marc] Okay. So, we can try first  a simple tape where we just select   the AGC subsystem, send it zeros for example? [Mike] Uh, yeah, we could do that.  It probably would be easier to... [Marc] ...just give it real  data? Give it one key code? [Mike] Yeah. If we if we put up  like Verb 01, Noun 01, whatever. When you transmit a verb key,  we would see the verb disappear. [Marc] Let me see if I get the hang  on how to make the tapes quickly.

Moments later... [Marc] So we're going to go for  the AGC control, the DSKY. And   that's my first stab at programming  it, so it might be full of errors.

Zero, okay. You're ready? This is reset. [Mike] Okay.

[Mike] You see anything? [Mike] No, but... [Marc] ...you don't expect to see anything. Verb? [Mike] No. Nothing.

[Marc] Do you see the data coming through? [Mike] No. [Marc] Did I miss something?  System... oh wait, wait, wait,   wait, wait. There's something wrong  with my... It didn't sync up correctly. [Mike] Oh, okay. Oh! It would help if we  turned the UDL on! (laughter) [Marc] Okay try again. But I was  having the wrong commands here. 0, 01, okay, so that should be reset I think.

[Mike] Okay. [Marc] Okay. And this will be verb. [Mike] Okay. Yes! [Marc] Okay. And this will be 3.

[Mike] Yep. [Marc] And this will be 5. [Mike] Mhm. [Marc] It's working? [Mike] It's working! [Marc] This will be enter.

[Mike] Yeah, it's doing the light test! [Marc] Oh! Wow. [Mike] Nice! [Marc] Excellent! So do I  need to wait, or I can do... [Mike] It's done. [Marc] Okay. So then I do, I think  I have a reset. Then I have verb. [Mike] That did not take.

[Marc] Oh yeah, I have an  error. I am wrong over here. [Mike] Yeah, you got stop bit error. [Marc] So I am missing a bit somewhere.  Let me try to replay the tape. Six, seven. Okay, I have a problem at  seven. Okay, let me fix that. Soon after...

Okay, so, we start again. I think  I found a mistake in my program. So, here we go. Okay, you are clear on your side? [Mike] Yep! [Marc] Okay, so, reset, V, 3, 5, enter.

[Mike] Yep, you got the light test going. [Marc] Excellent. Do I need to wait for it? [Mike] It's done.

[Marc] Reset. Now I'm am good. V 3 7 enter 0 0 enter. [Mike] Perfect. [Marc] And then reset. [Mike] Yes, you are on P00.

[Marc] Wow! That's pretty good! [Mike] Yeah! [Marc] I think I can run it all in  one fell swoop, see what happens. I'm just going to blast it. Okay guys, witness that awesome  achievement of computing. (tape noises) Okay, there you go.

[Mike] Yeah that's fine [Marc] 3 7 enter 0 0... P00! [Ken] You took a lamp test! [Eric] Not bad! [Ken] Now we just need a real  AGC to do this, and a real DSKY. [Marc] That's advanced computing! But we we can  do anything we want with the DSKY, basically. [Mike] Mhm! [Marc] And indeed, NASA used the DSKY uplink  capability extensively during the real missions.   Here is a list of all the uploads  from the Apollo 15 flight. Granted,   there are a few for the Instrument Unit,  but most are for the Command Module or the   LM computer. They included navigation updates,  burn loads, time syncs, and landing site updates.

And, if you are as curious as I  am, you’re probably left wondering,   how did they do this in a real mission? Did they  actually type into the DSKY from their consoles?   You sure wouldn’t want to punch a paper tape  to send a message to the spacecraft. Or would   you? And how did they get these commands  from Houston to the remote tracking sites,   and then to the spacecraft itself? Doing this with  1960’s technology was a fascinating tour de force,   and merits a video of itself. Hopefully  coming up in a future episode. See you then!

2024-10-12 21:44

Show Video

Other news