The single most effective means to prevent a launch time fly away is to check the red triangle heading indicator in the map display.
View attachment 9130
If it doesn't agree with the actual AC heading then erratic flight and possible fly away is likely. This method is more robust and accurate than any of the other methods seen in this thread. It's really unfortunate that DJI doesn't put this in any documentation.
There are a few other points about compass calibration that should be mentioned.
1) The idea that a fly away can be caused by moving away from the calibration location is simply not true. A calibration can only determine and compensate for the magnetic properties of the AC. It's mathematically impossible to obtain the data necessary to compensate for magnetic effects external to the AC.
2) It's not necessary to calibrate at a new location. But, it also doesn't increase the risk of getting a flawed calibration. A geomagnetic field distorted enough to produce a flawed calibration will cause the calibration attempt to be rejected with the "interference detected, move to another location" message being issued.
3) No amount of compass calibration at any location will prevent these fly aways. The only fix is to move the AC to a better location.
@dingodar the reason that the AC flies away at high speed is because it doesn't know which wat it's pointed. It's constantly making corrections to it's position. To do this it has to know it's heading. If the heading is wrong any attempted correction will produce a larger position error. Then the next correction has to be larger. This repeats with each correction being larger than the previous.
If you want to know more about a particular fly away the best way is to look at the .DAT log file for that incident. Look
here to see how to retrieve that .DAT.