I've been playing around with my Quad-C APM2.5 v.2.9.1 to try to figure out why my compass is drifting. I have erased EEPROM, performed a light calibration of the compass, and selected auto learning in the settings. When doing a quick test I just now I observed the following.
When flying initially in stabilise I did not observe any drift, and the initial loiter was also good. After a short landing (getting disarmed and rearming) I performed a second loiter test, and this time it started rotating counterclockwise with a speed a bit less than 90° in one minute. The compass direction indicated in the mission planner always remained in the same direction and I was not giving any yaw input. As the angle increased, naturally loiter became more unstable. After bringing it back to stabilise mode I yield it back into its correct orientation, nose out with respect to myself. The indicated heading in the mission planner was now more than 90° clockwise to what it was supposed to be.
I then observed that it started rotating in the other direction, clockwise. I gave small corrections to keep it close out. It continued this behaviour until it had restored the original heading, with the compass in the mission planner now pointing the same direction as the nose of the copter.
I have several times seen it corrected itself while sitting on the ground, but this time it clearly corrected itself in the air. I suspect this has something to do with the auto learning? I was not flying around after terminating the loiter, I was manually hovering until the compass restored itself. If it is not the also learning kicking in, then I find it hard to believe that it is electric noise that is messing with the compass. On the other hand, if auto learning is correcting this, why can it correct during manual loiter, but not automatic loiter?
I have a few logs lying around, but I'm not sure what these can clarify compared to what I have attempted to describe here. I do not observe this behaviour with 2.9.0.
Edit: The correct title should be that the compass is drifting clockwise since the copter is rotating counterclockwise, but I guess you get my meaning :-)