Drop a Betaflight log. You get the four things a tune actually hinges on — what noise
reaches the PID loop, how each axis follows the stick, whether the motors have headroom,
and whether propwash is eating your dives — plus a CLI diff to try one change at a time.
Everything runs in this tab. The log is never uploaded.
Log
Findings
Ranked worst first. Each one says what was measured, what it usually means, and one thing to try. A log gives direction, not magnitude — change one thing, fly, log again.
Suggested CLI
Only the concrete changes from the findings above. Paste into the Betaflight CLI. Do not paste the lot at once — comment lines out and try them one flight at a time.
The metrics JSON is what the QuadMath Tune Advisor reads — numbers only, never samples. Attach it when you ask for a second opinion.
Charts
Gyro vs setpoint
deg/s over the whole log. Envelope of the filtered gyro; setpoint drawn on top. Throttle underneath.
gyrosetpointthrottle
Noise spectrum — filtered gyro
Welch PSD, in-flight samples only. Peaks marked.
rollpitchyaw
Noise spectrum — unfiltered gyro
What the filters are up against (debug_mode GYRO_SCALED).
Throttle band vs frequency. Lines that climb with throttle are motors; flat lines are the frame.
Noise by throttle — pitch
Same view, pitch axis.
Motors
Output as % of range. Flat tops at 100% are saturation.
M1M2M3M4
Tune & filter settings read from the log
How the numbers are made
Flight gating. Only samples above 15% throttle feed the spectra and step response. Bench idling is not flying.
Noise spectra. Welch PSD: Hann window, 50% overlap, 1024-point FFT at 2 kHz+ (shorter at lower log rates). Peaks are reported by prominence over a running 80 Hz median floor, so a broad hump does not count and a narrow resonance does.
Step response. Wiener deconvolution of setpoint → gyro over 2 s windows with 10% stride, Tukey-windowed and zero-padded, regularised above 25 Hz. Only windows with real stick input are kept, weighted by amplitude. Same family of method as PID-Analyzer and PIDtoolbox.
Propwash. Pitch tracking error in 20–90 Hz after a throttle chop (fell > 35% in 0.5 s) versus the same band in mid-throttle cruise.
Motor saturation. Share of in-flight samples with any motor at ≥ 98% of its output range.
Parser.blackbox-log (MIT) compiled to WebAssembly. Betaflight and INAV logs; EmuFlight is untested.