I'm using ArduCopter for the last 4 years and I always tried to find a way to disable the internal compass(es) to avoid the "error compass variance" and things like that when you have an external compass that can be used solely. So, the new version of ArduCopter (>3.6) have a parameter called COMPASS_TYPEMASK that can be used to do the job. I was suffering with errors on internal compasses of a Pixracer R14 running ArduCopter 3.6.1 in a micro quad and I used this parameter to disable the 2 internal compasses. The parameter is easier to be used in QGroundControl, because when you access it in QGC, you will see the possible options as checkboxes. The parameter is a bitmask where each bit is relative to a compass driver that should be loaded or not. I've just checked all the driver's checkboxes to avoid the use of the corresponding driver and let the driver of my external compass unchecked, so, it is the only one that is loaded now and my problems with compass has gone. The only pre-req is that your external compass must be different from the internal ones.
The attached images shows the parameter configuration screen in QGC, the IDs of detected compasses in QGC and the Compass Setup Screen in Mission Planner.
So, I'd like to thanks ArduPilot developer team for including this new parameter and I hope we have less fly aways... :)
I had the same problem with my PixHawk on a FlameWheel 450. I used Mission Planner to turn of the internal compass and all of my compass variance errors went away. Any time your auto pilot is anywhere near high current lines you are susceptible to that problem.