Compass interference

The following message is displayed when automatic analysis is performed with Log.

Log File C:\Users\y-kato\AppData\Local\Temp\tmp18D1.tmp.log
Size (kb) 7187.982421875
No of lines 81964
Duration 0:03:49
Vehicletype ArduCopter
Firmware Version V4.0.3
Firmware Hash ffd08628
Hardware Type
Free Mem 0
Skipped Lines 0
Test: Autotune = UNKNOWN - No ATUN log data
Test: Brownout = GOOD -
Test: Compass = FAIL - Large change in mag_field (64.78%)
Max mag field length (739.82) > recommended (550.00)

Test: Dupe Log Data = GOOD -
Test: Empty = GOOD -
Test: Event/Failsafe = FAIL - ERR found: FS_THR
Test: GPS = GOOD -
Test: IMU Mismatch = GOOD - (Mismatch: 0.30, WARN: 0.75, FAIL: 1.50)
Test: Motor Balance = WARN - Motor channel averages = [1418, 1379, 1399, 1399, 1351, 1440]
Average motor output = 1397
Difference between min and max motor averages = 89
Test: NaNs = FAIL - Found NaN in CTUN.TAlt
Found NaN in CTUN.DSAlt

Test: OpticalFlow = FAIL - FAIL: no optical flow data

Test: Parameters = FAIL - ‘MAG_ENABLE’ not found
Test: PM = FAIL - 18 slow loop lines found, max 8.20% on line 46662
Test: Pitch/Roll = GOOD -
Test: Thrust = GOOD -
Test: VCC = UNKNOWN - No CURR log data

I took various measures due to a compass error, but it did not become “GOOD”.
Will there be any countermeasures?

Attach the log.2020-08-30 14-05-17散布 テスト.bin (3.2 MB)

I see there is only 1 compass in your log.
Which cube are you using? Did you disable the internal compasses?

I use CUBE BLACK.
The internal compass is disabled.

Only the external compass (GPS, compass) is enabled.

Internal compass disabled due to compass interference.

You may conduct CompassMot to find out the source of interference in your setup.

“CompassMot” is too large to run. Is there any good way?

Keep it away from wires!

You may have a disarm log. Turn on the other mags. Spin you motors accordingly during the process.
You will see if the motors are affecting the compass measures.
This won’t solve anything but will help us to locate the problem.

Do you need another log instead of the attached log?


Looks like some of the interference pattern syncs with your motor output. You definitely need a CompassMot.

Also, disable anything which you are not using, such as OpticalFlow.
Check your FS_THR too.

Although it is “Compass Mot”, the aircraft is large and dangerous. Is there any other way?
What do you check for “FS_THR”?

I think you maybe mixed up with Inflight Learn

You don’t necessary need to fly for Compass Mot. Just spinning the motors is already enough to generate data to determine the offset.
You may also try the new Automatic Offset Calibration feature

In your automatic analysis there’s a line
Test: Event/Failsafe = FAIL - ERR found: FS_THR
Not sure if this bother you, but it tells you have some error related to throttle failsafe. Check your throttle trim or rc connection

For “Compass Mott”, do I need to maximize the throttle on the ground?

Read the instructions from ardupilot wiki

Raise the throttle slowly to between 50% ~ 75%

Will “COMPASS_LEARN” be set to “3” before performing “Compass Mott”?

COMPASS_LEARN and CompassMot are 2 different things
As I said you don’t need to fly for compass mot. Why would you need to set InFlight-Learning?

I understand that Compass Mot will not fly.

Is it unnecessary to set anything for “COMPASS_LEARN”?

They are 2 separated features. It is not unnecessary to set anything for COMPASS_LEARN when you conduct compassMot

I understand.
Do “compass Mot”.

After that, should I set “COMPASS_LEARN” to “3” and fly?

It would help.
But as you said there is compass interference, fly within your eyesight and be careful