Skip to main content

Disassembling HP-97 program cards

Scan of the cover image for the Programming section of the HP-97 users manual In my first post about the HP-97 I started restoring the hardware of the device. In my second post I started reading the cards. In this post, I make sense of those cards, and ultimately write a "disassembler" for them. I have disassembler in quotes here, because it's not a true disassembly. The contents of the program cards aren't exactly machine code, and the instructions as you enter them isn't exactly assembly. It is, however, the closest word to what I'm doing that you might already be familiar with.

Checking off Checking Checksums

I left the last post unable to correctly calculate the checksums on the cards. I shared that post with Teenix, and he added another section to his notes document. Embarrassingly, the problem was staring me straight in the face. If we recall the table I shared:

n0 n1 n2 n3 n4 n5 n6 Notes
2 2 2 0 0 0 4 $1F high
b 0 0 9 f 8 5 $1F low
0 3 8 3 9 b 8 $1E high
5 1 4 e 0 0 0 $1E low
5 3 e 0 8 f 8 $1D high
0 0 0 0 0 0 0 $1D low
. . . . . . . skipped
0 0 0 0 0 0 0 $10 low
17 9 1c 1a 20 22 19 computed checksum
7 9 c a 0 2 9 mod 16
7 a c b 1 4 b card checksum
0 1 0 1 1 2 2 abs error

Notice that the error on nibble 1 (n1) is exactly equal to n0/16? The portion that would be truncated is actually carried!! The error of n6 is equal to what would carry from n5. Nibble 5 is missing n4. So on, and so forth.

With that sorted, I was able to correctly verify the checksum on all 46 captured cards.

Making sense of the stored instructions

The next struggle was figuring out exactly how the instructions are stored on the magnetic cards. In this case, I spent quite a bit of time going down the rabbit hole of 6-bit instruction words. This was not for no reason, as the users manual, service manual, and the HP Journal article all discuss the 6-bit words. I simply couldn't get the math to work out; no matter how you try, you can't pack 6-bit words into the 56-bit registers in a clean way! They simply don't divide! Ultimately the epiphany came when I made the modification to the calculator that I threatened in the previous article.

Hacking the HP-97 CRC chip

I tack-soldered small wires onto the CRC chip for each of the signals that go to the card reader. Even though the motor still didn't work, I could use these signals to learn a lot more about what's happening. By entering a program into the calculator, then trying to write it to a card, I could see the impact of adding single instructions. It became clear that each instruction added exactly one byte to the card.

Then, I was able to derive more value from the thread in the classic notes document relating to how the 56-bit registers in the calculator's memory are written to the card. The program memory sits in the middle of a 64-word memory bank, flanked by the primary and secondary register files. Each of these are organized into 16-word pages. The register files contain registers 0-9, A-E, and an indirect register I, for a total of 16. And, the program memory goes from memory address 0x10 to 0x2F. Interestingly, instruction zero (first) is at 0x2F, and the program grows "downward".

With this information, it was clear that instructions are simply 1-byte wide, and that 7 of them are packed within a single 56-bit register, and a register is stored as two 28-bit records on the card. Any unused instructions are filled with 0x00, which is a Run/Stop or R/S instruction. You can think of those as No-ops.

Once I figured that out, I started looking for some reference for all the instruction OpCodes, and what instruction they mapped to. I initially started entering simple programs into the calculator, printing them out, saving them to a card (virtually) and writing the opcode numbers in the margin of the tape.

Scan of HP program tape with notes

Eventually, while playing around with the Stat-Pac that I scanned, and the version I downloaded from Teenix's website (they were similar, but enigmatically different) I realized that I could just rely on the emulator's depiction of the program; the numbers matched. Essentially, I loaded a few cards into the emulator and compared the register contents to the program steps that the emulator displayed. Clearly there was some notion of this mapping in the emulator, but I don't believe it's open source.

HP97 emulator showing the same program

Anyway, I spent a couple hours loading programs and adding instructions that I hadn't figured out yet. Eventually, I was left with quite a few opcodes that didn't have instructions. I certainly didn't expect that 100% of the available opcodes would be valid, but I was sure I was missing some. In part, because my disassembler crashes when it hits an unknown opcode, and there were a few in my stack of cards. Then, I noticed in Appendix E that HP had helpfully listed every possible instruction, what it prints out, and what keys must be pressed to achieve it. I was able to enter the remainder of those into the emulator to get the code for them.

Long story short, I now have a complete notion (that I think is accurate) of all the HP-97 opcodes, what they mean, how they'll print, and what keycodes are necessary to create them in my open source HP-97 program card disassembler.

Ultimately, there are something like 7 opcodes that seem not to be associated with a published instruction. I'm dying of curiosity for what'll happen if I write them to a card! Likely, I'll just get an error, but it'll be fun to see if anything else happens. This must be what fuzzers and crackers feel like all. the. time.

Reading and writing HP-97 emulator card files (hpp format)

It should be clear that I found Teenix's emulator to be highly valuable. And, it was clear that I'd want to be able to directly load my scanned cards into it. That necessitated writing a serde (seralizer/deserializer) for the format. While the classics notes document now has a description of the file format, the emulator is extremely fussy, and it won't accept cards that aren't exactly the same as the ones he produces. Everything down to the precise line terminations for each line must match exactly.

For example, the first two lines: NeWe (magic number) and file size have only carriage returns (no, not linefeeds, like unix endings. just carriage returns). The rest of the lines must be carriage return/linefeed combos (windows line endings). And, the end of the file must have a carriage return and linefeed. Once I learned those tricks, his document is accurate.

Having that out of the way allows me to take a real life Stat-Pac card (or any, of course), load it into my HP-97, capture the output, and run it in the emulator. That's extremely cool!!

Disassembler output examples

Just for fun, here's the command-line output of the program, loading that same area of a circle program:

Processing 01_AreaOfCircle:
000 *LBLA     21 11
001    X²        53
002    Pi     16-24
003     ×       -35
004   RTN        24
005   R/S        51

I even tried to get the printing of the lines just right. There was only one frustration around that, and that was the inverse trigonometric operators. The HP-97's printer has a special character set that includes a superscript -1, which is a single-width character. I simply couldn't figure out a way to achieve that with unicode. So, I had to cheat, and let them take up the column that's normally reserved to have an * to let the labels stand out more. For example, from the diagnostics card:

...
032  ISZi  16 26 45
...
041 *LBL2     21 02
042     2        02
043     5        05
044  STOI     35 46
045   SIN        41
046 SIN⁻¹     16 41
047  GSB3     23 03
048   COS        42
049 COS⁻¹     16 42
050  GSB3     23 03
051   TAN        43
052 TAN⁻‍¹     16 43
053  GSB3     23 03
054    →P        34
055    →R        44
056  GSB3     23 03
057   SIN        41
058  →HMS     16 35
059  HMS→     16 36
060 SIN⁻¹     16 41
...

Next steps...

From now, the next steps are more nebulous. I'm still hoping my lead on new sense amplifier and Rom-0 chips comes through so I can repair my device. If that doesn't happen, though, Teenix is still working on a replacement CPU board. I'll certainly buy one of those regardless of whether I "need" it. Also, I'm strongly considering designing a replacement for the card reader board that's based around a mixed-signal microcontroller. I think there are probably devices that had good analog comparators and motor drivers. I think 2 comparators and a motor driver would be all that's needed besides some basic programmability. This, of course, would be a lot more time consuming to design. At a minimum, it's fun to think about making a copy of the PCB that's mechanically compatible with the existing PCB that would let me have a play with loading and reading cards outside of the calculator.

Stay tuned!

Reading program cards on the HP-97

HP65 Card reader image

As I mentioned in my last post, the card reader on my HP-97 isn't working. I was able to power the motor directly, bypassing the bad Sense Amp chip, but the calculator still always went into an error state. With a mind to get to the bottom of the problem, and a hope to preserve the contents of the "Stat-Pac" that was included with my calculator, I instrumented the connection between the Sense Amplifier and the CRC (Card Reader Controller).

Capturing Card data

Instrumenting the CRC

Essentially, I connected the motor to my lab power supply, and set it for 2.5 volts. Armed the Saleae, triggering it off of the change of state on one of the read heads, and run a card through. I scanned both sides of the roughly 25 cards in the Stat-Pac. Then I saved each of these traces in both Saleae capture files, and CSVs.

Saleae capturing CRC data

This ended up taking about 30 minutes to complete, but I ended up making more work for myself. I should have split each file into a side 1 and side 2 CSV file while I was doing the work to begin with. A quirk about how the data is encoded on the card makes it hard to uniformly process the files when they are run through the reader one-after-another.

Processing low-level signaling

To begin, I split the first card into two separate CSV files, one for each side. Then I began writing a quick rust program to process the transitions (output of Saleae) into bits, then nibbles, then words, and finally attempt to check it against the checksum on the card.

Later, I decided that I should bite bullet and split all the traces up into their side a and b. This took another 30 minutes of mindless clicking, but I think it was well worth it. I discovered that two scans had missing bits, likely due to missed phase inversions. It's unclear whether these are real issues on the card, or if they are spurious.

Image from the HP Journal regarding the recording scheme

The link to the rust program above is to the repository that contains the rust program source, and all of my card scans, if you'd like to follow along.

Throughout this process, a guy that goes by Teenix has been providing invaluable assistance, both in his website, and messages on the HP Museum. His Classic Notes document is not only the best resource for understanding the low-level signaling on the card, but also the meaning of that signaling. Another fantastic resource is the May 1974 edition of the HP Journal. It's focused on the HP-65, but much of it still applies..

Card data header, as captured from the device

The image above is an example of a captured card header. The data is written via flux inversions on track A and B (RA and RB are "Read A" and "Read B" respectively). A flux inversion on track A is a 1 bit, and an inversion on track B is a 0 bit. The data is sent LSB first, and big endian. In this case, these signals correspond to a header that says "Fixed point representation, with two digits after the decimal, degrees, flag 4 is set, and program card 1. There is one nibble that seems to have undefined meaning in this trace; and that's number 5 (zero indexed). Teenix's document suggests that it should be either 1 for a 1-card program, or 2 for a 2-card program. In this case it's set to zero. All of my cards have this set to zero, and I've very curious why...

Checking out checking the checksum

Now that I have the low-level signaling of the card data working well enough, it's time to look into the checksum. Ideally, I'd be able to use the simple algorithm from Teenix's document and verify all my my captures, but it didn't work out that way.

My ST-12b Teenix ST-12b Teenix OpCode Teenix dissassembly
2220104 2220004 STATUS FIX2, DEG, No Flags, Prog side 2
b009f85 b009f85
03839b8 03839b8
514e000 514e000
53e08f8 53e08f8
skipped skipped skipped skipped
7acb24b 7acb14b checksum

There are several things to note in the table above. First, I've listed the contents I've scanned from my own copy of the ST-12b card. This card is a little special in that it's a a very short program card. So, it's a lot easier to look at it bit-by-bit, and nibble-by-nibble. First of all, you should be able to see that my copy and Teenix's copy are almost exactly the same. The only difference is in nibble 4 of the status word. My copy has flag 4 set, and Teenix's doesn't; this is also reflected in bit 4 of the checksum.

I had intended to also disassemble the program data on the card into opcodes and the program listing, but that part of the process is still a mystery to me. I'll probably make another post when I've got that figured out. For now, I'll leave the table columns in place.

This is a very encouraging result, because it does validate that the majority of my data processing pipeline works perfectly. Also, in this case, I have a failure to compute the correct checksum in my rust program. Therefore, this is a perfect case to use to start digging into my failed assumptions about how the checksum is computed.

Teenix's Classic Notes document has this to say about the checksum:

The checksum is the sum of the STATUS and program nibbles

And gives the following example:

Word Meaning
2220013 STATUS
1111111 Reg $2F high
1111111 Reg $2F low
0000000 remaining
0000000 registers
... ...
4442235 checksum

This implies that each nibble position in the checksum is the simple sum (mod-16) of every nibble above it in that column (including status). Unfortunately, because none of the nibbles in this example overflow we have to just assume that it's mod-16 (discarding all but the least-significant nibble of the sum).

Again, using the Teenix ST-12b example, we can perform that operation by hand (all operations in hex)

n0 n1 n2 n3 n4 n5 n6 Notes
2 2 2 0 0 0 4 $1F high
b 0 0 9 f 8 5 $1F low
0 3 8 3 9 b 8 $1E high
5 1 4 e 0 0 0 $1E low
5 3 e 0 8 f 8 $1D high
0 0 0 0 0 0 0 $1D low
. . . . . . . skipped
0 0 0 0 0 0 0 $10 low
17 9 1c 1a 20 22 19 computed checksum
7 9 c a 0 2 9 mod 16
7 a c b 1 4 b card checksum
0 1 0 1 1 2 2 abs error

The table above demonstrates the problem when computing the checksum with this method. Frustratingly, the errors are small in magnitude, but exist on most of the nibbles. Furthermore, the errors don't seem to be related to whether or not it overflows. Nibble zero is correct, even though it overflows, nibble 1 is wrong and doesn't, and nibble 2 is correct and doesn't overflow. Also, the card checksums are always higher-valued than the computed checksum! It's almost like there are some values that aren't being included in the summation.

Next steps

Anyway, that's where I'm at now. I'm going to try and get some feedback from Teenix and the community. I'm at the point where I'm considering soldering semi-permanent wires onto the CRC chip so I can try capturing the same card multiple times and seeing if they're different and by how much.

Beginning the Repair and Refurbishment of an HP97 Programmable Calculator

HP97 photo from the instruction manual

My wife's grandfather was a professor of agronomy at Oregon State University. He was a brilliant man, but a bit of a luddite. Because of that, I was rather surprised when I found an HP97 in his things after his passing. It was in apparently pristine condition, and still in its box, so perhaps he didn't get much use out of it. Along with the calculator, he had purchased the statistics pac, so I'm guessing that's what he had in mind for it.

Somewhat after getting it, I decided to take it for a spin. I don't remember whether the display looked right, but I do remember that the card reader didn't work. Shortly after that time, we moved, and it spent about 2 years in storage. Lately, I've been watching a lot of Curious Marc on YouTube, which has inspired me to pull it out, and get to work fixing it.

HP97 internals

I found the HP Museum; a treasure trove of information about these old HP devices. Though that site, I found the Teenix's website which has even more great information. I set about formulating a plan for getting the calculator back to full functionality.

Battery replacement

The HP97 is a desktop calculator, and is weirdly designed around a rechargeable battery. It has an AC wall-adapter (simple transformer), but it can't really run off the transformer alone. Of course, as the calculator was built in 1976, the batteries are long-since shot.

Battery cells

I didn't want to bother with replacing the cells and reassembling them into a pack just yet, so I figured out a way to make the calculator 5v DC powered. This was pretty simple, because the battery contacts just attach to pins on the PCB. The pins are pretty big, but crimped 0.1" headers fit over them just fine. The image below is where the battery connections attach.

DC power pins

I simply took a spare 5v 2a power supply, crimped some new ends on it, and fed them through the hole in the lock (pre-Kensington).

Printer repair

Printer control PCB

The next issue was the print rollers. The printer on the HP97 uses some kind of rubber pinch rollers to grab and pull the paper from the roll. Over time, this rubber hardens, and as it does becomes quite smooth. The smooth rubber doesn't have much grip on the paper. Also, the constant pressure of the other pinch rollers on the rubber cause a flat spot to appear on the rubber. Some people take the rubber off of these rollers and replace it with silicone. Others sand it with 1000 grit sand paper to roughen the surface and sand below the flat spot. I elected the latter solution, and it worked perfectly.

Print head ribbon connector

There is a trick, by the way, to removing the print head ribbon. The connectors for the HP ribbon cables have metal fingers that are designed for one-way operation. They'll grab the ribbon quite tightly, unless something is inserted (ideally smooth and relatively hard) to allow the ribbon to be removed, the cables will be destroyed. I used cutouts from a spinach container from the grocery store.

69! on the HP97, with a printout

With that, I had a functional printer. I was worried about the print output being quite dark, but it turns out that thermal paper degrades, and 40 years of sitting around caused it to stop working well. A quick trip to staples was all that was required to get fresh paper.

Card Reader

The next issue was the card reader. I mentioned earlier that it didn't work, and the reason is well known in the vintage HP community. The rubber they used on the pinch roller that draws the card through the slot degrades. This was the case with mine as well. Again, there are many ways to repair these rollers, I chose the "o-ring method", which is simply taking 2 5/16" O-rings and putting them on the gear/shaft assembly. Mine needed to be sanded down a little to roll freely.

Debugging the CRC

Unfortunately, that didn't totally solve the problem for my HP97. I noticed that the motor simply didn't often start turning when a card was inserted. The signals to/from the read/write head were perfect, as were the flags from the card detect sensors. It was simply that the motor didn't start. Ultimately, I determined that the sense amplifier chip on the card reader board had probably failed in the motor driver section. I'm hoping that I can find someone that's willing to part with one, as this is most certainly not an IC that you can just buy from DigiKey.

Sense Amp IC

So, until I can find a sense amp, I'm kinda stuck. There's one thing that has me a little concerned, which is that, even when I power the motor from 2.5v from my lab power supply, I still get errors reading cards. It does appear that I can write cards successfully, though. I'm hoping that this problem is more related to motor speed, and is something that I can get dialed-in.

LED Display

In the image above, regarding the printer, you may have noticed that the top-left segment of the 7-segment display is lit on every digit. It's not supposed to be like that 😆. What's happening there, which I discovered after some experimentation, is that the ROM-0 output driver for that segment (segment F for those following along) has failed. I suspect that the transistor responsible for pulling it to ground has failed open-circuit.

Segment F output

In the oscilloscope trace above, notice that the lowest that the output for segment F out of ROM-0 never goes all the way to zero. It overs around 2.5v until it's pulled high for the output 0.00. This is another situation where I'm stuck until I can find a replacement IC.

ROM-0 IC

For the curious among you, the above is an image of ROM Zero. All the ROMs in this calculator are very weird. This one converts bus signals to the 7-segment display signals. Normal companies would, one assumes, use a standard 7-segment display driver, but not HP...

Next steps

This catches us up to now. But I have plans, still, for this calculator. I'm hoping I can find a source for the ROM-0 and Sense amplifier chips. Failing that, I'm considering designing a replacement for the card reader. One option on the table is using a microcontroller that can read and write to the magnetic heads and replaces the Sense Amplifier chip and associated PCB. Another is to discard the card reading completely, and replace it with an esp32 (or similar) and allow for the emulation of magnetic cards. For the display, I don't have as many options, but Teenix has been developing a drop-in replacement CPU board for the HP97. This would obviate the need for ROM-0.

Thanks for reading along. I'm hoping that I'll be better about posting blog posts, now that I have my gitlab deployment system setup better. In the past, I had to download the artifacts from gitlab, sftp into the web server, ssh in and move the files all around. It doesn't sound like much, but it was enough for me to not bother... I think I've got it to a place where I can just click a button now.

PAPR filter adapters for COVID-19

PAPR Adapters and PAPR unit

The early months of 2020 have been a uniquely hellish time. Between the rapidly increasing incidence of COVID cases, varying levels of social distancing, closing of schools, and economic contraction, we've all been trying to find ways to improve the situation for ourselves and others. For some, that has meant sewing masks, for others it has meant designing invasive ventilators (yikes).

As engineers and hackers, a common first instinct in response to a crisis or discovering someone in need is to try to engineer around the problem. In these cases, however, it's important to understand the true needs of the people you're looking to help, rather than your assumption about their needs.

Several years ago, my partner was peripherally involved in the process of Oregon State University starting a Center for Civic Engagement, a group with a charge that included coordinating community groups that needed resources with groups within OSU that may have them. During this process, we talked quite a bit at home about the dynamics of engineering groups designing exactly the wrong solution to a problem. Many of the efforts of people designing invasive ventilators are perfect examples. The person that used a windshield wiper motor to squeeze a bag comes to mind. Such a machine would almost certainly destroy the lungs of a patient in no time.

As engineers, it is imperative that we listen first, develop requirements from the user second, design a solution, then solicit feedback. Armed with the feedback from the user, go back to step two and start over.

Batteries

During the course of this project, I was contacted by a friend of mine, who runs the emergency department at a hospital here in Oregon. He had been tracking COVID for a while, and strategizing about how best to respond. His hospital was in possession of several devices called Powered Air Purifying Respirators, or PAPR, and he rightly concluded that they would be a good way to protect himself and his staff while they deal with the projected influx of COVID patients. The problem, however, was that the non rechargeable battery packs were in very short supply. He sent me an image of the battery and asked if I knew anything about the battery chemistry and whether it would be possible to charge them anyway.

3M LiMO2

Ultimately, they are not rechargeable. Furthermore, the 3M batteries last 12 hours, and he was only able to find 12 batteries to buy on the open market. This is, of course 144 hours of total run time, or 24 hours of runtime per PAPR (they have 6). This would provide some protection, but it's clearly inadequate for a longterm crisis. Cool, so I had my first concrete way I could help out, and feel some control over this crazy situation. Let's circle back on our process: I listened for the need, PAPR batteries; now I need the requirements. In this case the requirements are:

  1. Readily available
  2. Many hour runtime
  3. Must provide at least as much airflow (CFM) as original
  4. Must be convenient and rugged.

First battery design, simply a wiring adapter

The first design that I prototyped was easily rejected. This design was simply a mechanical adapter that interfaced with the custom connector on the 3M PAPR battery and blower, and a cable that had a Deans connector, common in radio control models. The choice of Deans connector was to leverage the ubiquitous, powerful, and cheap batteries used in R/C models. The places this design fell down were in points 3 and 4. Firstly, the original 3M battery is 6 volts. This is an awkward voltage for LiPo batteries, as it falls between 1 and 2 batteries in series. Secondly, it's not convenient to put the battery in a pocket, then have a cable to another cable. Finally, the cables could easily be disconnected.

Second battery design, encloses battery and clips on the belt

The second design is much better; I printed and assembled six of them. This design completely encloses the battery and electronics, and utilizes an off-the-shelf voltage regulator. I elected to use what's called a Battery Eliminator Circuit (or BEC) to regulate the voltage because it's completely contained, well made, readily available, and is less likely to fail than hand assembled circuits. Where this design falls down, though, is in point 4, and slightly point 2. The battery case has a belt clip for mounting on the web straps of the PAPR blower, but it's a little soft, and the nurses have dropped a few. When the case is dropped it can break. With point 2, the BEC may be a simple linear regulator, and therefore wastes more energy in converting the battery voltage. Castle Creations doesn't provide a definitive answer on this, so it's an assumption. Finally, the lowest voltage you can set the BEC to is 4.8 volts, which is higher than required for our design, so it's providing more than the needed power, and this reduces runtime.

Broken PAPR battery case cover

Further feedback has suggested a few more changes for the battery pack, that have yet to have been implemented. One is to make the belt clip smaller, and stronger, to reduce the likelihood of a fall. A second is to add a battery monitor alarm. They over discharged one battery because they didn't pay attention to it. There are commodity buzzers that can be easily added to the batteries. Finally, the pins that connect to the PAPR blower can be pushed out if the cable isn't installed carefully. For that, I think the pins will have to be glued into place.

The design for the battery is available publicly in the A360 cloud. Also, the stl files are available for download individually from GrabCad.

Filters

Shortly after contacting me about the batteries, a need for filters also became apparent. To begin with, the PAPRs that the hospital had on hand were chemical filters, not necessarily HEPA. Second, it is impossible to buy new HEPA filters for the PAPRs in this current environment. I was asked, therefore, to come up with a solution to use vacuum filters with the PAPRs. Like the batteries, we can come up with a simple set of requirements:

  1. Readily available
  2. Instils confidence (no tape)
  3. Rugged
  4. Must be HEPA, and resistant to droplets and aerosols

The first things I started considering was whether, and how to, enclose the filter. Originally, I had thought to fully enclose the filter in plastic, and close the sides with essentially gaffer's tape. I mentioned this to the MD and he was concerned that it would appear rickety, and wouldn't instill confidence among the team. Ultimately I figured out that the filter media doesn't need to be enclosed.

Milwaukee HEPA filter top view

Next, I had to find a filter that would be close to the right size and shape. All of this effort would be completely wasted if the filters it's designed around are hard to find and buy. Also, there's a lot of questionable marketing around HEPA. Unfortunately, HEPA is now a generic term, and it appears that no certification body is able to prevent non-tested nor certified products from using the term on their packaging. I did find a small Milwaukee filter that has a "Certified HEPA" logo. It's very difficult to trace the certification, but as the filter is first party, and name brand, it's among the most trustworthy filters I could find. The filter has a simple mounting scheme, and has only one penetration on the "clean" side of the filter, making it a perfect candidate. I already knew the screw thread size for the original filter canisters, so I developed a cap over the HEPA filter, and adapted it to the cap. It all looked good in CAD...

First attempt at filter adapter CAD

Unfortunately, because I threw it together without having a PAPR to work with (I had ordered a military surplus one on eBay, but it hadn't arrived yet) it didn't fit at all. Once my PAPR came in the mail, I measured it and modeled it in CAD and designed another version. Because the diameter of the filter was much larger than that of the filter canisters that the PAPR is designed for, I had to make the adapter quite long to allow the filter to hang over the side of the case.

Second attempt at filter adapter

The second attempt fit perfectly, and I started printing them on my Prusa i3 clone. The problem I faced now, however, was that it was taking 26-or-so hours to print them. Not only do I not trust leaving my printer over night, but the room I use as my lab is where my cats are kept at night, and I trust them even less than the printer! To deal with some of these problems (remembering that I need 6-7 of these filter adapters, just for one hospital), I asked around for people that might have printer cycles that I could borrow. Fortunately, an engineer at the company I work for is an alum of HP Vancouver (Washington state), and was able to put me in touch with their 3D printing team!

Screenshot of the HP COVID-19 response website

HP is running a very cool program that connects designs and prototype services with medical facilities that need extra support. While I didn't get connected with this team exactly, I do want to give them a major shout out, and thank them for doing this. The team I was put in contact with was the printing R&D group that works on a powered plastic process based on PA-12 (a type of Nylon). Their printer was able to print 6 filter adapters at once, and a single batch takes about 18 hours, regardless of how many parts are contained within.

HP Printer job image

That's all very cool, but now we're changing the process used to make parts, so the assumptions I made while designing the second draft are no longer valid. In particular, FDM printers can enclose any volume with little added mass (this is a tunable parameter called infill). However, the process used in the HP printers is more like stereo lithography (I'm not sure about the details of their process; whether they sinter the substrate with a laser, or bind it with resin, but the effect is the same), wherein any enclosed volume will be filled with the substrate, and become rather heavy. So, an engineer at HP and I went through a few rounds of design review and came up with a cool looking design that met the required criteria above, while also minimizing the mass of the part.

HP printed PAPR filter adapter

The design we ultimately printed has a large adapter diameter to enclose the end of the filter, and mate with the bayonet features on the filter. Then a long tube with a 2-3 mm wall thickness connects the filter internal cavity to the PAPR blower. A cool wheel feature in the middle of the adapter is meant to provide support to the filter, and meet a matching feature on the PAPR body. The role of that feature is to try to prevent the part from breaking if the filter is hit with a wall, door, bed, or medical equipment.

Operational test; PAPR is on the floor with the filter and adapter, running with the battery and producing better than 6CFM of airflow

Once the parts came in from HP (and it only took about a week), I couldn't wait to give the system a test. In the above image, I'm testing the full system with a CFM meter that's provided with the PAPR. In this test, the battery is a 2200mAh R/C airplane battery, in the battery case with the voltage regulator. The HP-printed filter adapter and a cloth "sock" that my wife sewed to provide some additional protection to liquid droplets is supporting the PAPR blower. On the output of the PAPR is a 3M CFM meter that they provide in the kit. It maxes out at 6CFM, and this system surpasses that flow rate easily.

At the hospital

The team at the hospital has been using the kit for a few weeks now, and their impression has been positive overall. Discounting the broken battery covers, there haven't been any complaints. In fact, the filter performance has been so good that they're able to get a few more hours of runtime out of the 3M batteries with an acceptable flow rate.

Medical professional with PAPR, front view

Medical professional with PAPR, rear view

Thanks and acknowledgements

I want to thank my Doctor friend for giving me the opportunity to help out, and provide a sense of control in the completely out of control time. Also, I want to sincerely thank the folks at HP who were able to act so quickly (about a week from first email to parts in the mail!) in helping out. I want to thank Tabor Kelly for making the introductions. Finally, I want to thank you for reading!

Design files and disclaimer

I've provided a public link to the design files in Autodesk Fusion 360. You're free to download them, and use them as you see fit. However, I'm explicitly disclaiming any responsibility for any damages that may arise from the use of these files, and I make no warranty regarding their use or applicability for any purpose.

Going Home

At this point in the journey, we're all getting tired... Tired of hotels, tired of eating out, just plain tired.

Whitehorse to Prince George (CYXY-CYXS)

After arriving from our long, cold, and challenging flight to Whitehorse, we paid special attention to the global icing model. In particular, I trusted it more than I had in the past. In this case, the model had forecast greater icing risk in the afternoon. I suspected that the weather was going to be substantially similar to what it had been the day before. That is, icing caused by towering cumulonimbus clouds. These would bloom later in the day as the sun caused convection by heating the ground. This would provide the "push" that these clouds need to begin forming.

Glacier Scars

Originally, we had planned to visit the Yukon Wildlife Preserve in the morning before departing, but due to the afternoon weather, and that the hotel in Prince George had a water park, we decided to get flying first thing in the morning. We ate breakfast, and arranged for a taxi to the airport at 9:15. At the airport, I looked for someone to sell me TKS (anti-icing fluid), but no one was able to. From our flight the prior day, I wasn't sure how much we had left, and with the risk of ice that day, it would have been nice to take off with a full tank. Alas, it wasn't in the cards.

Ski Resort

Our flight plan for the day was pretty simple. We took V328 to YXJ (Fort St. John), then V308 to Prince George. The route was a little circuitous, but it was the safest given weather, terrain, and oxygen availability. Ultimately, though, Vancouver Center gave us a shortcut that helped out quite a bit.

CYXY-CXYS tracklog

While there was forecast icing risk, we never ended up getting any. This is likely because we were much more aggressive about asking for, and deviating around cells. It was cloudy and a little rainy upon arriving at Prince George, and this was actually the only rain we had the entire trip!

Arrival at Prince George

When we got to the hotel, we ate right away and immediately jumped in the pool! The water park was a huge hit, and it was nice to have some time to relax and just play around.

Price George to Moses Lake (CXYS-KMWH)

While we were on the ground at Price George, both the night we landed and in the morning, I called every phone number I could find and asked about TKS fluid. Again, there was none available.

Clouds

The forecast again had icing risk... (Notice a theme?) This time, the ice seemed to be predominately over the cascade range in Southern British Columbia. Originally, we had planned on flying to Seattle, and clearing customs at Boeing Field. I wasn't comfortable with that route any more, and decided it would be much better to remain on the East side of the cascades and clear customs at Moses Lake. I even worked pretty hard during my selection of airways to remain as low as possible. This seems to seldom work for me, and before we knew it we were flying at 11,000'.

Mountains

It was apparent that we were returning to civilization, because I could almost maintain contact with ATC the entire trip, and we were on radar! The exception that really stood out, though, was when we crossed into the US. Vancouver Center handed us off right before the border, and I couldn't get Seattle Center at all. I kept trying to get them, and even with the squelch open, I got nothing. Eventually I got so frustrated that I finally pressed the ident button. Surprisingly, they called me immediately after, and they couldn't hear me respond. So, they asked an airliner to relay for me. Through the airliner, they asked me if I could climb to 13,000. I said "fine, but you've got a half-hour". For the uninitiated, law prohibits a pilot from flying between 12,500' to 14,000' without supplimental oxygen for more than a half-hour. Katie, keenly aware of this, started a timer the moment we crossed 12,500'. Once at 13,000' we were able to talk to Seattle Center, and coordinate our arrival into Moses Lake.

Rocks in Clouds

One thing interesting about our approach into Moses Lake is that we were racing a Boeing 737 (with a Boeing callsign, so not an airliner) to the airport. The 737 wanted to do a practice approach (low approach only), and was trying to convince Moses Lake tower to relax about it because there wouldn't be a runway conflict. The tower's rules about cross-direction traffic were strict, though, and I had to be off the runway before the 737 was on short final. One thing I love about the Cirrus is that you can keep the power on in the descent and pretty easily maintain 170KIAS. This is within the low-speed range of the 737, and so tower could basically tell us both to maintain 170. Other than this, our approach and landing at Moses Lake was routine.

Arrival at Moses Lake

Customs

I got a progressive taxi to the Customs parking box, and was greeted by a line service tech from Columbia Pacific Aviation. After briefly chatting with the CBP Officer, he got us all fueled up and the windows cleaned. The service from them was awesome.

Our customs experience at Moses Lake almost couldn't be more different than that of Ketchikan. First of all, I have to get a major mea culpa out of the way... I did not file my eAPIS before taking off! 😲 Fifteen minutes after taking off from Prince George, I literally slapped my forehead and said "Shit, I forgot to file the eAPIS!" Luckily, I still had cellular service at the time and was able to file it really quickly. I was able to get the confirmation email just before losing service. What I didn't notice, of course, was that there was a phone number I was supposed to call prior to landing. This is because there's only one CBP agent at Moses Lake, and if he had a Doctor's appointment I'd be out of luck. He ribbed me about this a little, but let it go. Once in his office, and going through the paperwork (Passports, Aircraft registration, Pilot's license and medical) he said "This passport is invalid". If you'll remember, I had paid a fair amount of money for a rushed passport, and of course I said "What!? This is a brand-new passport!" He chuckled and read "This passport is invalid unless signed by the owner." Then handed me a pen.

Once paying the Moses Lake user fee ($20), we were free to leave. We went to the small cafe in the Moses Lake airport to get some lunch, and it was ok, and we were on our way.

Moses Lake to Corvallis (KMWH-KCVO)

OUR LAST LEG!

Downtown Portland

Finally we're on the last leg of our epic adventure. The Moses Lake to Corvallis leg is very similar to another I've completed recently, from Wenatchee to Corvallis. It's a simple route south to the Columbia River Gorge, along the gorge to Portland, then south to Corvallis.

Mount Adams

I filed a route that would have put me through Mount Adams (oops), but ATC helpfully offered me the option of deviating or climbing. I asked whether I could proceed direct Corvallis, which would have had me "thread the needle" between Mount Adams and Mount Hood.

Threading the needle

I was surprised that they accepted the offer! and I headed directly home! Unfortunately, the next handoff was to Portland Approach, and they were a hard pass on that whole plan. The reason I was surprised to get it was because that would have put me right in the middle of the westerly flow into Portland International. They cleared me direct BTG (Battleground, WA).

Portland International

Once I was far enough west that I wasn't in their flow anymore, they did end up clearing me direct CVO, and allowed me to begin my descent. When I got handed off to Cascade Approach (from Seattle), I canceled IFR and began setting up for the downwind on runway 35 at Corvallis. It was great to be home.

Success!

What an adventure!

Emma decided to tell the plane "Thanks for the trip, you did a great job keeping us safe."

Thanks plane!

Talkeetna to Whitehorse

I don't really feel like writing this post, to be honest. This was one of my least-fun flights that I can remember.

We woke up in Talkeetna and finished packing up. We weren't in a huge hurry to get going. This day was going to be only flying. So, we walked to The Roadhouse for breakfast, then back to the airport. I walked ahead, because Emma is a slow walker, and I wanted to visit the Flight Service Station (FSS) at Talkeetna. Flight Service Stations are just about extinct in the lower 48, so I was excited about getting an opportunity to get a real in-person briefing. It was really fun to look at all the forecast products with someone. My primary concern for today's fight was Icing.

My usual tools for evaluating icing risk (the US Icing model and Skew-T/Log-P plots) weren't available for this flight, though the global icing model was. The global model, and the ForeFlight briefing were forecasting ice, but the briefer at the FSS wasn't convinced. He more-or-less dismissed the concerns, saying that there were no AIRMETS, SEGMETS, or remarks regarding icing along the route.

ForeFlight briefing

We filed our intent to depart with US CBP, and Canada Border Protection, and filed our IFR flight plan.

After filling up the plane and departing, we headed east. I got Anchorage Center on the radio and tried to open my flight plan. They weren't able to find it, but opened a new one for me anyway.

By the time we reached the Talkeetna Mountains east of town, we were getting into the clouds. Within the next fifteen minutes, or so, we did start picking up trace ice. It was pretty intermittent, and seemingly only in the clouds that had vertical development. We started working to avoid these clouds by deviating left and right. Once we were past the Talkeetna Mountains, the unstable air didn't have the forcing action of the mountains and the clouds settled down. This gave us some time to take stock of things and think about our strategy for the remainder of the flight.

At this point in the journey, we were in a bit of a bowl, and mostly on our own. Anchorage Center was technically responsible for us, but we didn't have radar service or communications. Eventually we did make contact at a reporting point just prior to the border, and were given the instruction "Maintain one-two-thousand while in controlled airspace, contact Edmonton Center one-hundred miles prior to whitehorse". This was a mostly-formal "you're on your own for almost two hours, good luck".

I was a little unfamiliar with how much latitude I had to change altitudes and deviate with such an instruction. We were still hitting some clouds with ice in them, and I was getting worried about how much TKS was left. We were shedding the ice at an OK rate, and we weren't accumulating anything more than a few millimeters on the leading edges. But, this was way more than I was comfortable with. So, I just started deviating anyway.

Eventually, and much closer than 100nm from Whitehorse, I was finally able to get Edmonton Center on the radio. I told them I had deviated left of corse, and that I could accept a vector whenever they wanted. I don't remember the exact response, but it was essentially "We don't have radar where you are, so you can proceed direct Whitehorse whenever you want"

Again, we were in a position where the clouds were behind us, and we had an easy shot to our destination. After a bit of decompressing, Katie and I talked about our experience. I confided that I was stressed about what had happened, and that I was remaining calm to not give her the impression that things weren't going great. She said "that's good, because I was afraid, and I was calm because you were calm." The whole time, though, she was watching for ice build-up, helping me spot bad clouds, helping me decide whether left or right would be a better choice. Katie was a hell of a co-pilot. I feel incredibly lucky to have a wife that not only likes to go on these flying trips, but is able to take the bad with the good, rise to the occasion, and kick ass.

Shortly thereafter, Edmonton Center asked me if I had an approach request at Whitehorse. I said that I could accept the visual. They replied that "altitude is now pilots discretion, contact Whitehorse tower when desired." We ended up descending into a valley and flying that to Whitehorse. I was cleared to land abeam the tower, and pulled off a smooth landing, even though the winds were 4, gusting to 19.

Talkeetna

Our only concrete plan for Talkeetna was to get an arial tour of Denali from K2 aviation. We had heard that Talkeetna was kind of boring, and that we should spend the minimum amount of time there. This was not our experience. In some ways, Talkeetna was my favorite town. It had a funky Austin, TX kind of vibe. There were plenty of pride flags flying, a clear environmental conscientiousness, and lots of cool, very yummy, restaurants.

As it happens, our time in Talkeetna had a very strange Man V. Food connection with us. On Thursday, after our K2 flight, we went to the West Rib for lunch, and noticed there was a film crew working. We went in anyway, and a production assistant asked us if we'd be willing to be on the show. We agreed, and had a 10 minute interview with Casey Webb. The episode will probably air in late Fall. The next morning, we were eating at The Roadhouse and I noticed that Katie was sitting in the seat that the original Man v Food host, Adam Richman, sat in during a 2009 episode.

We also ate at the Wildflower Cafe, Denali Brewing, and a small food truck selling fireweed ice cream, Emma's new favorite flavor.

In addition to all the interesting and fun man-made stuff in Talkeetna, the natural beauty is abundant. There are trails everywhere that let you explore. Be a little careful, though, it can be hard to tell when you start venturing onto private property. Our final full day here we mostly spent exploring and made our was across the rail bridge to a small beach on the river and let Emma play and splash around while we dug our toes into the sand and glacial silt. This was also the only place on our trip that we experienced the legendary mosquitos we were warned about, Katie didn't notice at the time, but later that night discovered at least dozen very itchy bites.

K2 Aviation

K2 has a stable of De Havilland aircraft. They use mostly Otters, but also one Beaver, and one Piper Navajo. These tours can be either the south-side of the mountain, around the mountain, or flying up to the summit. All-but the summit flight have a glacier landing option. The summit flight is in the Navajo, because pressurization is required. We elected for the Grand tour, which goes around the mountain, with a landing.

Of over 400 hours in small planes, this was probably the most amazing hour I've ever experienced.

Juneau to Talkeetna

Gallery Link

There's really only one real IFR route between Juneau and Talkeetna for a plane without a turbo and oxygen. The route takes you to Sister Island SSR, intercepts T269 at HAPIT, then keeps going all the way to Anchorage TED. Once at anchorage, just turn north to Talkeetna. In my plane, it's about a 4 hour flight.

Mountains

We did the entire flight at 10,000'. When we initially flew out to the ocean, the HAPIT waypoint is a fair bit away from the shore, so I asked for an early turn direct to YAK. ATC cleared me for this, but then turned us a little to keep us far enough away from Mt. Fairweather.

Mount Fairweather

The geology in this region is much more interesting that we had seen so far. The mountains are just starting to get pretty huge. In the distance, I saw a huge peak, and thought "woah, can we see Denali already!?" Turns out, no. I hadn't known that there was another enormous mountain that's only 800' shorter than Denali: Mt. Logan.

Mount Logan

Another amazing thing to be able to see were the various stages of glacial geology. All glaciers start as Cirques, which are the bowls which collect snow over the ages, compressing it into glacial ice. Eventually, these fill up enough that the ice flows into a valley glacier. We got to see many amazing examples of glaciers in every stage of their formation and life-cycle.

Glacial flow

A glacial terminus can be either on land, or on water. We got to see great examples of both. In this case, the glacier is terminating at sea, and the ice is breaking off to become icebergs.

Icebergs

In other cases, the glacier melts while still on land, and produces these silt flats that lead to beautiful waterscapes

Silty Waterscape

Finally, over even more time, these silt flats become beautiful lush landscapes

Lush landscape

The only real complication during the flight was the handoff from Anchorage Center's 119.0 frequency to 119.3. I was told to contact them on 119.3, and if I couldn't make contact in ten minutes. This was at 14:51. At 15:11 I tried again. And again. And again. It ended up being almost an hour before I could finally get them on the radio. In that time, I did have luck relaying messages to them via airliners and freighters above me, so I wasn't overly concerned. But, I was conscious that if I couldn't re-establish communication by Cordoba, AK, then I'd probably be required to land. It's a little bit of a grey-area to me whether I was actually having a communications "problem" that would have required squawking 7600 and doing the communications failure stuff. Another irony is that I didn't have radar service, so no one would see me squawking anyway!

Talkeetna Runway

Juneau

Link to the gallery

In and around Juneau

Whales

On the flight from Ketchikan to Juneau we flew along the coast and Katie saw DOZENS of whales. At first she was unsure what the little dark grayish torpedos were, but then she started seeing them blow and even saw one huge breach. We were pretty shocked just how many humpbacks could be seen at once. We hadn't booked any whale excursions on our trip, so this was particularly cool.

Jorgensen House B&B

I don't even know where to begin with Jorgensen House. It was absolutely spectacular. The house and grounds themselves are incredibly beautiful and peaceful. We walked to and from town every day past a gorgeous park-like cemetery. Renda, our hostess, was so gracious and spoiled us endlessly, always accessible, but never obtrusive.

Amazing breakfasts

The breakfasts were out of this world ridiculously delicious. Honestly they have gourmet chefs serving breakfast and every morning they come out and tell you what they've created. We felt like royalty while staying here.

Katie's not-birthday Cake

We didn't tell them it was Katie's birthday, but by random happenstance, they had cake available the evening of her birthday. They also whipped a scrumptious lunch to go with zero notice when they learned we'd be flying over the lunch hour, such service!

Around town

Town was pretty clearly divided between cruise ship owned tourist crap stores and local stuff, we tried a bit of both and for the most part liked everything. First we had diner at The Hanger on the Warf which was yummy enough. We also tried the Twisted Fish (apparently the same owners) and it was also pretty good. Emma was quite pleased with the sashimi platter at Tokyo Japanese Restruant. We got Russian Dumplings for lunch one day at Pel'meni which were good and cheap. We also had a suprisingly ample lunch at Devil's Club Brewing along with two satisfying flights of beer, the people there were very nice. The best, in our opinion, was Deck Hand Dave's food truck at Gunakadeit Park. Renda tipped us off that when the Food Network folks had stayed with them they said it was the best fish tacos around. There we ordered fish tacos, fish and chips, and got some beer in the cute little food truck court, it was all very very good.

Juneau is the capital of Alaska, and as such has the capital buildings and the governor's mansion. These are mostly unremarkable, but the capital building has a life-sized bear statue that Emma decided was her mama.

Emma and the bear

Mount Roberts

Sun filtered through the trees on Mount Roberts

The driver of our taxi from the airport gave us a quick tour of downtown Juneau, and one thing that he mentioned (that we hadn't already heard about) was that we could hike up Mount Roberts, and after buying $10 of stuff from a gift shop, ride the tram down "for free". I'm not telling you to cheat, of course, but no one checked our receipt ;)

Will and Emma on the trail

We were planning on walking downtown from our B&B to the base of the tram, and taking the tram round-trip. But, we didn't have anything planned for this day, so we thought we might try the hike. Initially, it seemed like an insane idea, but Emma was bouncing off the walls, so we decided to give it a shot. Our B&B is near the trailhead for the Gold Creek Flume trail, which links up with the Mount Roberts trailhead. By the time we hiked up the hill to get to the trailhead, we saw that it was closed until September... Booo! Undeterred, we called a taxi and got a ride to the Mount Roberts trailhead by road.

View from Mount Roberts

We knew, of course, that hiking up a mountain was going to be challenging, and we were worried how Emma would take it, but we actually did amazingly well. Emma never complained about the hike. She said she was tired once, but it had the air of a status report, rather than a complaint.

Selfie Totem

Though the hike was achievable, I had not anticipated how sweaty I'd be at the top. It was kinda jarring being sweaty and stinking while mingling around so many people from the cruises that took the tram up.

Emma in a recreation eagle's nest

The tram ride down was awesome, and it is a truly impressive incline.

Tram incline

Mendenhall Glacier and Summer Dog Camp

One of the three banner events for the trip was the Mendenhall Glacier helicopter tour and dog camp. Everything went according to plan, and the weather today was perfect. We had an easy morning, because our tour group was set to meet in downtown Juneau at 2:45. The tour company is a mill, and is run like a well oiled machine.

Helicopter pilot

Their facility is on the East end of the Juneau International Airport, and it's basically a small building surrounded on three sides by running helicopters. When I say running helicopters, I mean it. I don't think they shutdown all day. A flight of three comes in and lands, the people get out, it gets fueled (while running), people get in, and they leave. The whole process can't take more than 3 minutes. The flight to the glacier is about ten minutes. About half-way through your time on the glacier, you can hear the helicopters come back and swap-out another group. The formation flying that these pilots do is pretty awesome. The flight itself isn't close formation, but the takeoffs and landings are like ballet.

Helicopter formation

The flight to the glacier, though short, was beautiful. I can only think of a few places on earth that would be as spectacular to see by helicopter. As we flew away from Juneau and climbed, we could see the trees thin at the timberline, then as we climbed further rock turned to ice. Flying further still, we could see the flows of ice, frozen in time.

Mendenhall Glacier

Eventually, we approached a large bowl-like feature in the rock and ice, and in the center a small formation of structures. It was like a micro-sized burning man on ice. This impression was made even stronger when we landed and were greeted by funky guys in full glacier glasses.

Dog Camp

The first guy we talked to explained the camp, and what he does there. During the winter he lives in Fairbanks with his wife and their 45 sled dogs. But, in the summer, it's too warm down there for the dogs to exercise and train properly. So, every summer they move up to the glacier and that lets them keep their dogs from going nuts due to boredom. About 22 people live at the camp at a time, and they rotate down with a few living "on the ground" at a time.

Will "Mushing"

Next we got to take our ride on the dogsleds. They plan on making 3-4 stops along a 1.5 mile loop so that everyone can rotate in position on the sleds. The front sled is the one that's driven by the real musher, and there's a trailer sled that looks like a normal dogsled on which each visitor can play at mushing. Even though you had no real control in the back, I got the feeling that being the real musher doesn't afford you a lot of control either. The sleds do have brakes, and I did use them a few times to avoid hitting the real musher in front.

Sledding

One of the times that we stopped to rotate, and also at the end, we got a chance to pet the dogs and thank them for doing a good job. It was cool to see how different their personalities were. I became enamored with one in particular that was very clear with you when she decided she wasn't done being petted. She'd either hit you with her paw or head-but you, such a sweetheart.

Petting Sled-dogs

Finally, we all got a chance to pet and snuggle with two very cute puppies. I'm certain this was Emma's favorite part of the entire vacation.

Emma snuggling a puppy

Mendenhall Glacier by Canoe

This excursion was a pretty simple one. The basic idea is to get into a canoe with something like 19 other people and paddle for 5.5 miles in Mendenhall Lake. I was surprised just how exhausting that would be, and how annoying it would be to paddle behind some late-teen/early-twenty something women from Jersey who were either incredibly incompetent and/or incredibly lazy. We weren't at all sore after climbing Mt. Roberts, but our arms were a little sore after paddling the lake.

Mendenhall Glacier at the lake

Emma really wanted to try paddling, but she's just not quite strong enough yet. I helped her with it, but the angles were really hard on my arms. I have to say, she may not be a great paddler yet, but she looks great with a paddle! 😂

Emma the paddler

After going as close as we could to the glacier, we turned toward Nugget Falls. The guide had us paddle right at the falls as hard as possible, and got a pretty good splash. Emma was not impressed!

Nugget falls

That was pretty much it. We paddled back, and that was that. Then, the next day, when we were flying to Talkeetna Katie got an awesome photo of Mendenhall Lake, with the glacier and Nugget falls.

Mendenhall Lake

Ketchikan

Link to the gallery

Enjoying Ketchikan

Now that we're on the ground at Ketchikan, and had some rest we got to explore the town some. It's a pretty neat little community and we enjoyed it. There were a few highlights...

Funicular

Katie and Emma in the Funicular

Our hotel is up on the hill overlooking Creek Street. It's a pretty steep grade at 70%, and 175' of elevation change. It would be a total bummer to have to walk it every time. Thankfully, the builders of the hotel had the good sense and foresight to build the Funicular. The upper end of it opens right into the lobby.

Creek Street

Creek Street shirt

Creek Street is the former "Red Light" district of Ketchikan. There were saloons, brothels, all that good stuff. Now, though, it's fairly typical tourist-y shops. As far as these shop walks go, though, it's pretty cute. The best part is the actual creek that runs along side it where you can see HUNDREDS of salmon at once try to make it back up stream to spawn and seals gather for an easy meal.

Creek Street shops

Totem Heritage Center

Ketchikan City Park

Ketchikan has a really lovely little city park up the hill from downtown. It has a salmon hatchery, fountain, and the Totem Heritage Center. The Smithsonian, Forest Service, City of Ketchikan (and others) all worked to develop a survey of the totems in SE Alaska. They secured buy-in from the Native Alaskan Brotherhood and Sisterhood (NAB/NAS) and the owners of the totems. For totems they couldn't establish ownership, they got permission from tribal descendants. These totems were removed from where they were installed, and moved to the Center. The rational for these moves is that totems had been stolen, vandalized, or were decaying in the weather. They were carefully removed and are displayed at the center.

Totem Heritage Center

It was very cool and inspiring to see the old totems as they were. Growing up in the Pacific Northwest (as Katie and I did) gave us the opportunity to see a ton of totem poles around, but they were all modern. These are real and old.

Float planes

You know that you're going to see a lot of float planes in Alaska, but I had no idea just how many I'd see. It's honestly ridiculous. They're everywhere. Prior to coming to Alaska, I think I may have seen a De Havilland Beaver once in my life. Now I've seen probably 50. Same goes with De Havilland Otters.

Flying to Juneau

For the flight to Juneau, I filed an IFR flight plan, even though the weather was more than sufficient for VFR. Especially on trips like this, I like having "someone watching me". Unfortunately, no one was for the majority of the flight.

Cya later Ketchikan!

Ketchikan, like Port Hardy, has a "Mandatory Frequency" which is almost like a tower, but they do not tell you what to do. You check in with them, tell them where you are and what you're doing, and they tell you what everyone else is doing. When we checked on being ready to taxi, they just asked if we were going to be going right to the runway or stopping anywhere else (presumably for a run-up). Because we had already done all the pre-takeoff checks, we said we weren't stopping anywhere else. They told us about the Beavers in the pattern for the river, and that they had no other scheduled flights for several minutes. Finally, they reminded us that runway 11 is right-traffic. We took off, changed frequencies, and called Anchorage Center.

Mendenhall Glacier and Juneau International

When we called Anchorage Center, they couldn't pick us up on radar. I've had this happen before in Oregon. I'm not sure why, but my transponder just isn't that sensitive. While we were waiting to see if they'd be able to pick me up, and decide whether they were going to accept me as an IFR flight without a transponder, I went ahead and climbed up to 8,500' as a VFR hemispherical altitude.

Eventually, they cleared me for the flight, and I descended to the filed and cleared altitude of 8,000'. I had to give position reports about every 20 miles along the trip. Another thing that I have to sometimes do in remote mountainous areas such as this is get frequency changes 20-40 miles beforehand. For example, I got something like "report 20 miles prior to Level Island on my frequency 133.9". This is basically him telling me that I'm going to be out of range on my current frequency sometime between where I am and 20 miles south of LVD, and that they will use that as another point to keep track of where I am. This happened twice on this flight.

Another interesting thing that happened on today's flight is that another aircraft missed a handoff. So, Anchorage center asked me to broadcast to them their new frequency. I hadn't thought about it at the time, but me repeating the request was also broadcasting to them. I heard the other aircraft read back to me, then I heard them check-in with Anchorage. Finally Anchorage thanked me for the help.

Left 360

Because another IFR aircraft was going into Juneau before me, and they didn't have me on radar, I had to stay really high really late into the approach again. Luckily, I finally got close enough to a radar facility that they were able to pick me up and give me a descent. They cleared me for the visual and handed me off to Juneau tower. I was high and close enough that I had to do a 360° to lose some altitude. I did a wide downwind and had an uneventful approach to landing.

Runway at Juneau

I noticed while filling out my logbook that my plane has 1999.2 hours since new, and my engine has almost made it all the way to TBO. I can't wait to put the 0.8 on it soon, and hopefully get a photo of the big 2000!

Almost to TBO