Inflight optical flow calibration fail or pass

Unable to get a Scalar for Micoair MTF-02P during optical flow in-flight calibration. Attempted twice, and the result is the same. Why? Is it normal? In my experience with other optical flow sensors and with older Arducopter, scalars are always needed.

Offset forward by 7 cm.
Arducopter 4.6.3
FCU: MicoAir MicoAir743v2-AIO-45A

145679	15/9/2026 17:11	MSG	126447485	FlowCal: Started
145696	15/9/2026 17:11	MSG	126449603	FlowCal: x:0% y:0%
161767	15/9/2026 17:11	MSG	129454550	FlowCal: x:14% y:0%
177768	15/9/2026 17:11	MSG	132457141	FlowCal: x:14% y:0%
193779	15/9/2026 17:11	MSG	135462093	FlowCal: x:14% y:0%
209797	15/9/2026 17:11	MSG	138467143	FlowCal: x:14% y:0%
225805	15/9/2026 17:11	MSG	141472372	FlowCal: x:14% y:0%
241822	15/9/2026 17:11	MSG	144477084	FlowCal: x:14% y:0%
257834	15/9/2026 17:11	MSG	147482106	FlowCal: x:14% y:0%
273845	15/9/2026 17:11	MSG	150487130	FlowCal: x:14% y:0%
289836	15/9/2026 17:11	MSG	153488570	FlowCal: x:14% y:0%
305867	15/9/2026 17:11	MSG	156492094	FlowCal: x:14% y:0%
321884	15/9/2026 17:11	MSG	159498546	FlowCal: x:14% y:0%
337901	15/9/2026 17:12	MSG	162502030	FlowCal: x:20% y:0%
353936	15/9/2026 17:12	MSG	165507553	FlowCal: x:46% y:0%
369961	15/9/2026 17:12	MSG	168512045	FlowCal: x:68% y:0%
386005	15/9/2026 17:12	MSG	171517323	FlowCal: x:100% y:0%
402036	15/9/2026 17:12	MSG	174522086	FlowCal: x:100% y:0%
418067	15/9/2026 17:12	MSG	177527411	FlowCal: x:100% y:18%
434100	15/9/2026 17:12	MSG	180532865	FlowCal: x:100% y:48%
450167	15/9/2026 17:12	MSG	183537038	FlowCal: x:100% y:92%
454582	15/9/2026 17:12	MSG	184362442	FlowCal: samples collected
454583	15/9/2026 17:12	MSG	184362480	FlowCal: scalarx:0.000 fit:0.552 too high (>0.5)
454584	15/9/2026 17:12	MSG	184362559	FlowCal: scalary:0.000 fit:0.694 too high (>0.5)


I have used the MTF-02 version. It turns out these are somehow already well calibrated and good for use out of the box without further calibration.

I have found the calibration scheme very unreliable. If you have claude you can use my playbooks to do a calibration through a strafing run - GitHub - fossuav/aap: ArduPilot AI Playbooks · GitHub

After read through a few times and study the structure. I am still lost.

Clone the ardupilot repo. Run the install script. Start claude then ask it how to do a proper flow calibration.

Does it need a GUI? Can I use Microsoft WSL to try and learn?

WSL is fine - that is what I use. No need for a GUI

hi, i am using SpeedyBee F405 Mini BLS 35A 20x20 Stack fc, MicoAir Tech MTF-02P Optical and Range Sensor and a custom firmware to enable the flow options. I tried to calibrate the optical flow but the flowcal values are not appearing in the msg tab.

24/09/2026 11:39:19 am : Field Elevation Set: 0m
24/09/2026 11:39:18 am : Field Elevation Set: 0m
24/09/2026 11:39:17 am : Field Elevation Set: 0m
24/09/2026 11:39:16 am : Field Elevation Set: 0m
24/09/2026 11:39:15 am : Field Elevation Set: 0m
24/09/2026 11:39:14 am : Field Elevation Set: 0m
24/09/2026 11:39:13 am : Field Elevation Set: 0m
24/09/2026 11:39:12 am : Field Elevation Set: 0m
24/09/2026 11:39:11 am : Field Elevation Set: 0m
24/09/2026 11:38:55 am : FlowCal: Stopped
24/09/2026 11:38:41 am : FlowCal: timeout
24/09/2026 11:36:41 am : FlowCal: Started
24/09/2026 11:36:39 am : FlowCal: Stopped
24/09/2026 11:36:31 am : Warning: Arming Checks Disabled
24/09/2026 11:36:31 am : Field Elevation Set: 0m
24/09/2026 11:36:30 am : Field Elevation Set: 0m
24/09/2026 11:36:29 am : Field Elevation Set: 0m
24/09/2026 11:36:28 am : Field Elevation Set: 0m
24/09/2026 11:36:27 am : Field Elevation Set: 0m
24/09/2026 11:36:27 am : FlowCal: Started
24/09/2026 11:36:26 am : Field Elevation Set: 0m
24/09/2026 11:36:25 am : Field Elevation Set: 0m
24/09/2026 11:36:24 am : Field Elevation Set: 0m
24/09/2026 11:36:23 am : Field Elevation Set: 0m
24/09/2026 11:36:22 am : Field Elevation Set: 0m
24/09/2026 11:36:21 am : Field Elevation Set: 0m
24/09/2026 11:36:20 am : Field Elevation Set: 0m
24/09/2026 11:36:19 am : Field Elevation Set: 0m
24/09/2026 11:36:18 am : Field Elevation Set: 0m
24/09/2026 11:36:17 am : Field Elevation Set: 0m
24/09/2026 11:36:16 am : Field Elevation Set: 0m
24/09/2026 11:36:15 am : Field Elevation Set: 0m
24/09/2026 11:36:14 am : Field Elevation Set: 0m
24/09/2026 11:36:13 am : Field Elevation Set: 0m
24/09/2026 11:36:12 am : Field Elevation Set: 0m
24/09/2026 11:36:11 am : Field Elevation Set: 0m
24/09/2026 11:36:10 am : Field Elevation Set: 0m
24/09/2026 11:36:09 am : Field Elevation Set: 0m
24/09/2026 11:36:08 am : Field Elevation Set: 0m
24/09/2026 11:36:07 am : Field Elevation Set: 0m
24/09/2026 11:36:06 am : Field Elevation Set: 0m
24/09/2026 11:36:05 am : Field Elevation Set: 0m
24/09/2026 11:36:04 am : Field Elevation Set: 0m
24/09/2026 11:36:03 am : Field Elevation Set: 0m
24/09/2026 11:36:02 am : Field Elevation Set: 0m
24/09/2026 11:36:01 am : Field Elevation Set: 0m
24/09/2026 11:36:00 am : Field Elevation Set: 0m
24/09/2026 11:35:59 am : Field Elevation Set: 0m
24/09/2026 11:35:58 am : Field Elevation Set: 0m
24/09/2026 11:35:57 am : Field Elevation Set: 0m
24/09/2026 11:35:56 am : Field Elevation Set: 0m
24/09/2026 11:35:55 am : Field Elevation Set: 0m
24/09/2026 11:35:54 am : Field Elevation Set: 0m
24/09/2026 11:35:53 am : Field Elevation Set: 0m
24/09/2026 11:35:52 am : Field Elevation Set: 0m
24/09/2026 11:35:38 am : FlowCal: Stopped
24/09/2026 11:34:55 am : FlowCal: timeout
24/09/2026 11:32:54 am : FlowCal: Started
24/09/2026 11:32:45 am : EKF3 IMU0 MAG0 initial yaw alignment complete
24/09/2026 11:32:45 am : Using EKF Source Set 2
24/09/2026 11:32:16 am : Warning: Arming Checks Disabled
24/09/2026 11:32:16 am : Field Elevation Set: 0m
24/09/2026 11:32:14 am : Field Elevation Set: 0m
24/09/2026 11:32:13 am : Field Elevation Set: 0m
24/09/2026 11:32:12 am : Field Elevation Set: 0m
24/09/2026 11:32:11 am : Field Elevation Set: 0m
24/09/2026 11:32:10 am : Field Elevation Set: 0m
24/09/2026 11:32:10 am : EKF3 IMU0 origin set
24/09/2026 11:31:38 am : ELRS: Link rate 250Hz, Telemetry rate 10Hz
24/09/2026 11:31:35 am : GPS 1: detected u-blox
24/09/2026 11:31:35 am : GPS 1: probing for u-blox at 230400 baud
24/09/2026 11:31:33 am : ELRS: Link rate 250Hz, Telemetry rate 55Hz
24/09/2026 11:31:31 am : EKF3 IMU0 tilt alignment complete
24/09/2026 11:31:30 am : AHRS: EKF3 active
24/09/2026 11:31:30 am : EKF3 IMU0 initialised
24/09/2026 11:31:28 am : Using EKF Source Set 3
24/09/2026 11:31:28 am : RCOut: PWM:1-5
24/09/2026 11:31:28 am : AHRS: DCM active
24/09/2026 11:31:28 am : ArduPilot Ready
24/09/2026 11:31:28 am : ELRS: RSSI now displays normally
24/09/2026 11:31:28 am : ELRS: Link rate 250Hz, Telemetry rate 249Hz
24/09/2026 11:31:28 am : Initialising ArduPilot
24/09/2026 11:31:27 am : Barometer 1 calibration complete
24/09/2026 11:31:27 am : ELRS: bootstrap complete, fw 1.00
24/09/2026 11:31:27 am : RCInput: decoding CRSF(3)
24/09/2026 11:31:27 am : Frame: QUAD/X
24/09/2026 11:31:27 am : RCOut: Initialising
24/09/2026 11:31:27 am : SpeedyBeeF405Mini 003F0042 32345112 39333531
24/09/2026 11:31:27 am : ChibiOS: 88b84600
24/09/2026 11:31:27 am : ArduCopter V4.6.3 (92b0cd78)
24/09/2026 11:31:26 am : Frame: QUAD/X
24/09/2026 11:31:26 am : RCOut: Initialising
24/09/2026 11:31:26 am : SpeedyBeeF405Mini 003F0042 32345112 39333531
24/09/2026 11:31:26 am : ChibiOS: 88b84600
24/09/2026 11:31:26 am : ArduCopter V4.6.3 (92b0cd78)
24/09/2026 11:31:26 am : Frame: QUAD/X
24/09/2026 11:31:26 am : RCOut: Initialising
24/09/2026 11:31:26 am : SpeedyBeeF405Mini 003F0042 32345112 39333531
24/09/2026 11:31:26 am : ChibiOS: 88b84600
24/09/2026 11:31:26 am : ArduCopter V4.6.3 (92b0cd78)
24/09/2026 11:31:26 am : Calibrating barometer
24/09/2026 11:31:26 am : Frame: QUAD/X
24/09/2026 11:31:26 am : RCOut: Initialising
24/09/2026 11:31:26 am : SpeedyBeeF405Mini 003F0042 32345112 39333531
24/09/2026 11:31:26 am : ChibiOS: 88b84600
24/09/2026 11:31:26 am : ArduCopter V4.6.3 (92b0cd78)

this is my msg logs. Help me in resolving this issue, if you require i can provide the custom firmware as well as param file

Can we assume you have set the jumper and mounted the orientation correctly? It is very weird that the information wasn’t mentioned, but it is mentioned on the store page. And does your custom ArduCopter firmware include optical flow support?

Yes, i have set the jumper as per ardupilot and mounted the orientation correctly. My custom ardupilot include optical flow support.

Do you think it could be due to STM32F405 has been overloaded?

Are you holding the position using the optical flow sensor while trying to calibrate the optical flow sensor? Could you share your EK3_SRC2_xx parametres?

There was no msg for overloading in the msg tab, but there might be possibility of this.

EK3_SRC2_POSXY =0
EK3_SRC2_POSZ =1
EK3_SRC2_VELXY =5
EK3_SRC2_VELZ =0
EK3_SRC2_YAW =1

You cannot use optical flow to hold position and trying to calibrate at the same time. please use EK3_SRC1_xx (gps) to hold position and calibrate optical flow sensor.

In my area there is no strong gps signal the hdop is always around 10. I am not using optical flow to hold position and then calibrate it, my dorne does not switch into loiter mode whenever i tried to switch it into the loiter mode, it shows and error msg “Mode change to LOITER failed: requires position and PreArm: Need Position Estimate”, the home and ekf origin is set by me on the mission planner, still the same issue