Servers by jDrones

7inch Quadcopter : severe oscillations on Roll/X axis from 12Hz to 20Hz [Please Help]


I have build a 7 inch LongRange quadcopter using :

  • Armattan Chameleon TI LR carbon frame
  • Matek H743 SLIM running Arducopter 4.1.0-beta5 with bidir dshot firmware
  • ESC : T-Motor F55A Pro II T-Motor - 3/6S -BLHeli_32 4in1 MCU F3
  • Xing2 2506 - 1650KV motor
  • Propeler : HQ Durable Prop 7 X 3.5 X 3V1S
  • External GPS & COMPASS : M9N-5883
  • External Lidar + Flow Sensor : Matek 3901-L0X
  • RC : TBS CrossFire Nano RX with Yaapu script telemetry running on TX16S
  • LIPO Battery Tattu 1800mha 100C

This quad ( and its predecessor based on GEPRC MARK4 7 inch frame) suffer from severe oscillations from 10Hz to 20Hz mainly on the roll/X axis, in STABILZE, ALTHOLD, POSHOLD modes. The issue is not produicible at all time.

I am running DSHOT 1200, in bi-direcionnal mode for high freq RPM motor telemetry.

I never tried to run older Arducopter 4.0.x since i need crossfire support and yaapu telemetry.

When the oscillation occurs, current drawn rise a lot from 8A (hover) to 20A/30A, but the quad remains under control from my RC.

Some time the oscillation last 5% of flight time, sometime 80%…

Here is some chart of a flight :

I have also tested with Betaflight 4.2.8 this quad : no oscillation appeared in angle mode. No feedback from INAV, since H743 is not yet supported.

Please find the BIN LOG file :
In this log oscillations occurs at the following timestamps :

  • 4min 6.0s during 5 sec - STABILIZE MODE
  • 7min 35sec during 3 sec - POSHOLD MODE
  • 8min 2sec during 3 sec - POSHOLD MODE

The Armattan Chameleon TI 7 inch LR frame is know to fly well, without issue of that kind.

Does anyone have any deterministic method to tackle this kind of low freq - high amplitude oscilations?

Any suggestions ?


Where would that be? You will likely have to post a link to the log file…

Sorry for the delay, initial thread updated with the file link :

Some observations (I have the Mini version of that FC on a 5"):
Increase these:

You do not have the Dynamic Notch Filter Enabled for ESC telemetry so the RPM data is doing you no good.
You only need to set the MOT_PWM_TYPE to the Dshot protocol you want. You do not have to configure the SERVO_BLH_MASK or OTYPE. But what you have will work.

Thanks a lot for your advises.

I did setup the Dynamic Notch Filter from ESC telemetry frequencies. High freq above 80Hz are now filtered. For this to work , I had to set MOT_PWM_TYPE=DSHOT300.

I also increase ATC_ACCEL_P_MAX / ATC_ACCEL_R_MAX from 110000 to 180000.


The Result is worst … oscillation was almost continuous from takeoff to landing, with a calmier period at the middle of the flight.

I Just did another test with:

  • ATC_ACCEL_P_MAX / ATC_ACCEL_R_MAX set to 110000 (rollback to initial value)
  • ATC_RAT_RLL_FLTT / ATC_RAT_RLL_FLTD = 12HZ, as an atempt to filter low freq part of the oscillation…

Results are worst with much higher oscillation amplitude.


The Initial tuning values for these for a 7" is 146,000. Start there.
Set those filters back to 28.
The Notch filter is now working. You can see this by graphing FTN

I can see the Roll oscillation. Start by reducing the Rate P&I values. .100 perhaps and see how that goes. Or put it on a in-flight tuning pot with the high value at default (.135) and the load value at half that.

Hi Dave,

Got it for ATC_ACCEL_P_MAX / ATC_ACCEL_R_MAX = 146,000.

I will try to reduce P&I rate on Roll to 0.100 and let you know.

About inflight autotune, what is the “load value” that should be set at 0.135/2 ?

Thanks again for your support !

Sorry typo “Low Value”. But yes a range of .06 to .135 should be good for the 1st pass. What I normally do is start at default P term (.135) fly for a bit and then step the value down, fly for a bit, etc. So maybe you have 5 steps. Then from the log plot RCIN chan 6 and Desired vs actual Roll/pitch. And of course how it feels as you are testing. It can be a bit time consuming but unless you want to try Auto Tune, it’s the easiest way to manual tune.

The full process is described here, page down to Manual Tuning:
Manual Tuning

1 Like

Hello Dave,

I just tried those settings on Roll axis , based on the “50% from default values” recommendation in case of oscillation:

  • ATC_RAT_RLL_P=0.06
  • ATC_RAT_RLL_I=0.06
  • ATC_RAT_RLL_D=0.0018
    Since Pitch axis also had oscillation , but with fewer amplitude, I applied a 75% factor from original PID
  • ATC_RAT_PIT_P=0.1
  • ATC_RAT_PIT_I=0.1
  • ATC_RAT_PIT_D=0.0024

First overwall impressions are very good ! no visible oscillation, Current drawn in hover is now back to 8A… and with very good control attitude from RC …
Dave , thanks a lot !


For your information, I also previously tried to reduce P,I,D Rate bases on RC tuning (using TUNE param), but since only one value is changed (P or I or D), it had very limited effects on the my oscillation issues.

It would be very nice to have a additional option to the “TUNE” param:

  • Proposal 1 : to apply simultaneously a shared % gain to P, I, and D rate values of a single axis, with TUNE_MIN and TUNE_MAX set in % of initial value.
  • Proposal 2 : to apply simultaneously a shared gain to P and I rate values of a single axis, with TUNE_MIN and TUNE_MAX set in min /max values.

If a had one of those features, I think would have tackle this oscillation issue by myself…
Anyway, problem solved.

Looking good! You can disable INS_LOG_BAT_MASK now. At 3 you are logging a ton of data and with the Notch filter set you don’t need it.

Yes, there has been plenty of discussion about enhancing the in-flight tuning options. Plane actually has some interesting options that is not in Copter.

1 Like

If anyone want to follow my work on that 7" quad :

Servers by jDrones