Servers by jDrones

MSP protocol support

Hi, i am wondering does this matek optic flow works on latest arducopter firmwares, i did set as you set but no luck

Works fine, more info here

could you please share your setup parameters? I used parameters from this post you have shared before and also parameters on matek website, both didnt work.

This is not a real vehicle, it’s a bench test setup but should get you started.
MSP support is not in current stable or beta firmware and requires master as of now downloaded from here

minipix_msp_3901.parm (28.0 KB)

thank you very much, it worked, does this also work on quadcopter master firmware?

Yes as long as you use master you should be fine

Hi Alex you got any idea when it will make into the stable release ?

I only fly now with the DJI FPV system which works well with iNav. I wanted to try out Arduplane, but can’t until there’s a stable release to support the OSD, so looking forward to that, in the near future?

@yak-54 @Flynn203 I don’t have a date, sorry :frowning:


I have been using your test branch for yaapu CRSF telemetry ( and it works great!.
I also have a Matek 3901 in hands and want to try our on my kakute F4.
Is it possible to combine updates in these two test branches at this stage?

*I have no idea how much work it may add to you, so my apologies if this request sounds inconsiderate.

MSP has been added to master which is the official ArduPilot dev version, you should download from


1 Like


So currently only the Dev Build (4.1.0+) supports MSP protocol?

I tried the dev build, but for the matek H743, during the initial install windows started installing drivers for it which resulted in 2 com ports showing up for the board and in QGC I couldn’t connect at all. Is that some Matek issue or what’s going on there?

Yes MSP is only in master 4.1.x

F7/H7 boards which support CAN are detected as dual serial ports,

The ArduPilot firmware provides two software USB interfaces, accessed simultaneously from the single physical USB connector. In Mission Planner, you will see two COM ports assigned to the autopilot (if not, see Troubleshooting section below). One is for the SLCAN interface, the other for the normal MAVLink based Ground Control Station (GCS) connection.

more info here

1 Like


Yea I got the Master build 4.1.0 insalled and can access with MP.

While the MSP_OPTIONS and MSP_OSD_NCELLS has appeared, the options for SERIALX_PROTOCOL doesn’t show options 32 and 33, also I don’t see FLOW_TYPE options for 7. I’ve set them anyway, but the status is still showing BadLidar Health and in the status i see rangefinder1 with status 0 and opt_m_x, opt_m_y, opt_qua, opt_x and opt_y are all 0 with and without movement of the quad.

Seems like something is still a miss. I’m using Matek H743-WING and the maek 3901 optical flow sensor. I’ve got it wired up the Serial 5 with 5v, GND, RX and TX.

EDIT: Alright, I figured it out. I was powering the FC with USB only and forgot to power it up with the battery causing the 3901 to not have power. After I powered it up I started getting readings from the sensor to the named fields that were all 0.

1 Like

Not sure if this is the correct thread for this, but there’s a strange anomaly in the log file, that the zero points for the graphs are offset. I did already put in the recommended value for flowxscaler = -800 so maybe I should start by zeroing those, but I’ll share this just in case:

EDIT: I double checked the flow_xy_scaler and the parameter wasn’t written will do another test and will post if fixed.

Yes the suggested parameter for FLOW_FXSCALER = -800 and FLOW_FYSCALER = -800 resulted in much better looking graphs as shown below. However the difference between X and Y is still apparent and the Y axis zero points are still a bit off. Can anyone suggest what value change would be appropriate for FLOW_FYSCALER as that seems to be the one that’s almost there but not quite.

X axis graph / Y axis graph (2 images available following the link):

1 Like

Just for others attempting this, I was able to get the Y axis right by using the FLOW_FYSCALER with -775 as value.
I did notice that once I removed the optical flow the EKF3 kept demanding optical flow sensor, even though I switched to EKF2 and disabled all the optical flow stuff that I could find. To solve that I ended up switching to older firmware.

1 Like

hello, I use latest firmware, matek405-std . All DJI OSD is good
But ESC Temperature is not update,it display 1 ℃,
I use ESC Telemetry , RPM Voltage Current Temperature is good ,I can see them in MP
what can i do? or it is bug?

Hi guys. Would it be possible to use the Matek OpFlow 3901-LOX sensor with an Arduino using bits of the code from here? I’m using a library that enables MSP on the Arduino, but I’m unsure how to pull the data from the sensor, as there is no datasheet that I can find. I’m unsure which section of the code here is pulling data from the optical sensor but I feel that I may be able to adapt this to work with an Arduino. Unsure if this is possible though so any feedback would be appreciated.

I have a Kakute F7 flight controller with a Matek OpFlow 3901-LOX sensor. I built the master branch with the following flags:
HAL_MSP_OPTICALFLOW_ENABLED // otherwise flow sensor was not found
HAL_MSP_RANGEFINDER_ENABLED // otherwise range finger was not found

The scale factor of the optical flow sensor seemed correct but there was a offset between the OF.FlowY and OF.BodyY graphs. The rangefinder data on the log also seemed very erratic. I’ll upload data logs in a couple of days.

The position hold was a lot worse when the optical flow sensor was enabled.

Any suggestions to improve stability?

Servers by jDrones