N997CZ — The Attitude Problem: Convincing Garmin, Twice

If you’ve been following along since the early flights, you know this airplane has had a recurring character in its story: the tumbling artificial horizon. ATTITUDE and HEADING MISCOMPARE annunciations, deviation numbers pegged at their limits, an attitude display that would occasionally roll over and play dead during the takeoff roll or hard maneuvering. This is the post where that story gets its arc — how we isolated the problem with flight data, convinced Garmin to overhaul one attitude unit, proved the fix, and then used the same data to convince them about the second unit.

The Setup

N997CZ carries three independent attitude sources: two Garmin GSU 25C ADAHRS units (AHRS #1 and #2) behind the panel, and a G5 electronic standby. Three opinions about which way is up, continuously cross-compared — when they disagree, the system annunciates a miscompare and the pilot gets to wonder which box to believe.

From the first flights, the disagreements clustered in the high-vibration, high-acceleration regimes: the takeoff roll above all, plus stalls and slow flight. Two suspects emerged early: vibration (the prop was genuinely out of balance), and the attitude units themselves.

Fix One: Balance the Prop

The dynamic prop balance took vibration from 0.57 IPS down to 0.01 — a 50-fold reduction — and it helped every attitude source. Looking only at the big deviation excursions (reported deviation above 200%, takeoff roll through touchdown), all three sources improved markedly after the balance.

But it didn’t eliminate the problem. The large excursions kept coming, and they kept coming disproportionately from one box.

ADAHRS deviation by era — the worst unit flips from AHRS #1 to AHRS #2 at the swap
Deviation above 200% by era. The prop balance (A→B) helps everyone; the AHRS #1 swap (B→C) moves the outlier from #1 to #2.

That’s the chart that tells the whole story, so let’s read it. Each group is an era: (A) original prop, original AHRS #1; (B) balanced prop, original AHRS #1; (C) balanced prop, new AHRS #1. The prop balance (A→B) drops everyone. But within every era, somebody is the outlier — and in eras A and B, it’s AHRS #1. Not just on average: AHRS #1 was the highest-deviation source on every single flight from 5 through 12. On Flight 12 it saved its best for last — in-flight re-aligns totaling almost two minutes, and a cross-source roll disagreement of roughly 136°.

Fix Two: Replace AHRS #1

Garmin agreed to overhaul AHRS #1, and the replacement unit went into the panel on June 6 — the same day as Flight 12’s fireworks. The before/after is about as clean as flight test data gets:

  • In-flight re-align events (“AHRS1 ALIGN”): 350 seconds total across Flights 5–12 → zero on Flights 13, 14, and 15.
  • Maximum cross-source roll disagreement: ~136° → under 10°.
  • Extreme deviation excursions (>500%): eliminated.
  • Attitude-horizon tumbles: Flight 13 was the first flight in the airplane’s life without one, and there hasn’t been one since.

Case closed on AHRS #1. Which is exactly what made the remaining data interesting.

The Plot Twist: The Baton Pass

Look at era C in the chart above. With the new AHRS #1 installed, the outlier didn’t disappear — it moved. AHRS #2, the original, never-serviced sister unit, became the highest-deviation source on every flight 13 through 15. The worst-of-three title passed from #1 to #2 on the exact flight the new unit went in.

In-flight ADAHRS re-align events per flight — after the swap, the re-aligns shift to AHRS #2
In-flight re-align (“ALIGN”) seconds per flight. AHRS #1 (navy) re-aligned on flights 5–12 and stopped cold at the swap; on Flight 15 the re-aligns appear on AHRS #2 (orange) instead.

Then Flight 15 produced the smoking gun. AHRS #2 — which had never logged an in-flight re-align in the airplane’s entire history — dropped its attitude solution and re-aligned for a cumulative 118 seconds, with the system annunciating “USING AHRS1” while the brand-new #1 carried the load. The roles from Flight 12 had exactly reversed.

Better still, from a diagnostic standpoint: the failure is reproducible on demand. It triggers in high angle-of-attack, full-power slow climbs — on Flight 15 it recurred in roughly eight separate events inside a single 30-minute window of climb-performance testing, all at a median of about 89 knots, nose up, full power. A fault you can demonstrate on command is a fault nobody has to take your word for.

Convincing Garmin, Round Two

All of the above went into a short data report to Garmin — the era comparison, the re-align timeline, the reproducibility recipe — with a simple argument: AHRS #2 now exhibits the same in-flight signature AHRS #1 exhibited before its overhaul fixed it; we respectfully request the same service. The report we sent is here, for anyone fighting a similar battle: N997CZ GSU 25C ADAHRS Deviation Analysis (PDF).

Garmin agreed. The replacement AHRS #2 is in hand.

Where It Stands

As of this writing, the new AHRS #2 has not yet been installed — that’s the next hangar session. Then comes the fun part: a verification flight, flown the same way as before, slow full-power climbs and all. If the data does for #2 what it did for #1, this airplane will fly with three healthy attitude opinions for the first time in its life — and this series finally gets to retire its longest-running villain.

To be continued.

— with thanks to Garmin support for engaging with the data both times.

N997CZ — Flight 14: Dan’s First Flight

Dan's new BMW wearing the N997CZ vanity license plate
Dan’s new BMW, already wearing the airplane’s callsign.

Let the record show the order of operations: Dan put the tail number on his car before he ever flew the airplane. That’s commitment. (In fairness — he offered the N997CZ plate to me first, before reserving it for his own ride. I passed. He didn’t hesitate.) So when Flight 14 rolled around, the man already had the callsign on his bumper; all that was missing was the airplane in his logbook.

Some context for newer readers: N997CZ has three owners — Harry, Dan, and me. I’ve flown every minute of the test program so far, because that’s how Phase 1 works best: one pilot, one airplane, building knowledge methodically. But thirteen flights and twenty-some hours in, with the stall series done and the systems behaving, it was time. Flight 14 was Dan’s first flight in the RV-10 — his airplane as much as mine.


The Numbers

Date2026-06-07 (afternoon — second flight of the day)
Engine time~0.9 hr
Engine hours18.3 → 19.1
Max altitude~6,490 ft
Fuel used9.8 gal (totalizer)
Profilefamiliarization — no test cards
Conditionswarm afternoon (cruise OAT +76 °F)

No test-card PDF link this time, and that’s deliberate: this was a familiarization flight, not a test sortie. The cards stayed in the binder.


Taxi Out

His first taxi out in the airplane:

Dan taxis out for his first flight in the RV-10.

First Takeoff

And the moment itself — Dan’s first takeoff in N997CZ:

Dan’s first takeoff in the RV-10.
Dan in the cockpit of N997CZ on the ramp
Dan in the left seat on the ramp.

What the Data Says About a Familiarization Flight

Even a no-cards flight leaves a data trail, and Flight 14’s log reads exactly like what it was: a thorough, unhurried checkout.

Ground track for N997CZ Flight 14
Ground track for Flight 14.
Flight 14 altitude and indicated airspeed vs time, with the air-work block shaded
Altitude and indicated airspeed — the shaded block is the slow-flight and steep-turn air work.
  • Air work: a focused fifteen-minute block of slow flight and steep turns. The slow flight walked down to 52 KIAS at ~5,400 feet — comfortably into the regime where this airplane has now been thoroughly characterized — and the steep turns ran to about 45° of bank, pulling a maximum of 1.66 G. Textbook checkout numbers.
  • Mixture: cruise fuel flow ran about 21 gph — essentially full rich. Thirteen flights of my leaning experiments did not transfer by osmosis; nobody leans aggressively on their first flight in a new airplane, nor should they.
  • CHTs: the warm afternoon, rich mixture, and lower altitudes made this the toastiest of the weekend’s three flights — cylinder 5 peaked at 428 °F, still under the 435 °F comfort line. All six stayed in the green.
  • Cabin CO: peak 3 ppm. Benign.
  • Attitude system: the freshly overhauled AHRS #1, two flights into its tenure, stayed perfectly quiet through all the maneuvering. Not a twitch — the second tumble-free flight in a row, in an airplane that had never logged one before.

Fuel Etiquette

After landing, Dan topped the airplane off on his own dime — about ten gallons. The partnership’s fuel accounting remains in perfect balance, and the totalizer reconciliation thread that runs through this blog barely noticed the handoff.


Bottom Line

Flight 14 added a second name to N997CZ’s pilot roster, and the airplane treated its other owner exactly the way you’d hope: honest slow flight, crisp steep turns, cool-headed avionics, no squawks added. The man had the tail number on his car; now he’s got the airplane in his logbook.

Me? Maybe someday I’ll register a 997RV plate — the partnership’s RV-7 — and close the loop. Then each of us can drive around wearing the other airplane’s callsign, and the fleet will be fully registered on pavement and off.

Engine time after Flight 14: 19.1 hours.

N997CZ — Flight 13: The Stall Block

Ground track for N997CZ Flight 13 over the Phase 1 test area
Ground track for Flight 13 over the Phase 1 test area.

Every flight test program has a day where you stop sneaking up on the stall and just go fly it. For N997CZ, that was Flight 13. The slow flight and first banked stalls on Flight 12 had shown the airplane was honest at high angle of attack; this flight was about systematically documenting where the wing quits — clean, with flaps, and with power on — and doing all of it with a lot of sky underneath.

It was also the flight that finally set the airplane free of round numbers: a new program-high altitude of 12,069 feet.


The Numbers

Date2026-06-07
Engine time~2.2 hr
Distance233.3 nm (GPS path)
Fuel used24.1 gal (totalizer)
Engine hours16.2 → 18.3
Max altitude12,069 ft GPS — new program high
Cruise OAT+67 °F (warm day)
Loadingsolo, light weight
Cruise mixtureleanest yet — ~11.5 gph

The Card Deck

Flight 12 only got partway through the stability cards before the slow-flight work used up the morning, so this flight’s deck rolled the leftovers in with the stall series — eight cards in fly order: area set-up, steady-heading sideslips, spiral stability checks, then the pre-stall set-up and recovery drill, and finally the stalls themselves — 1-g clean, full-flap, and power-on. (The last card, accelerated/turning stalls, didn’t get flown before fuel and the warm afternoon said go home — it carries forward.)

The sideslips and spiral stability points were flown and are sitting in the log waiting for their own data reduction — a future post once the numbers are out.

The full 16-page deck — a briefing script page for each card plus a boxed, cut-out kneeboard card for the cockpit — is here: Flight 13 test cards (PDF). Here’s one from the deck, the 1-g clean stall:

FT-13-5 kneeboard card — 1-g clean stall, document the break
The FT-13-5 kneeboard card — 1-g clean stall, document the break.

The Stall Block

Flight 13 altitude and indicated airspeed vs time, with the stall block shaded
Altitude and indicated airspeed vs time — the shaded block is 33 minutes of stall work, ending with the climb to the program-high 12,069 ft.

The profile chart shows the structure: climb out of Manassas, stability work around 10,000 feet, then a sustained 33-minute stall block — that dense comb of deceleration spikes in the red trace, each one a deliberate walk down to the break and a recovery. Toward the end of the block the airplane steps up and up, topping out at 12,069 feet for the power-on series, then a long descent home.

The headline numbers, all flown solo at light weight:

Series (engine-verified)BreakNotes
Power-off, early series52–58 KIASidle/low power, ~10,000 ft — likely the clean (flaps-up) cards, per fly order
Power-off, later series~48 KIASthree events, 48.0–48.7, idle/low power — likely the full-flap cards, per fly order
Power-on (departure)55–59 KIAS16–18″ MAP / ~2,500 RPM, +14 to +18° pitch — verified from engine data

A word on how those rows are labeled, because honesty matters more than tidiness. The flap-position sensor is one of the program’s open squawks — this flight’s log records raw counts from −521 to +9, which is to say, nothing usable — so no row above can claim a data-verified flap setting. What the data does verify is power: the engine channels cleanly separate five power-on breaks (16–18 inches of manifold pressure, 2,500 RPM, nose up +14° or more) from seven power-off breaks at or near idle. The flap attribution rests on the card fly order — the clean stalls were scheduled before the full-flap ones — plus a physics cross-check: flaps lower the stall speed, and sure enough the later power-off series broke a good seven knots slower than the earlier one. Likely, not proven, until the new flap sensor goes in.

The numbers also pass the placard test once you account for weight. The placarded stall speeds at gross are about 61 knots clean and 52 with full flaps; stall speed scales with the square root of weight, and this was one pilot and partial fuel, far below gross. Scale the placard numbers down and you land almost exactly where the airplane did: high-50s breaks for the (likely) clean series, 48 for the (likely) full-flap series. The G-trace adds one more correction — the breaks happened partially unloaded, 0.74–0.88 G, which reads lower still. And through all of it the airplane behaved: buffet warning, a straight-ahead break, conventional recovery, every time.

FlySto’s pitch trace makes the hour of stall work visible at a glance — every tooth in that comb is a nose-up walk toward the break and the nose-drop after it, and the tall +14 to +18° peaks late in the block are the power-on series, right on the card’s target attitudes:

FlySto pitch chart for Flight 13 — repeated pitch-up/break cycles through the stall block
FlySto’s pitch chart for Flight 13 — every tooth in the comb is one stall cycle; the +14–18° peaks are the power-on series.

One more layer from Flight 11’s calibration work: at these speeds the airspeed indicator reads about a knot and a half low, so calibrated break speed is closer to 49–50. Every knot of that bookkeeping matters when these numbers eventually set the approach speeds.

Can You See the Buffet in the Data?

The pre-stall buffet is unmistakable in the seat — the airframe starts talking to you well before the break. A fair question is whether the data logger hears it too. The answer: yes, faintly. The G3X logs at 1 Hz, and real airframe buffet shakes at several cycles per second or more, so the log catches only an aliased, heavily muted echo of what the pilot feels. But it’s there: in eleven of the twelve stall events, the roughness of the normal-acceleration trace climbs to two to five times its smooth-air baseline in the final seconds before the break.

One Flight 13 stall entry: IAS decay, G-trace roughening in the buffet, the break, and the recovery
One stall entry from the block — airspeed bleeding down, the G trace fraying in the buffet window, the break, and the recovery.

The chart above is one entry from the block: airspeed bleeding down, the G trace starting to fray in the shaded buffet window, the drop at the break, and the firm recovery pull after. The amplitudes look small — a few hundredths of a G — but remember the sampling: the cockpit experience is a much louder version of what survives into a once-per-second log.

Engine: Leanest Cruise Yet, and a Plot Twist in the CHTs

The mixture story keeps marching: median cruise fuel flow was ~11.5 gph, the leanest of the program — a long way from the 18–23 gph full-rich break-in flights.

FlySto CHT chart for Flight 13: all six cylinders vs time with color bands
FlySto’s CHT chart for Flight 13 — one climb-out peak brushing the caution band, then a busy green-band sawtooth through the stall work.

The FlySto chart shows the whole flight: one hot moment on the climb-out where the pack peaks just over 420 °F, brushing the caution band, then a busy, healthy green-band sawtooth as the stall work cycles power up and down for an hour. The plot twist is which cylinder topped the chart: cylinder 2 at 422 °F — not cylinder 5, the climb-cooling canary from the last three flights (it logged 419). One warm-day flight isn’t a trend, but the ranking shuffle is noted and goes in the watch file.

The CO Detector Read Zero — Which Is Suspicious

Cabin CO logged 0 ppm for the entire flight. Taken at face value that would be the best result of the program — but every slow-flight-heavy flight from 6 through 12 showed at least a few ppm, and this was the most aggressive high-AoA profile yet. A sensor that suddenly reports perfect silence on exactly the profile that always made it talk is more likely asleep than victorious. Verifying the detector is on the squawk list; until then, this flight’s CO data gets an asterisk, not a trophy.

Also On This Flight

  • A freshly overhauled attitude unit went into the panel the day before this flight — and through an hour of stalls and high-AoA work, the attitude display never so much as twitched. By my count that makes this the first flight in the airplane’s life with no attitude-horizon tumble — the cross-source roll disagreement that hit ~136° the day before stayed under 10° through all of it, and it has stayed that way since. (The story has a sequel brewing: the #2 attitude source has started miscomparing against the newly healthy #1.) The full saga, and the data behind it, is getting its own post.
  • Manual flying practice: about an hour of the flight was hand-flown — stall work is hand-flying by definition, and the autopilot got the cruise legs.

Squawks

  • Accelerated/turning stall card not flown — carried forward to a future sortie.
  • CO detector read zero all flight — verify it’s actually alive before trusting the result.
  • Flap position indication still broken — and it stings more on a flight like this one, because it leaves the stall-speed-versus-configuration record resting on the card sequence and pilot recollection instead of data. Replacement sensor is on the parts list.

Bottom Line

Flight 13 closed out the bread-and-butter stall series: power-off breaks walking down from the high 50s to 48 knots indicated as the flaps (most likely) came out, power-on breaks in the high 50s — all of it right where the placard predicts once you do the weight math — honest manners throughout, and a new program-high 12,069 feet. The engine ran its leanest cruise yet, cylinder 2 stole the hot-cylinder crown for a day, and the CO detector’s perfect silence earned suspicion instead of celebration. One card carries forward, and the stability data is in the can awaiting analysis. The envelope is opening up.

Engine time after Flight 13: 18.3 hours.

N997CZ — Flight 12: Slow Flight at 9,500 Feet

Ground track for N997CZ Flight 12 over the Phase 1 test area
Ground track for Flight 12 over the Phase 1 test area.

Flight 11 was a marathon — two and a half hours of precision circles for the airspeed calibration. Flight 12, six days later, was the opposite kind of flight: shorter, higher, and slower. The plan was to start working through the stability test cards, and the headline act was a slow-flight series flown higher than this airplane had ever been.


The Numbers

Date2026-06-06
Engine time~1.5 hr
Distance156.5 nm (GPS path)
Fuel used18.5 gal (totalizer)
Engine hours14.8 → 16.2
Max altitude9,535 ft GPS — highest of the program (so far)
Cruise OAT+58 °F (mild morning, ~13 °F warmer than F11)
Autopilot~94% of airborne time (more on that below)
Config7 qt oil; burn well under one tank, no tank switch

Climb High, Fly Slow

The idea behind doing slow flight way up high is simple: altitude is recovery margin. If the airplane is going to do something rude at high angle of attack, I’d rather it do it with 9,000 feet underneath me than 3,000.

Flight 12 altitude and indicated airspeed vs time, with the slow-flight series shaded
Altitude and indicated airspeed vs time — the shaded block is the slow-flight series at 9,100–9,500 ft.

The profile chart shows the shape of the flight: climb out of Manassas, work in the mid-8,000s, then push up to the program-high 9,535 feet and settle into about thirteen minutes of slow-flight work between 9,100 and 9,500 feet. The red trace tells the story — a string of deliberate decelerations, each one walked down slowly, held, and recovered, over and over. The slowest stabilized point was about 56 KIAS at 9,145 feet.

That block wasn’t all straight-ahead slow flight, either. Working down the stability card deck — the FT-12/FT-13 card set is here (PDF) — the points included longitudinal static-stability checks at 55% power (trim the airplane, displace 10 and then 20 knots either side of trim, and watch how it comes back), flaps-up power-off stalls banked both ways at 10°, 20°, and 30° of bank, and a set of power-on stalls at 55% power. The power-on stalls turned out to be the interesting ones — more on that next.

Remember from Flight 11 that the airspeed indicator reads a knot and a half or so low down at these speeds — so true calibrated speed at that 56-knot point was around 58, and true airspeed at that altitude meaningfully higher still. The margins were real, which is the whole point of doing this work upstairs.

The Autopilot Kept Tapping Out

One genuinely interesting system behavior surfaced during the slow-flight series: the G3X autopilot repeatedly dropped offline with a “Fail / Inertial miscompare” annunciation, then re-engaged — about four minutes of dropouts across seventy airborne minutes, and the trigger was specific: the power-on stalls. It wasn’t just the autopilot being cautious, either — the attitude horizon itself tumbled several times during those stalls. In the data, the disagreement between attitude sources reached roughly 136° of roll — the worst cross-source split of the entire program. Outside the high-AoA block the autopilot was rock solid; it flew about 94% of the airborne time.

“Inertial miscompare” doesn’t mean the system knows which attitude source is lying. Per the G3X installation manual, data from the two ADAHRS units is continuously cross-compared and a disagreement is simply annunciated — the system flags the mismatch and lets the pilot sort it out. (Interestingly, the G5 standby only joins the comparison if the system has degraded to a single ADAHRS, so there’s no three-way vote while both primary units are alive.) Figuring out which unit is actually bad happens one level down: each ADAHRS runs its own internal integrity monitoring, and a unit that loses confidence in its own solution drops it and re-aligns — at which point the system switches over to the survivor. Long-time readers will recognize this as the ADAHRS-deviation theme that’s been running since the first five flights — it gets provoked by exactly this kind of high-AoA, low-airspeed maneuvering. The decision coming out of this flight’s debrief: change out AHRS #1 and see what the data says. The replacement unit went into the panel that same day. That story deserves its own post.

Carbon Monoxide: Best Slow-Flight Result Yet

This one is encouraging. Every slow-flight-heavy flight since the CO detector went in has shown cabin CO in the 5–10 ppm range, consistent with the firewall heat-door leak theory. Flight 12 was the most slow-flight-intensive profile yet — and CO stayed benign: peak 5 ppm, mean 0.5.

Cabin CO across all twelve flights
Cabin CO across all twelve flights — Flight 12 is the cleanest slow-flight result since the detector went in.

Two honest caveats. First, the log shows a scary-looking 250 ppm spike — that’s the CO detector’s power-up warmup transient, recorded in the first ~50 seconds on the ground with the engine off, decaying steadily as the sensor warms. It’s a self-test artifact, not cabin air. (The trend script now auto-discards it.) Second, since I still haven’t flown the deliberate tape-the-heat-doors test, a quiet flight doesn’t tell me the leak is fixed — just that this profile, on this cool morning, didn’t pull much exhaust in. The isolation test stays on the list.

The Cylinder 5 Canary: Holding, Not Climbing

The air-dam saga continues, with a hopeful data point. Recap: before Flight 10 I removed the cooling air dam in front of cylinder 1, which fixed #1’s chronic heat but started costing cylinder 5 in the climb — its temperature-adjusted peak climb CHT marched 401 → 410 → 427 °F across Flights 9–11.

FlySto CHT chart for Flight 12: all six cylinders vs time with normal/caution/limit color bands
FlySto’s CHT chart for Flight 12 — all six cylinders (raw temps) with the comfort bands painted behind them.

Here’s the whole flight at a glance, as FlySto renders it from the G3X log — all six cylinders, raw temperatures, with the comfort bands painted behind them. The climb-out spike just after takeoff is the hot moment of the flight, topping out around 407 °F, and everything spends the rest of the sortie comfortably in the green. You can even see the slow-flight series as that choppy stretch in the middle, and the brief dip to ~260 °F right before it — the power-off deceleration entries.

Flight 12: 408 °F. Still the hottest cylinder in the climb, but it fell back to roughly the Flight-10 level instead of continuing to rise — helped, no doubt, by climbing into cooler air up high. Meanwhile cylinder 1 keeps enjoying its freedom: coolest jug on the engine, with cruise temperatures (OAT-adjusted) down around 327 °F. Cruise CHTs across the board were the lowest of the program — the reward for flying high in cool air. Verdict: the canary is alive but still in the mine. Watching.

Fuel: The Totalizer Earns Its Keep Again

A small satisfying footnote. The totalizer said the flight burned 18.5 gallons; the fuel truck that topped the airplane off twenty minutes after shutdown delivered 18.30 gallons. That’s agreement to 0.2 gal, and it keeps the program-long truck-versus-totalizer reconciliation within a fraction of a gallon. The fuel-flow system has earned trust the fuel-quantity gauges haven’t (the right float is still stuck — see squawks).

Cruise mixture ran richer than Flight 11 — about 15.5 gph against 14.5 — mostly because I spent the flight flying maneuvers instead of babysitting the red lever.

Squawks

  • Flap position sensor broke again — the May 31 workaround (remounting the worn pot to ride the healthy end of its range) didn’t hold, and this time the failure ran the other way: it wouldn’t let the flaps come up. On Flight 11 the same sensor had refused to put them down, forcing a no-flap landing. Two flights, two opposite refusals — enough. The fix chosen: reconfigure the VP-X so the flap switch works as momentary — hold the switch and the flaps drive up or down, no listening to the position sensor at all. (Since completed, with Dan’s laptop hooked to the VP-X.) The replacement for the 20-year-old Ray Allen pot stays on the parts list.
  • VP-X pitch and roll trim speeds need to come down — trim runs too fast.
  • AHRS attitude tumble / inertial miscompare under the power-on stalls — see above; next step chosen: swap AHRS #1.
  • Right fuel-quantity float still stuck (known item; totalizer is the authority).
  • Heat-door CO isolation test still not flown — benign CO this flight is encouraging but inconclusive.

And two items came off the list before this flight, in a Friday repair session: the upside-down left magneto switch from the Flight 11 squawks, and the remaining flap close-out work.


Bottom Line

Flight 12 took the airplane higher than it had ever been and slower than it usually flies, in the same thirteen minutes. The slow-flight handling was honest, the CO behaved, the cylinder 5 canary stopped climbing, and the totalizer matched the fuel truck to a couple tenths. The one system that complained — the autopilot’s inertial miscompare under high AoA — is the same attitude-source thread this airplane has been tugging since flight one, and it was about to get a lot more attention.

Engine time after Flight 12: 16.2 hours.

N997CZ — Flight 11: A Multi-Speed Airspeed Calibration

Ground track for N997CZ Flight 11 over the Phase 1 test area, with the DAR-approved pentagon boundary (KFRR–KHEF–KXSA–KFVX–KSHD) and landing airports marked, on OpenStreetMap tiles
Ground track for Flight 11 over the Phase 1 test area, with the DAR-approved pentagon boundary and landing airports marked.

Most of the flights so far have been about finding problems — a CHT that ran hot, an ADAHRS that wouldn’t behave, carbon monoxide where there shouldn’t be any. Flight 11 was different. This one had a single, deliberate job: figure out how honest the airspeed indicator actually is, across the whole speed range, in one sortie.

It turned into the longest flight on the airplane so far, and it produced the cleanest dataset I’ve collected yet. It also made me go back and admit I’d gotten an earlier piece of analysis wrong. More on that below.


The Numbers

Date2026-05-31
Engine time~2.5 hr (longest flight to date)
Distance285.6 nm (GPS path)
Fuel used30.4 gal (totalizer)
Engine hours12.4 → 14.9 hr
Cruise altitude~6,500 ft
Cruise OAT+45.5 °F (cool morning)
Autopilot~64% of the flight
Configflaps up throughout — including, it turned out, the landing; 7 qt oil

Thirty-plus gallons through the totalizer is more than one tank holds (30 gal/side), so this was a mid-flight tank-switch flight — only the second one in the program. Everything stayed comfortably inside the test-area boundary you can see in the opening image; the cluster of little boxes and circles southwest of Culpeper, up around Louisa, is where all the calibration work happened.


The Purpose: Why Fly Circles at Eleven Different Speeds

The airspeed indicator shows IAS — indicated airspeed, the raw pitot-static reading. What you actually want for performance numbers is CAS (calibrated airspeed, with the airframe’s position error removed) and ultimately TAS (true airspeed). The gap between IAS and CAS — the position error — depends on where the static port sits, how the air flows around the fuselage, and it often changes with speed. A system that’s nearly perfect at cruise can be a few knots off in slow flight, which is exactly where you care most.

My two earlier calibration points (Flights 7 and 9) were both stuck around 145–148 KIAS, because that’s just where the airplane happened to be when I had clean data. Flight 11 was the flight to fix that — to deliberately hold a series of different indicated airspeeds, all the way from cruise down to near stall, and measure the error at each one.

How I flew it. The trick to measuring true airspeed without a calibrated airspeed reference is to let GPS do the work. If you fly a full 360° at a constant indicated airspeed, your GPS ground-velocity vectors trace out a circle: the radius of that circle is your true airspeed, and the center is the wind. No compass, no assumptions — just geometry.

So I flew a stack of constant-IAS loops at ~6,500 feet:

  • First half — autopilot, heading bug walked around the cardinals, stepping down: 154, 139, 119, 98, 94 KIAS.
  • Second half — autopilot again, stepping back up: 130, 138, 144, 150, 155 KIAS.
  • Then, hand-flown — the autopilot won’t hold below about 95 knots, so I clicked it off and flew the slow ones by hand: 89, 82, 75, 71, and 66 KIAS.
Flight 11 chopped into constant-IAS segments, ground track colored by airspeed, with the transitions between segments in gray
Flight 11 chopped into constant-IAS segments — ground track colored by airspeed, transitions in gray.

After the flight, the data-reduction problem was just chopping that long log into the individual stabilized-airspeed loops — fourteen of them, from 66 to 155 KIAS — and trimming each one down to the clean, full-circle, constant-speed portion. Then each loop gets its own GPS circle fit.


The Airspeed Results

Here’s the headline, and it’s not what I expected: the airspeed indicator reads low. The airplane is genuinely flying a couple knots faster than the dial shows — a little at slow speed, and about three knots at cruise.

Airspeed-system position error vs IAS for Flight 11, with the recomputed Flights 7 and 9 points, from the GPS circle wind solve
Position error vs IAS for Flight 11, with the recomputed Flights 7 and 9 points.

Position error (IAS minus the GPS-derived calibrated airspeed) at each tested speed:

IAS (kt)Position error (kt)Reads…
66−1.8low
71−1.7low
75−1.5low
82−1.8low
89−1.5low
94−2.8low
119−3.5low
130−3.2low
138−3.2low
144−2.7low
150−3.4low
154/155−3.0 / −2.9low

So roughly −1.5 to −1.8 kt down in the slow-flight band, growing to about −3 kt in cruise. The circle fits were tight — RMS residuals of 0.4 to 1.6 knots — and the wind solution came out consistent across every single loop (8–14 kt out of the northwest), which is a nice internal sanity check: if the loops were sloppy, the winds wouldn’t agree.

Practically, this is good-news-bad-news. It means your true cruise and climb speeds are a hair better than the panel suggests. It also means that on final approach, when the indicator says 80, you’re really doing about 81–82 — worth knowing, not alarming.

The part where I was wrong

When I wrote up Flights 7 and 9, I concluded the pitot-static system was “essentially clean — basically zero position error in cruise.” That was wrong, and the error was mine.

Converting GPS true airspeed back to calibrated airspeed requires the air density ratio, and the formula I’d used computed it incorrectly — it was effectively using the pressure ratio at standard temperature instead of the actual density ratio. I caught it while setting up Flight 11’s analysis, checked the corrected formula against the standard-atmosphere tables (it matches exactly now), and reran everything.

With the fix, those two old cruise points come out to about −2.9 and −3.9 kt — right in line with Flight 11’s cruise cluster. And it resolved a puzzle that had been bugging me: previously the indicator looked perfect but the G3X-computed true airspeed read 3–4 knots low, which made no physical sense — they should move together. With the corrected density ratio they do move together, because there’s just one error: the static system reads a little low, and that propagates into both the indicated and the computed-true airspeed. One bug, two symptoms.

Can I just fix it in the avionics?

Short answer: no. I went looking for a place in the G3X to enter an IAS-to-CAS correction and checked the installation manual to be sure. The G3X Touch has a “Zero-Airspeed Calibration” (a zero-point/sensor-noise step), but no facility to load a position-error curve. So this ~2–3 kt isn’t something I can dial out in the box — it’s a known characteristic of the airframe, to be handled with awareness and maybe a small placard. CAS ≈ IAS + ~2–3 kt in cruise. Done.


Also On This Flight

A calibration sortie is a long time at altitude, so a few other threads picked up data along the way:

  • Cylinder cooling. Before Flight 10 I removed the cooling air dam in front of cylinder 1, which cooled #1 nicely but looked like it might be starving cylinder 5 (the rearmost on that bank) of climb cooling. Flight 11 confirmed it: temperature-adjusted, the peak climb CHT on #5 has now climbed 401 → 410 → 427 °F over the last three flights, and #5 is now the hottest cylinder in the climb. Cruise is unaffected — it’s purely a climb-cooling cost. That’s a watch item.
  • Carbon monoxide. Still there. Peak ~9 ppm, showing up during the slow-flight portions, consistent with the firewall heat-door leak I’ve been chasing. The tape-the-heat-doors test still hasn’t been flown.
  • Mixture. This was the leanest cruise yet (~14.5 gph), continuing to lean out as I dial in the engine.
  • Autopilot. I bumped up both the roll and pitch servo max-torque settings in flight to firm up how it tracks — useful while flying precise boxes.

A No-Flap Finale

The flight ended with an unplanned test point. Coming home, when I selected flaps for landing, nothing came down: the flap position sensor had gone haywire in a way that made the VP-X — which drives the flaps based on that sensor’s feedback — refuse to run them. I only pieced that together late in the landing sequence, around the base-to-final turn, which is a poor place to start troubleshooting. There were two good outs available: the VP-X allows manual flap control from an on-screen override on the MFD, and a go-around was on the table the whole time. With the runway made and the airplane stable, I took the third option — keep flying the clean airplane I’d been flying all morning and make a no-flap landing. It was a non-event: carry a few extra knots, use a little more runway, and move the troubleshooting to the ground, where it belongs.

The diagnosis: the Ray Allen POS-12 flap position sensor — a 20-plus-year-old hand-me-down from our RV-7 — has a potentiometer worn out at one end of its range. I remounted it to ride on the healthy end of its travel, which brought it back to life for now, but a sensor that old and probably full of dust has earned retirement: a replacement went straight onto the parts list. (Spoiler from the squawk file: this story isn’t over.)

Squawks

  • Flap position sensor failed in flight — see “A No-Flap Finale” above. It didn’t touch the calibration data (the whole profile was flown flaps-up), but it did decide how the flight ended. Replacement sensor on the parts list.
  • Left magneto switch is installed upside down.
  • Fixed before the flight: a loose bolt on the left flap (a mechanical item, separate from the indication problem above).

Bottom Line

Flight 11 was the airplane’s longest flight, its cleanest dataset, and the one that finally mapped airspeed error across the whole envelope: the indicator reads about a knot and a half low slow, about three knots low at cruise, and there’s nothing to fix in the avionics — just something to know. It also cost me a little humility, since getting there meant finding a mistake in my own earlier math — and a no-flap landing, courtesy of a worn-out sensor. That’s flight test: the airplane keeps you honest, and so does the arithmetic.

Engine time after Flight 11: 14.9 hours.

N997CZ — Dynamic Prop Balancing: 0.57 IPS Down to 0.01

After the first five flights it was clear that N997CZ was sitting on more vibration than I wanted. The most visible symptom was the ADAHRS percent-deviation values logged by the G3X — they were chronically high during cruise on every one of the first five flights, and Garmin tech support had pointed out that high deviation values are often a sign that the attitude solution is fighting more vibration than it wants to. So when the airplane went into the hangar for the 25-day maintenance gap between Flight 5 and Flight 6, dynamic propeller balancing was one of three jobs on the list (alongside the CAN bus rewire and the left fuel-gauge float fix).

This is the story of that balance.

What dynamic propeller balancing actually is

Static balance — the kind you can do with the prop off the airplane on a balance stand — gets the prop to the point where it doesn’t have a preferred resting position. Dynamic balance is the next step: it deals with the residual imbalance that only shows up when the engine and prop are running at their actual operating RPM, with the actual installed combination of crank, flywheel, starter ring, spinner, and prop all spinning together as one mass.

The DynaVibe Classic balancer (RPX Technologies) does it with two sensors:

  • An accelerometer bolted to the top of the engine case, “as far forward as possible for maximum sensitivity… mounted vertically, perpendicular to piston travel.” The standard technique is to pull one of the case bolts along the top of the engine and reinstall it through the bracket that holds the accelerometer.
  • An optical pickup mounted on the same bracket, “approximately six inches behind the back of the propeller,” with its beam aimed at a small piece of reflective tape stuck to the back of the spinner backplate or starter ring. The optical pickup gives the balancer a once-per-revolution timing reference so it can tell the balancer not just the magnitude of the vibration but the angular location of the heavy spot.

(Quotes are from the DynaVibe Classic User Manual v1.09.)

With those two sensors hooked up, you start the engine and run it up to a steady cruise RPM — around 2,100 RPM in our case for the Lycoming IO-540. The balancer reads out two numbers: the vibration magnitude in inches per second (IPS), and the clock-angle of the heavy spot measured against the reflective-tape index. Then you stick trim weights opposite the heavy spot, run it again, see whether the magnitude dropped and where the new heavy spot ended up, and iterate.

The DynaVibe puts the result on a clear scale:

DynaVibe Dynamic Propeller Balancer form, showing the IPS magnitude scale: Extreme (≥1.25), Rough (0.25–1.00), Fair (0.15–0.25), Good (0.07–0.15), Excellent (0.04–0.07), Perfect (0.00–0.04). Polar chart for marking heavy-spot location.

The bands: Perfect under 0.04 IPS, Excellent through 0.07, Good through 0.15, Fair through 0.25, Rough all the way up to 1.00, Extreme above that. Anything in the Good band or better is acceptable for general aviation; Excellent or Perfect is the target if you have the time and patience to chase it.

Trim-weight construction

The trim weights on this airplane go on the starter ring gear, which has twelve bolt holes spaced every 30°. We assembled the weights out of standard hardware: AN4 bolts in various lengths, AN4 washers, and AN4 lock nuts. AN4 is a ¼”-diameter aircraft bolt; the dash number is the length in eighths of an inch — so an AN4-7 is ¼” × ⁷⁄₈” long, an AN4-10 is ¼” × 1¼”, an AN4-13 is ¼” × 1⅝”, and so on.

The catch: each bolt has limited thread engagement for the lock nut, so you can only stack about one or two washers on a given bolt before you have to step up to the next longer bolt size. Bumping the bolt up a length adds the equivalent of a washer or so of weight all on its own, which gives the balancing procedure a slightly quantized feel — you’re not adding weight continuously, you’re adding it in discrete steps of either a washer or a bolt-length-bump.

The session — twelve runs, eleven adjustments

Initial run, before any trim weights were added: 0.57 IPS at 345° at 2105 RPM. Solidly in the Rough band.

What follows is the entire in-hangar log:

Handwritten iteration log from the prop balance session: starting at 0.57 IPS @ 345° and converging through twelve trim-weight adjustments to a final reading of 0.01 IPS at 350°.

Decoded as a table — each row is one measurement, the “Fix applied” column is what we added or changed between this run and the next, and the rightmost column is the running weight state the airplane was carrying when the next measurement was taken:

#RPMIPSHeavy spotFix applied for next runRunning weight state after fix
1 (bare prop)21050.57345°AN4-7 + nut + 1 washer at 180°180°: AN4-7 N+W
221440.34334°AN4-7 + nut + 1 washer at 150°180°: AN4-7 N+W · 150°: AN4-7 N+W
321350.23322°Upgrade 150° to AN4-10 + nut + 2 washers180°: AN4-7 N+W · 150°: AN4-10 N+2W
420960.22329°150°: AN4-10 → AN4-11; washers 2 → 4180°: AN4-7 N+W · 150°: AN4-11 N+4W
521040.15335°One more washer at 150° (bolt stays AN4-11)180°: AN4-7 N+W · 150°: AN4-11 N+5W
620820.13339°150°: AN4-11 → AN4-12; washers 5 → 6180°: AN4-7 N+W · 150°: AN4-12 N+6W
720800.09340°180° → AN4-10 N+W; 150° adds washer → AN4-12 N+7W180°: AN4-10 N+W · 150°: AN4-12 N+7W
821000.10346°Add washer at 180° → AN4-10 N+2W180°: AN4-10 N+2W · 150°: AN4-12 N+7W
920840.09323°150°: AN4-12 → AN4-13; washers 7 → 8180°: AN4-10 N+2W · 150°: AN4-13 N+8W
1020820.08316°One more washer at 150° → AN4-13 N+9W180°: AN4-10 N+2W · 150°: AN4-13 N+9W
1121090.06307°Add a thin (half) washer at 150° → AN4-13 N+9.5W180°: AN4-10 N+2W · 150°: AN4-13 N+9.5W
1220770.01350°Done — achieved 0.01 twice with DynaVibe averaging (the instrument floor)Final installed: 180°: AN4-10 N+2W · 150°: AN4-13 N+9.5W

A couple of things worth noting from the table:

  • The heavy-spot angle moved around the clock as the magnitude came down. It started at 345°, walked counterclockwise to 307° by step 11, then jumped to 350° on the final run. Once you’re in the Good / Excellent range, the angular position is increasingly noise-dominated — small changes in RPM, OAT, or run-to-run engine settling can shift the indicated heavy-spot by tens of degrees while the magnitude barely moves.
  • The step backward at #8 (0.09 → 0.10) is the classic instrument-floor signature. When you’re under ~0.1 IPS, the noise floor of the balancer is comparable to the imbalance you’re trying to chase, and small runs that look like regressions are usually just measurement scatter. We worked through it and kept converging.
  • The final two readings used the DynaVibe’s averaging mode — it takes multiple-revolution samples and reports a stable mean. We saw 0.01 twice in a row in that mode, which is essentially the floor of the instrument. Calling it done was an easy decision.

The convergence as a polar “bullseye” plot — each dot is one measurement, walking from the Rough band on the outer edge in toward Perfect at the center:

Polar convergence chart of the 12 balance measurements. Concentric bands show the DynaVibe IPS categories (Rough / Fair / Good / Excellent / Perfect). Dots are color-coded from red (first measurement, 0.57 IPS) through green (final, 0.01 IPS), connected by a path showing the order of measurements. Each dot is annotated with its measurement number, IPS value, heavy-spot angle, and the trim-weight configuration that was in place when that measurement was taken.

End to end the magnitude trended:

0.57 → 0.34 → 0.23 → 0.22 → 0.15 → 0.13 → 0.09 → 0.10 → 0.09 → 0.08 → 0.06 → 0.01 IPS.

Twelve runs, eleven trim-weight changes, the better part of an afternoon, and the airplane went from Rough to Perfect. A ~57× reduction in cruise vibration magnitude.

What it bought me in flight

The whole point of doing this was to clean up the ADAHRS environment. The G3X logs the ADAHRS percent-deviation on every flight for all three units — the two GSU 25C ADAHRSes on the sub-panel, and the G5 standby on the main panel — so the question was whether the flight-after-flight median deviation actually came down once the prop was smooth.

It did:

Bar chart of median and 95th-percentile ADAHRS deviation across all 10 N997CZ flights, for ADAHRS #1, ADAHRS #2, and the G5 standby. A vertical dashed line at F5.5 marks the dynamic prop balance. Pre-balance medians cluster at 80–115%; post-balance flights F7–F9 drop into the 18–58% range.

Each panel is one ADAHRS source: the two GSU 25Cs and the G5 standby. The dashed vertical line is where the prop balance happened — between Flight 5 and Flight 6. Median deviation values pre-balance hovered in the 80–115% band across all three units. The first post-balance flight (F6) was a short low-altitude shakedown and showed only modest improvement, but F7 through F9 — the first three flights at altitude after the balance — settled into the 18–58% band. Median deviation roughly halved on the GSU 25Cs and dropped by nearly 75% on the G5.

That last detail — that the G5 showed the biggest relative improvement — fits the geometry: the G5 lives on the main instrument panel, further aft from the firewall and the engine, with more structural compliance in the path between it and the source of the vibration. With the engine vibration that was reaching it now ~57× smaller, the residual deviation on that unit is dominated by other sources, and those sources are small.

What it didn’t fix

The thing dynamic prop balancing does NOT fix is the takeoff tumble — the PFD #1 attitude going upside down on the takeoff roll, every flight, 1–11 seconds after takeoff power application. That phenomenon was the original reason I started looking at ADAHRS data, and it has persisted unchanged through both the CAN bus rewire and the prop balance. Once two of the three leading environmental suspects (CAN noise, engine vibration) have been ruled out, what’s left is the GSU 25C hardware itself, and that’s now an open Garmin case against Service Bulletin SB 2144. (More on that in a future post.)

The takeaway

If you’ve got an experimental airplane with a fresh engine/prop install and you haven’t done a dynamic balance yet, it is — based on this single data point, take it with appropriate salt — worth the afternoon. The before/after on cabin feel is obvious, the before/after on ADAHRS deviation is measurable, and getting into the Excellent or Perfect band is achievable with patience and trim washers.

Twelve runs. Rough to Perfect.

N997CZ — The Phase 1 Test Area: Five Boundary Corners, Six Landing Airports

Composite ground tracks for N997CZ Flights 1 through 10 with the Phase 1 test area pentagon overlay. Green dots are airports where N997CZ is approved to land; red dots are boundary corners where landing is not approved.
N997CZ Flights 1–10, color-coded, overlaid on the Phase 1 test-area pentagon. Green dots are airports where I’m approved to land; red dots are boundary corners where I am not.

Every experimental amateur-built airplane has to do its first few dozen hours of flying inside a defined geographic test area. That’s a Phase 1 requirement, written into the aircraft’s operating limitations and signed off by the FAA’s Designated Airworthiness Representative (DAR) when the airplane is issued its airworthiness certificate. You can fly anywhere you want inside the area; you can’t fly outside it until Phase 1 is complete.

I went into the conversation with my DAR with an ambitious proposal: twelve airports scattered across central Virginia, several of them anchoring the boundary of the test area and all of them on the approved landing list — places I could put the airplane down on a runway if anything went wrong. The DAR took a look and came back with a constraint from the FAA: the approved landing list had to be reduced to no more than six airports. Twelve was too many; six was the cap.

So we kept the boundary pentagon and pared the landing list down. Two of those concepts are now separate:

The boundary — the pentagon that encloses the test area — is defined by five waypoints:

  • KFRR — Front Royal-Warren County (NW corner)
  • KHEF — Manassas Regional (NE corner, my home base)
  • KXSA — Tappahannock-Essex County (SE corner)
  • KFVX — Farmville Regional (S corner)
  • KSHD — Shenandoah Valley Regional / Staunton (W corner)

The landing list — the six airports where I’m actually approved to put the airplane down — is six airports, three of which happen to also be on the boundary:

  • KHEF Manassas (boundary + landing)
  • KFVX Farmville (boundary + landing)
  • KSHD Shenandoah Valley (boundary + landing)
  • KHWY Warrenton-Fauquier (interior landing)
  • KCJR Culpeper Regional (interior landing)
  • KCHO Charlottesville-Albemarle (interior landing)

All six show up on the map as green dots. The remaining two boundary corners — KFRR (Front Royal) and KXSA (Tappahannock) — are red dots: they help define the shape of the test area, but I’m not approved to land there.

The constraint behind all of this came from a rule of thumb the DAR worked through with me: at the airplane’s cruise speed (~160 kt), I should be able to reach a runway within roughly a 30-minute leg. Thirty minutes at 160 knots is 80 nautical miles, and the six landing airports we kept are positioned so that no point inside the pentagon is more than that 80-nm window from one of them. That’s a reasonable margin while the engine is still breaking in.

The map at the top of this post overlays all ten Phase 1 flights so far on that pentagon. You can see how much of it I’ve actually been using: the first six flights (F1–F6) stayed close to KHEF — local pattern work and the early shakedown profiles. Starting with F7 I pushed out toward the Casanova / Culpeper practice area in the western part of the pentagon, and F8 / F9 / F10 all worked roughly in the same neighborhood. Most of the pentagon’s southern reach is still unflown.

There’s a lot of test card left to fly inside this shape, and plenty of room to do it.

N997CZ — Flights 5 Through 10: A Catch-Up Post

Composite ground tracks for N997CZ Flights 5 through 10, color-coded by flight, on OpenStreetMap tiles
Composite ground tracks for N997CZ Flights 5 through 10 — KHEF marked with a star, each flight color-coded.

I owe the blog about six flights. Some of that is because I’ve been heads-down on the actual flying, some because every flight in this stretch turned up at least one new thing worth investigating, and some because the bigger investigations — the CAN bus rewire, the AHRS situation, the CHT data — kept demanding their own dedicated posts.

So rather than try to retroactively write six separate Flight N posts, here’s a single catch-up running from Flight 5 through Flight 10, hitting the headline from each. The dedicated deep-dive posts cover the analysis side; this is the chronology.


The Numbers

FltDateFlt hrsCyclesFuel (gal)Dist (nm)Total hrs
52026-04-191.4421.3155.36.0
62026-05-141.3519.1149.17.4
72026-05-151.7619.4169.38.9
82026-05-161.1712.096.69.8
92026-05-171.7823.3230.111.4
102026-05-201.0811.7104.212.4

Eight engine hours of additional flight time across six flights. About 900 nautical miles flown. ~107 gallons burned. From ~6 engine hours coming into this batch to ~12.4 out of it. Phase 1 on this airplane is a flight-test-card program, not a fixed-hours one — we work through the required test cards rather than counting down to a hard hours limit — but the experimental Lycoming IO-540 with the SDS electronic ignition would put a 40-hour floor on Phase 1 even if we were counting hours. So 12.4 engine hours is early in the program, not midway.


Flight 5 — April 19. The Last Flight of “Phase 1A.”

1.4 engine hours · 21.3 gal · 155 nm.

Ground track for Flight 5 — local pattern work near KHEF
Flight 5 — local pattern work near KHEF.

Flight 5 was a per-cylinder CHT survey at altitude — methodical, mostly uneventful, and the last flight in what I now think of as Phase 1A: the batch of early flights that locked in the questions we’d spend the next month answering. I used roughly 13 gallons out of the left tank and landed needing a top-up — a fine reminder that I needed to start trusting the totalizer more and the gauges less.

The other thing F5 made clear was that the ADAHRS deviation problem was real and reproducible, not a Flight 1 fluke. PFD #1 tumbled on the takeoff roll, percentage-deviation values were spiking high, and the pattern matched the four flights before it. Time to stop flying and start fixing.


The Maintenance Gap — April 19 to May 14

Twenty-five days on the ground for what turned out to be three separate jobs:

  • CAN bus rewire — completed May 13. The Garmin G3X harness was both over-length (~96.5 ft total vs Garmin’s 66 ft max) and built with the wrong wire (standard aircraft shielded twisted pair instead of 120 Ω spec cable). New harness: 57.7 ft of Carlisle IT CAN24TST120(CIT). Full writeup is here.
  • Dynamic prop balance — went from 0.57 IPS down to 0.01 IPS. That’s a ~57× reduction. The engine cowl is now noticeably calmer in the air.
  • Left fuel-gauge float reoriented — the left tank gauge had been reading frozen high since first fueling. Root cause turned out to be the float-arm wire positioning the float too close to the tank’s interior ribs / baffle, where it would get physically stuck. The 2025 Van’s plans update shows a different way to bend the float-arm wire that orients the float more laterally and gives it more clearance to move up and down. Implementing that new bend pattern appears to have fixed it — the left gauge now tracks correctly through the readable band. (Full write-up to follow in a future post.) The right-side gauge is still stuck up (same root cause suspected, same fix likely needed), still on the to-do list.

Three problems addressed, one bench-flight worth of confidence restored, and we were back at the runway.


Flight 6 — May 14. First Flight Back, and a Surprise.

1.3 engine hours · 19.1 gal · 149 nm.

Ground track for Flight 6 — low, slow shakedown around KHEF after the CAN-bus rewire
Flight 6 — low, slow shakedown after the CAN-bus rewire.

F6 was deliberately a low, slow shakedown — peak ~2,070 ft, just enough to verify everything still worked after a month of wrenching. The CAN bus data was immediately, dramatically clean (zero protocol errors across the whole flight; pre-rewire flights had several hundred Bus-Off events apiece). That part was a win.

The surprise was carbon monoxide. The G3X CO Guardian had read essentially zero on every one of Flights 1 through 5. On Flight 6, with nothing changed about the engine, exhaust, or cabin sealing other than the avionics rewire, cabin CO peaked at about 7 ppm. Not alarming in absolute terms — the working alarm threshold is around 35 ppm — but a new signature that hadn’t been there before. The leading suspect, which I’ll come back to in a future post, is the firewall heat doors not seating fully closed.

For context on what those PPM numbers mean as the values climb on later flights, here’s the standard CO exposure scale:

Carbon monoxide symptoms by PPM level — NIOSH-based exposure thresholds
CO symptoms by PPM level (image courtesy TFT Pneumatic).

And here’s what the G3X CO Guardian actually measured in the cabin across all ten flights:

Cabin CO across all 10 N997CZ Phase 1 flights — F1–F5 essentially zero (gray), F6–F10 showing the new CO signature (red). NIOSH 35 ppm REL is well above any reading shown.
Cabin CO across all 10 N997CZ flights. Gray = F1–F5 (pre-CAN-rewire, essentially zero). Red = F6–F10 (post-rewire, CO signature appeared). NIOSH 35 ppm REL is well above any reading shown.

The story the chart tells: nothing on F1 through F5 (a few 1–3 ppm blips, mean below 0.5), then a clear new pattern starting at F6, peaking at 10 ppm on F7 during the slow-flight stalls and at 9 ppm on F8 with the wing roots taped. F9 looks essentially clean — but it was a benign autopilot-tuning profile. F10 is back to small numbers under a short, more aggressive profile.


Flight 7 — May 15. Out of the Pattern. First Stalls. First Airspeed Cal.

1.7 engine hours · 19.4 gal · 169 nm.

Ground track for Flight 7 — first push west toward Casanova / Culpeper for the stall series
Flight 7 — first push west toward the Casanova / Culpeper practice area.

Flight 7 was the first time I really left the immediate KHEF area. Climbed to about 8,800 ft west of the field and ran a clean-configuration stall series at light forward CG: about 1 kt per second deceleration, minimum airspeed ~58 KIAS before heavy buffet, no clean nose break yet. Wing roots were still bare (the wing-root grommet seal had been a contender for the CO source at this point) and cabin CO peaked at 10 ppm during the slow-flight portion of the flight — confirming that whatever was leaking was somehow correlated with high angle of attack or low airspeed, not just temperature.

Flight 7 also gave me a clean airspeed-calibration dataset I hadn’t planned on. Over about 22 minutes at ~7,000 ft and ~148 KIAS, I’d flown a mix of straightish legs and curving legs while working other test cards — not a single deliberate 360° turn, just a happy combination of headings that, taken together, ended up giving the GPS ground-speed vector enough azimuth coverage to support the GPS circle method. With 1,336 samples spread across the full compass and a circle-fit RMS of 2.4 kt, the result said the pitot-static system is essentially clean in cruise — position error +0.9 kt at ~148 KIAS. One cal point in the books; more to come at other airspeeds.


Flight 8 — May 16. Aggressive Stalls, and the Autopilot Wants to Dive.

1.1 engine hours · 12.0 gal · 97 nm.

Ground track for Flight 8 — back to the practice area for deeper stalls and the first AP engagement
Flight 8 — back to the practice area for deeper stalls and the first autopilot engagement.

I went back up to ~8,500 ft on F8 with more aggressive intentions: deeper stalls, more flap deployment, slower minimum airspeeds. Minimum logged IAS was 45.9 kt at about 7,900 ft, which is well into the “we’re not in the certified envelope anymore” territory and exactly what Phase 1 is for. Wing roots were taped on this flight to test the wing-root-as-CO-source theory.

Cabin CO peaked at 9 ppm anyway — actually with the highest mean CO reading of any flight to date. Wing roots, ruled out. The leading edge of the diagnosis shifted to the firewall heat doors. (More to come in a dedicated CO post; the investigation is still active.)

And then there was the autopilot. First time I engaged the AP in this airplane, it commanded a nose dive. Pitch channel sense was reversed — the AP was simply trying to hold pitch level, but with the servo direction wired backwards every correction it made was the wrong one, so it just kept pushing the nose over into a dive. We disengaged immediately, hand-flew the rest of the flight, and changed the G3X pitch servo direction from “normal” to “reversed” on the ground after landing. Configuration error, not a hardware failure, but a useful reminder of why we test these things at altitude before relying on them.


Flight 9 — May 17. Autopilot Tuning. And a Visit From an Old Friend.

1.7 engine hours · 23.3 gal · 230 nm.

Ground track for Flight 9 — autopilot tuning west of Casanova / Culpeper, with the Harry T and Bob H air-to-air rendezvous
Flight 9 — autopilot tuning west of Casanova / Culpeper. Includes the air-to-air rendezvous.

F9 was an autopilot tuning flight: 1.7 hours, max GPS altitude ~9,100 ft, mostly hand-flown to get up to altitude and then about 60% of the cruise samples on the autopilot. Confirmed the pitch-reversal fix from F8 — the AP now correctly climbs when it wants to climb. Worked the roll gain from 0.5 up to 0.7 and back to a settled 0.6, with the roll servo max torque bumped from 15% to about 40%. Roll axis is now tracking well; pitch tuning is up next.

The fun part of F9 was the air-to-air. Harry T and Bob H (Bob’s Cessna N8EM, “8 Echo Mike”) took off about 15 minutes behind me and joined up in the practice area west of Casanova / Culpeper. I worked at about 8,500 ft, they worked at about 3,000 ft, and we relayed live updates on the AP tuning progress on the air-to-air “fingers” frequency, 123.45 MHz. Visual contact. First time flying N997CZ alongside Bob’s airplane. The kind of flight where the data takes a backseat to the smile.

Two data-related notes from F9: cabin CO was essentially zero for the whole flight (the profile was too benign for the AoA-correlated leak signature to express itself, but worth logging). And the 11 autopilot-stabilized wings-level legs at ~8,500 ft / ~145 KIAS that came out of the tuning work happened to produce a perfect second airspeed-calibration data point: position error +0.5 kt, matching the F7 GPS-circle result almost exactly. Two cal points, two methods, two days apart — the pitot-static system is clean in cruise.

Full airspeed-calibration writeup — methodology (constant-IAS GPS circle, multi-leg wind triangle), per-leg data tables, and the F7/F9 cross-validation — is available as a PDF download below.

F9 was also the first confirmed mid-flight tank switch. Post-flight refueling receipt was 22.1 gal vs totalizer 23.3 gal (1.2 gal / 5% — within fuel-flow calibration tolerance), with the right tank taking about 8–9 gallons. Working tank split for this flight: ~13.5 L / ~8.5 R.


Flight 10 — May 20. The First Configuration Change.

1.0 engine hours · 11.7 gal · 104 nm.

Ground track for Flight 10 — air-dam-removal test, max GPS altitude ~11,080 ft
Flight 10 — air-dam-removal test. Max GPS altitude ~11,080 ft, a new high for N997CZ.

F10 was the first deliberate configuration change to the airframe since the maintenance gap. The Cyl 1 front air dam was removed before the flight to see whether more cooling air would lower Cyl 1’s persistently-hottest CHTs (and at what cost to the cylinders downstream of it). About an hour of engine time, max GPS altitude ~11,080 ft (a new high for this airplane), warm day with cruise OAT around 71 °F.

I’ll be honest: I didn’t check the weather before this one. It was a beautiful blue-sky day with a few white puffballs of fair-weather cumulus, and I was preoccupied with the air-dam mod. Departing Manassas to the west I could see some thunderstorm activity well to the north — at the time it looked like it was on the far side of Dulles, possibly out near Leesburg, and based on that I felt comfortable climbing west and away from it to do the test profile.

Up at 10,000–11,000 ft and turned around looking back east, the situation had changed. The storm had organized and was starting to encroach on Dulles and the corridor between Dulles and Manassas. Decision time was easy: hightail it home. I came back to Manassas and they had me land from the north to the south with the thunderstorm just behind my tail. Wheels down, taxi clear, into the chocks, shut down, debrief in the cockpit — all of that with the sky behind me turning increasingly serious.

Maybe one or two minutes after engine shutdown I opened the cabin door. The gust front hit exactly then. It took everything Harry and I had between us to keep the cabin door from being ripped off the hinges by the wind, and then it took everything we had to push the airplane back into the hangar against the gusts. The RV-7’s tow bar lives in the other hangar; we made it work, but N997CZ needs its own tow bar. Added to the parts list.

Headline result of the actual test, OAT-adjusted, F9 → F10: Cyl 1 max CHT dropped 33 °F. About 23 °F of that drop is attributable to the air-dam change beyond the cooling the other cylinders got on the same flight. Strong, clean signal. The downside, also predicted: Cyl 5 max went UP +9 °F — that’s the rear cylinder on the right bank, downstream of the redirected airflow. It’s a “canary” reading on whether the air dam was protecting Cyl 5’s climb cooling. F11 will tell us whether F10 was noise on a small sample, or whether we need a partial air dam to keep Cyl 5 happy.

Full CHT trend analysis across all 10 flights is its own dedicated post (the short version: the cylinder ranking has held invariant across all 10 flights, real break-in is visible in the climb maxes but essentially absent in cruise, and I was leaning too early per Lycoming’s SI 1427C).


Where We Are Now

12.4 engine hours in, with plenty of Phase 1 test cards still to fly. The headline open items going into F11 and beyond:

  • AHRS still tumbling on the takeoff roll every flight. CAN bus is clean, vibration is essentially eliminated (0.01 IPS), so the GSU 25C hardware itself is the leading suspect. I’ve just sent Garmin a fresh writeup closing the loop on the CAN bus rewire result and the prop balance result, alongside a 10-flight analysis showing the AHRS tumble pattern is identical before and after both fixes — and asked them once again about Service Bulletin SB 2144 and the potential need to swap or recall the two GSU 25C units on N997CZ. Waiting to hear back.
  • Cabin CO investigation continues. Firewall heat doors are the leading hypothesis; tape-test still to fly.
  • Cyl 5 climb cooling — F11 will tell us whether the air-dam removal was a free win or whether we owe Cyl 5 a partial fix.
  • Airspeed calibration at slow-flight speeds (~80, 100, 120 KIAS) — only the cruise point has been mapped so far.
  • Right fuel-tank float still stuck up. To-do.
  • Pitch autopilot tuning — roll is settled; pitch gains are next.
  • Flight 5 dedicated post — never going to happen at this point; consider this paragraph the substitute.

Next post will probably be the CO investigation, depending on which one closes out first. As always, thanks for following along.

— Jim

N997CZ — 10 Flights of CHT Data, and How I Was Wrong About Break-In

If you’ve been following the N997CZ journal, you’ll know that cylinder-head temperatures have been on my mind since the very first takeoff. Flight 1’s Cyl 1 peaked over 450°F before I’d even cleared the pattern, and from that moment on, every flight has carried with it a small cardiac event for me when I look down at the engine page on the G3X.

After ten flights and about 13 engine hours, I’ve finally pulled all of that CHT data into one place, run some regressions across it, and learned that a lot of what I thought I was seeing wasn’t quite right. This is the story of what the data actually shows — and where my initial interpretation broke down once I added one more variable.


Why CHTs Matter on a New Engine

For anyone new to all of this: cylinder-head temperature is the temperature of the metal at the top of each combustion cylinder, measured by a thermocouple right at the spark plug boss. Lycoming’s redline on the IO-540 is 500°F. The general guidance for break-in is to keep CHTs comfortably under 420°F during cruise and well clear of redline during climb, but more importantly to let the engine work: high power, full-rich mixture, no babying. The piston rings are seating against the cylinder walls during these first 25 to 50 hours, and that process needs combustion pressure and heat to happen properly.

The trade-off is that you’re running an engine hot, and you’re learning its baffling system, its idiosyncrasies, with no historical data to compare against. So you watch. And you write down what you see. And, in my case, you eventually pull it all into Python and start asking questions.


The Method: One Regression Per Cylinder, OAT Normalized

CHTs depend strongly on outside air temperature. A 70°F day produces materially hotter cylinders than a 40°F day, all else equal, just because the cooling air arriving at the baffles is hotter. So before I could see a meaningful “break-in” trend across ten flights spread over five weeks of spring weather, I needed to normalize for OAT.

I pulled the cruise window from each flight’s G3X log (filtered to RPM ≥ 2400 and altitude relatively steady), grabbed the OAT (°F) and the per-cylinder CHTs (°F), and fit a simple two-term regression for each cylinder:

CHT_cruise = a + b · OAT + c · flight_number

b tells me the OAT sensitivity (°F of CHT per °F of OAT — engineering rule of thumb is around 1.0). c is the break-in slope: how fast that cylinder is cooling off as the engine accumulates hours, after controlling for OAT.

I also kept the raw max CHTs flight-by-flight (peak during the climb), since climb is where the cooling system runs nearest its capacity and where any improvement in heat transfer would show up most clearly.


What I Thought I Was Seeing

The first fit was across all ten flights, F1 through F10. The numbers looked beautiful:

  • Cyl 1: c = −2.75 °F/flight. Hottest cylinder. Cooling fastest.
  • Cyl 2: c = −1.52 °F/flight.
  • Cyl 4: c = −1.31 °F/flight.
  • Cyl 6: c = −1.33 °F/flight.

That fits the classic break-in story so well. The hottest cylinder breaking in fastest. Rings seating. The cruise temps trending down at a measurable rate. I wrote it up, called the family in to admire the regression coefficients, and started drafting a post about how my engine was breaking in nicely.

CHT trend chart — OAT-normalized cruise CHT across all 10 flights, per cylinder
CHT trend across all 10 flights, OAT-normalized cruise values per cylinder. Looks like clean break-in cooling. It isn’t.

Then I added one more variable.


The Thing That Broke the Story

The variable was fuel flow. I’d been logging it the whole time, but I hadn’t pulled it into the CHT analysis. The thought was: what is each flight’s mean cruise fuel flow, and does it correlate with CHT in any obvious way?

Here’s what it looked like:

FlightMean cruise FF (gph)nm/gal
F122.66.9
F219.57.5
F318.47.9
F420.37.2
F521.17.1
F619.838.11
F715.689.61
F816.49.9
F916.79.3
F1015.610.4

Look at the step between F6 and F7. Mean cruise fuel flow dropped from 19.83 to 15.68 gph — a sharp single-flight transition — and fuel economy stepped from 8.11 to 9.61 nm/gal (+18%). Every F7+ flight runs leaner than every F1–F6 flight, without exception.

That step is exactly what it looks like: it’s where I started leaning the mixture. F1 through F6 were flown with the mixture at full rich, per the typical break-in playbook. By F7 — about 10 engine hours in — I’d decided I had enough data to start running a little leaner in cruise, and the fuel-flow numbers tell the story.

CHT vs fuel flow chart across 10 flights showing the F7 leaning transition
CHT vs fuel flow across the 10 flights. The sharp step at F7 is where I started leaning the mixture — the exact same step that was being smeared into a false “break-in cooling” trend by the all-flights regression.

Now look at what that did to CHTs. The F6 → F7 comparison, OAT-adjusted: cruise CHT went UP +10°F from F6 to F7 (352°F → 362°F across the cylinder array). That’s the textbook leaning signature — pulling the mixture leaner moves combustion peak temperatures closer to the cylinder head, and head temps respond.

In other words, my break-in regression across F1 through F10 was fitting a smooth line through what is actually two different operating regimes. The “cruise CHT is dropping” trend wasn’t break-in; it was 60–70% the F7 leaning step pulling the F7+ flights down toward a different equilibrium. The regression couldn’t tell the difference.

It gets worse. Flight 10 had another step change: I pulled the air dam in front of Cyl 1. That’s a physical change to the cooling baffling. Another shift in the operating regime, layered on top of the leaning regime.


Re-fitting on the Clean Range

Once you know about a regime change, you fit around it, not across it. So I re-ran the regression on F1 through F6 only — the clean, full-rich, no-air-dam-mod range — and the picture changed entirely:

  • Cyl 1 c = +0.29 °F/flight (was −2.75 in the all-flights fit)
  • Cyl 2 c = +0.37 (was −1.52)
  • Cyl 3 c = +0.35 (was +0.10)
  • Cyl 4 c = +0.02 (was −1.31)
  • Cyl 5 c = −0.02 (was −0.86)
  • Cyl 6 c = −0.67 (was −1.33)
  • Mean c = +0.06 °F/flight (was −1.28)

Cruise CHT break-in, in the full-rich regime, is essentially zero. The cylinders are not measurably cooling at cruise as the engine accumulates hours. The earlier “Cyl 1 broke in fastest at −2.75°F/flight” was about 60–70% the F7 leaning step plus the F10 air-dam mod. The actual break-in signal in cruise data, in the regime where break-in is supposed to be happening, is statistical noise.

And the OAT sensitivity that I’d been wondering about (the all-flights fit said b ≈ +0.25, way below the engineering rule of thumb of 1.0) snapped back into shape when I limited it to the clean regime: b ≈ +0.89 °F CHT per °F OAT in F1–F6 only. The rule-of-thumb is roughly right for this engine in full-rich cruise; the previous low number was suppressed by mixing in the leaning regime.


Where Break-In Actually Shows Up

So is my engine breaking in at all? Yes — but the signal lives in maximum CHTs (climb conditions), not in cruise.

FlightCyl 1 MAX CHT
F1455°F
F2442°F
F3438°F
F4438°F
F5437°F
F6434°F

That’s a −21°F drop over six flights for the hottest cylinder, in conditions where the cooling system is running near its capacity. That’s the break-in signature. Climb is where the engine is making the most heat per unit of cooling air; that’s where any improvement in heat transfer (or any small reduction in friction work) is going to be most visible.

The lesson: cruise has so much cooling margin that ring-seating doesn’t move cruise temps in any measurable way. If you want to see break-in in your CHT data, look at the climb maxes, not at cruise medians. I’d been looking at the wrong column.


Lycoming SI 1427C and the Leaning Mistake

While I’m being honest about what I got wrong: Lycoming Service Instruction 1427C explicitly says do not lean during break-in. I leaned at Flight 7, which was around 10 engine hours of total operation — earlier than the manufacturer recommends. The good news is that F8 and F10 don’t show any distress signature (no CHT excursions, no rough running, no oil consumption surprises I can see), so it’s probably fine.

But the cleaner path for the remaining ~12 to 15 hours of break-in is to go back to full rich at high power, and let the cylinders finish seating against the cylinder walls without me changing the operating point underneath them.

There’s a second piece of Lycoming guidance worth flagging: their actual gold-standard test for “is break-in complete?” isn’t CHT at all. It’s oil consumption. When per-hour oil add stabilizes at a low and consistent rate, the rings have seated. I haven’t been tracking oil consumption nearly carefully enough through these first 10 flights, and that’s a habit I’m going to fix going forward.


The F10 Experiment

I mentioned the F10 air-dam removal in passing — that deserves its own paragraph because the result is interesting.

Cyl 1 has consistently been the hottest cylinder on this engine, and the cylinder layout (Lycoming IO-540, right bank front to rear: 1 → 3 → 5; left bank front to rear: 2 → 4 → 6) puts it at the front of the right bank, where you’d expect it to be getting the freshest, coolest induction air. So why is it always the hottest?

One hypothesis was that the small air-dam baffle in front of Cyl 1 was redirecting too much cooling air past it (toward Cyl 3 and Cyl 5 deeper in the bank) and not onto it. So I pulled the air dam before Flight 10 to see what happened.

The result, OAT-adjusted, F9 → F10 deltas:

  • Cyl 1 cruise: −32°F. Cyl 1 max: −33°F. That’s about 23°F of extra cooling on Cyl 1 beyond what the other (control) cylinders saw. Strong, clean air-dam-removal signal.
  • Cyl 3 (right middle, downstream of the redirected air): no penalty. Cruise tracked the control group; max actually dropped slightly.
  • Cyl 5 (right rear, downstream): the canary. Cruise tracked the control group. But max Cyl 5 went UP +9°F while every other cylinder went down 0–10°F. That’s a 12–18°F relative warm-up in the high-stress climb regime, on the cylinder that’s furthest downstream on the right bank.

So the air dam was doing real work — keeping enough air flow over to the back of the right bank to keep Cyl 5 happy during climb. F11 will be the test. If Cyl 5 max stays elevated relative to the trend, that’s a real climb-cooling cost and I’ll need to think about a partial air dam or a different baffle modification. If Cyl 5 pulls back into line, F10 was noise on a small sample size.


What I’d Do Differently

A few takeaways from this round of analysis, mostly aimed at past-me:

  1. Don’t lean during break-in. Lycoming says so, and it confounds your data in addition to whatever it does to your engine. I should have stayed full-rich for the first 25 hours.
  2. Always split your regression at known regime changes. Adding fuel flow as a variable, or just visually inspecting it for step changes, would have caught this before I started believing the −2.75 °F/flight number. A regression doesn’t know about operating regimes; you have to tell it.
  3. For break-in, watch max CHT, not cruise CHT. That’s where the cooling system is closest to its limits, and that’s where any change in heat transfer will show up. Cruise has too much margin to be a useful break-in metric on this engine.
  4. Track oil consumption rigorously. It’s the actual answer to “is break-in done?” — and I’ve been treating it as a footnote.
  5. Single-flight changes are not break-in. F10 looked great on Cyl 1, but it was one data point against a known air-dam-removal mod. F11/F12 will tell us whether that’s the new baseline or a fluke, and whether the Cyl 5 climb-cooling cost is real.

A Footnote on How This Analysis Got Done

I want to be honest about the workflow here, because it’s something I’m thinking about a lot lately. I built the original “Cyl 1 is breaking in fast” regression in an afternoon, and I was ready to ship it. The reason it didn’t ship that way is that I was talking through the result with Claude — Anthropic’s AI assistant — and it kept asking annoying questions like “have you looked at whether fuel flow changes across these flights?” and “are you sure the operating point is the same?” The fuel-flow analysis that broke the story open was prompted by exactly that kind of push-back.

I’ll write a longer post on this workflow at some point, but the short version: AI-assisted data analysis is genuinely useful for catching the things a tired homebuilder is about to ship. It’s also a useful collaborator for sanity-checking the math, generating the chart, and writing the script that drops a fuel-flow column into an existing dataframe. None of which is a substitute for thinking about the data carefully — but it’s a force multiplier on the thinking.


What’s Next

F11 and F12 are going to be the air-dam follow-up flights. The plan: go back to full-rich mixture, fly a representative climb-and-cruise profile, see what Cyl 1 cruise (does it stay near 354°F, or does it drop further — that distinguishes mod-only effect from continuing break-in) and Cyl 5 max (does it stay elevated, or pull back in line) do. And start logging oil add events more carefully so I have the actual break-in metric Lycoming cares about.

If you’re working through Phase 1 on a new engine yourself and you’ve been staring at CHT numbers wondering what they’re telling you, I hope this is useful. The headline I’d leave you with: watch the maxes, not the means; don’t change two things at once if you can avoid it; and if your data tells you a beautiful story, ask it what’s missing before you publish.


Posted from N997CZ flight test program — see the CAN Bus Rewire post for the most recent system-level fix, and the First Flight post for the origin of the CHT story.

N997CZ — CAN Bus Rewire: Fixing the Basics Before Chasing Vibration

After the ADAHRS vibration analysis across the first five flights, Garmin’s guidance was unambiguous: fix the CAN bus first, then work the vibration problem. The data showed sustained % deviation throughout every flight — but some of those readings may have been contaminated by CAN bus dropouts rather than pure vibration. You can’t separate the two until the bus is clean.

So before touching the prop balance or the ADAHRS mounts, we pulled the old harness and rewired the entire CAN bus from scratch with the correct 120Ω controlled-impedance spec wire.

Why does this matter? Garmin specifies a maximum CAN bus length of 20 meters (66 feet) using controlled-impedance twisted pair wire. The original N997CZ installation used standard shielded twisted pair — not the specified 120Ω wire — and measured approximately 96.5 feet total. Both the wrong wire and the excessive length can cause impedance mismatches, signal reflections, and the kind of intermittent dropouts Garmin’s tech support confirmed in Flights 1–3.

Before and After: Every Node on the Bus

The CAN bus in N997CZ runs as a daisy chain from the PFD1 terminator through thirteen avionics boxes to the roll servo terminator at the far end. The measurements below are the wire lengths between adjacent nodes — not the lengths attributable to any single box.

Node Was New length
PFD1 TERM

63" 28"
G5 Sockets

55" 20"
ADAHRS #1 Sockets

34" 15"
ADAHRS #2 Sockets

83" 20"
EIS Sockets

89" 28"
Audio panel 3-row pin

86" 28"
GMC507 autopilot 3-row pin

84" 28"
GAD27 Sockets

71" 37"
MFD Sockets

73" 36"
PFD2 Sockets

75" 35"
COM2 (GTR20) Sockets

32" 28"
GAD29 ARINC Sockets

193" 181"
Pitch servo

220" 208"
Roll servo TERM
Total 1,158" / 96.5 ft 692" / 57.7 ft

Wire lengths in inches between adjacent CAN bus nodes. New length = larger of wire-only vs. shield & pin measurement. Garmin max: 792" / 66 ft.

96.5 ft
Old total
57.7 ft
New total
−38.8 ft
Saved
66 ft
Garmin max
The new harness comes in at 57.7 ft — comfortably under Garmin’s 66 ft maximum. The old harness was 30.5 ft over spec.

What’s Next

With the CAN bus now on spec wire and properly sized, the next flights will establish a clean baseline. If the % deviation drops significantly, that confirms the old wiring was a major contributor. Whatever remains after that points squarely at vibration — and the prop balance, SB 2144 GSU assessment, and mount evaluation are queued up to address it.