I always had yaw not being stable, not even in hover. It was bouncing left and right even with no input.
Also different YAW_OPTIONS in APM_config.h yeld to bad results. It was either too strong, or too slow. It always had really big overshooting like if PID was tto high. I decreased P till I almost had no control, but the left-right problem was still there.
Something I've noticed is that in the Planner, MAg was not steady as it was in previous NG code. It looked like it was giving +/- 1 degree in an interval similar to what I was experiencing in flight. It is not much, that's why I've never gave too much importance, bu apparently this was enough to yaw my copter.
So finally looking into the code I have noticed the _kp_yaw(0.8) in the DCM constructor.
Since this is used to correct drift of Gyro Z:
_omega_P += _error_yaw * _kp_yaw; // Adding yaw correction to proportional correction vector.
, I thought it could be a problem of a too high drift correction, resulting in a bouncing of the value due to the normal mag noise.
So I lowered to _kp_yaw to 0.35 ( I tried also 0.1 but in the planner I saw really slow compass movement when stabilizing after quick movement) lowered my P yaw to 0.3 and set my YAW_OPTION to 0 in APM_config.
Flying like that was like Night and Day difference! I still see a little (very little) yaw corrections, but now yaw is very nice! It is responsive, precise and stops when I let the sticks. Just like old days! :)
Beware, this was good for my setup, but could be a good start point for everybody having this kind of issue.
Now the question.
Since I understand this issue could affect non "standard" frames/motors (even though I think also standard frames could be affected) could it be possible to make this a runtime variable adjustable via mission planner?
Arducopter frame (using only center frame parts), ALU arms with a motor to motor length of 50cm.
Motors: KDA 20-22L. Props EPP 10x4.5 (soft)
Hope this could help somebody else.