Attitude control is quite good, even if a bit noisy, so we are half way there.
I would try to fix the vibrations first, then (later) rerun Autotune with AUTOTUNE_AGGR,0.1
when all this is sorted out.
Next I would look at the physical yaw bias evident in motor outputs. One or more motor mounts are not perfectly aligned, slightly twisted on the arm, something like that…
This has the effect of the counter-clockwise motors working harder than the clockwise motors to counteract the misalignment, and you can see in this graph they get clearly separated out into two groups of motors.
This has the side effect of making it hard for the FFT to target anything valid, and even makes it difficult for us humans to decide on what frequency to target. Now we have two almost-merged / barely discernible base frequencies and a broad spread of harmonics.
If we look very closely at the graphs there’s a pair of frequencies at 73Hz and 87Hz (pictured), but also a much smaller pair at 33Hz and 49Hz - so until the motor mount/yaw bias issue is fixed we are a bit unsure what to target. The base frequency will become more obvious when all motors are working approximately equally.
The likely target frequency for your prop size will be around 50Hz , so the lower set seems like they may be the actual motor noise and everything above that will be harmonics.


We can see FFT has picked up on the harmonics, and selected an unusually wide bandwidth to try and cover everything
FFT_FREQ_HOVER,157.8328
FFT_BW_HOVER,100
mainly because of the yaw bias issue, and also FFT_MINHZ,80
To keep using FFT, which is a good idea but sometimes it doesnt work well at the lower frequencies, set these and do another test flight after fixing the motor mount issue and hopefully finding some way of improving vibrations
FFT_MINHZ,40
FFT_MAXHZ,300
FFT_NUM_FRAMES,2
INS_HNTCH_FREQ,40
INS_HNTCH_BW,20
When the harmonic notch filter is driven by a dynamic source, such as FFT or ESC RPM, the frequency and bandwidth set by INS_HNTCH_FREQ and _BW can be scaled UP but cannot be scaled down. So these values must be at the minimum values that would ever be encountered.
You can set these right away, since they wont change regardless of vibrations and other work.
ATC_THR_MIX_MAN,0.5
INS_ACCEL_FILTER,10
INS_LOG_BAT_MASK,3
LOG_BITMASK,180222
PSC_ACCZ_I,0.50
PSC_ACCZ_P,0.25