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.
The analysis 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 Tune Advisor reads — numbers only, never samples.
Tune Advisor
A second opinion on the findings above from a model that reads the numbers — spectra peaks, step response, saturation, your PIDs and filters — and argues back when a rule got it wrong. Sends the analysis as JSON only — the metrics and findings above plus the firmware, board, craft name and debug mode from the log header; the log itself never leaves this tab. Ten reads an hour per person.
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.