Skip to content

Flights 001–021 — First Batch on the New Tune

Setup

First flights after softening the rates — every log in this batch reports rc_expo 35,35,25, so this is the clean after-half of the comparison against flights 007–031. Around 7 minutes armed across 21 flights, nine of them long enough to analyse.

Pilot verdict on the rates: flew nice. Nothing in the data contradicts that — no oscillation, no saturation, no tracking problems. The tune question is closed.

The battery question is not.

The packs are degrading

Sag under load — the difference between resting voltage and loaded voltage within the same flight — has risen sharply:

BatchMean sag
2026-09-09 (old tune)0.24 V
2026-09-11 (this batch)0.39 V
The obvious confound points the wrong way. Mean peak throttle fell from 1505 to 1430 between the two batches. Less throttle, more sag. That rules out “flying harder” and leaves increased internal resistance — cells that have been damaged and no longer hold voltage under load.

Which is consistent with the history: the previous batch recorded repeated discharges to 2.83–2.99 V, and deep discharge is precisely what raises a lithium cell’s internal resistance.

Consequences

FlightDurationMinEndGapReading
btfl_00293.8 s3.00 V3.16 V0.15Long flight, held up
btfl_00546.9 s2.45 V3.14 V0.69Severe sag, full recovery
btfl_00841.6 s2.43 V3.05 V0.62Severe sag, full recovery
btfl_01025.6 s2.98 V3.02 V0.04Genuinely run down
btfl_01143.4 s2.51 V2.87 V0.36Severe sag
btfl_01530.7 s2.95 V3.14 V0.19
btfl_01621.2 s2.57 V3.01 V0.44Severe sag
btfl_01723.8 s2.58 V2.97 V0.39Severe sag
btfl_01933.8 s2.71 V3.30 V0.59Severe sag, full recovery

Eight of nine dipped below 3.00 V, against five of eight last time. Momentary minimums reached 2.43 V, well below the previous worst of 2.83 V.

But the character of the problem has changed. Last batch the concern was packs flown flat — small min-to-end gaps meaning the low reading was the pack’s real state. Here only btfl_010 fits that description. Everything else shows a large gap: the pack dives under throttle and recovers once unloaded.

Resting voltages at landing are mostly sensible (2.87–3.30 V), so the landing decisions have improved. The packs are simply no longer capable of delivering current without collapsing.

The warning fix has a blind spot

Setting vbat_duration_for_critical = 2.0 s was the right call for the problem as it stood — the alert fired on every throttle punch and had become background noise.

It also means a dive to 2.43 V lasting under two seconds is filtered out by design. The alarm is behaving exactly as configured and reporting nothing, while the cell takes damage.

The resolution is to stop treating the two thresholds as one problem:

  • Warning stays at 2.0 s — “this pack is depleting”, which is a slow condition and should ignore transient sag.
  • Critical drops to 0.5 s — “this is dangerous right now”, which is a fast condition and must not be filtered away.

Airframe

Motor eRPM-per-command spread ran 6.9–11.2 %, slightly wider than the previous batch’s 5.3–10.0 %. Worth noting rather than worrying about: voltage sag itself affects motor response, so a degrading pack inflates this figure without any mechanical fault. No saturation; peak throttle never exceeded 1511 of 2000.

Yaw behaved normally, which answers the open question from the adjrange incidentf_yaw had been driven to 663 before being restored to 120, and there is no sign of a lingering problem.

The flash filled again

usedSize reached totalSize for the second batch running, so any flights after btfl_021 recorded nothing. The live log-status element now shows > when this happens, but the underlying habit needs to be erasing between sessions rather than noticing afterwards.

Open

  • Replace the packs. The sag measurement is the strongest evidence yet; no configuration change recovers a cell with raised internal resistance.
  • Re-measure sag on a fresh pack. If a new cell shows ~0.24 V again, that confirms degradation rather than something environmental.
  • ibata_scale / ibata_offset still uncalibrated, so current draw remains unusable.

Method

Decoded with blackbox_decode. Sag is the 90th percentile of voltage at idle throttle minus the 10th percentile at the top 15 % of throttle, computed within each flight so pack state and temperature are controlled for. Motor spread is the range of per-motor mean eRPM ÷ mean motor command over samples above idle.