Think you've got a good understanding about nearly all the crucial bits regarding how to avoid a yaw error due to magnetic disturbance & a deflected compass ...... and why not re-calibrate it?
1. You understand that the error occurs during power on ... if the compass is magnetically deflected at that moment, the IMU will be wrongly initialized. And by that the AC will not know in which direction it's actually pointing there after ... meaning that the flight controller will command the wrong motors when trying to hold position when the AC starts to be affected by outside forces, like wind. This will in turn generate a positional error loop that rapidly increase the positional error... this will make your AC fly away in a very hard to control manner.
2. You also grip that you can check that the IMU have been correctly initialized before take off ... After powering on your AC, connected to your RC/app & placed it in the take-off spot ... but before lift-off, you check that the "drone icon" on the map in your app is pointing equal in relation to other objects in the map as the AC does in reality ... if it doesn't, you abort the launch attempt, power down, move away, power up again and repeat.
The thing you doesn't seem to fully understand is what a calibration actually does ... the intent with a compass calibration is to only measure the AC own internal magnetic field in order to be able to deduct it so the earth magnetic field can be measured accurately.
So by that ... a compass calibration is only needed when something have been changed on the AC itself ... either extra equipment attached or taken off ... that's why the DJI app message is wrong when the AC have been placed in a magnetic interfered environment ... as nothing have been changed on the AC. Carry the AC outside that interference & the message will be gone. What you instead need to do is follow the instructions under point 2. above.
Last edited: