MSP protocol support

Hi Chris,
when in DFU mode did you try a firmware with a bootloader like arduplane_with_bl.hex, if you can flash that one and get the USB port to work you can then flash mine from Mission Planner!

As for your question, MSP will work on any board,
Soon the build servers will enable MSP as default, but right now you will need to compile it yourself with the command:
./waf configure --board Durandal --osd

Alex

Hi Alex,

Thanks for your response, yes I did try to flash the DFU with 'arducopter_with_bl (4.0.4 1-1M).hex from both Betaflight and Inav configurators. Each time the configurators hang. MP does not see the DFU.

All best Chris

uhu I see, then you might have bricked it… :frowning:

C’est la vie, Durandal it is…

1 Like

Hi Alex, hi all,
first of all many thanks for developing this firmware! Since I am coming from Eagletree I had to learn a lot (thanks to Reinhard/Target0815) with FC and Ardupilot! Now, I got (almost) everything running: I have a F-765 flashed with “arduplane_with_bl.hex” Version of Oct 2, 2020. F-765, GPS Matek MBQ-5883, AirSpeed ASPD 4525, Scherrer RX700 NR (running on PPM connected to Rx6). GPS is connected to Tx2Rx2, AirSpeed to DA2 CL2.
DJI FPV is connected to Tx1RX1. OSD is correctly shown.
Sadly, I took me hours to find out that a F-765 hangup occured, just when I activate the RSSI in MissionPlanner: if I set the RSSI_TYPE,1 (i.e. analogous) RSSI_PIN_HIGH,1.8 RSSI_PIN_LOW,1.25 and have Scherrer analogous voltage connected to the RSSI pin on F-765, write the parameters everything works fine. The RSSI is correctly shown in the DJI FPV.
However, if I repower the F-765 (i.e. with the RSSI parameters written to the board) the F-765 crashes and the only way to get it to life is to flash the firmware and load the parameters again.
The F-765 only crashes if RSSI_TYPE=1, otherwise I can repower w/o trouble. This is 100% reproducible with two identical F-765 setups.
It appears to me that there is a bug with the analogous RSSI input to the F-765. This could be either here with the “arduplane_with_bl.hex” firmware, or with the original arduplane / F-765. However, in RC-Groups I have read no such issue with the analogous RSSI.
Or, do I do a mistake in one of the other Ardupilot settings?
Many thanks for your help, and greatings from Germany,
Rainer

So I have now set up another 2 wings with arduplane, all using DJI for video. A couple of issues but I don’t know if they’re MSP related or bugs with plane.

These are that on an F405-Wing (Matek) I cannot get the FLTMODE item to display, all other objects are displayed in the goggles but not the mode, it does not show at all. If I have MESSAGES enabled then all I get is ‘CRAFT_NAME’ displayed.

Thanks again for the hard work.

OSD_FLTMODE usually has nothing to show, DJI has different flight mode sthat do not map to ardupilot modes, the only time FLTMODE will display something is during a failsafe when it will display !FS!.

Provided you setup OSD_TYPE = 3, OSD1_MESSAGE shoud show you scrolling status text messages and current flight mode

1 Like

So all this stuff is way over my head. Is there a way someone could make a video on how to enable the dji osd in a form an 8 year old could understand, PLEAASSE? I’m running a matekf405 wing board and trying to get my air unit displaying the osd. This is how I’ve set it up so far according to this link.
https://ardupilot.org/copter/docs/common-msp-overview.html

Trying to get Air Speed to display: I have a correct working Digital Air Speed sensor (ASDP-4525) connected to the F765. The air speed is displayed in MP.
I have tried
OSD1_ASPD1_EN,1
OSD1_ASPD1_X,27
OSD1_ASPD1_Y,7
and
OSD1_GSPEED_EN,1
OSD1_GSPEED_X,27
OSD1_GSPEED_Y,7
and was expecting an override of the GPS Ground speed.
However it makes no difference: there is always the GPS speed displayed.
Any ideas?
Many thanks, Rainer

Hi @FlyEnjoy, you need to use OSD1_ASPEED_EN = 1 (values for X and Y do not matter for the GSPEED_X and GSPEED_Y will be used)

cheers,

Alex

1 Like

Hi Alex,
thanks, however I had tried OSD1_ASPEED_EN=1 before. I just checked again: no AirSpeed displayed. When I turn-off the (OSD1_GSPEED_EN=0) the GPS speed disappears, which is correct I guess.
In MP the Airspeed is correctly shown as “airspeed” in the status window, and also in the left bar.
Any further idea? thanks Rainer

Hi Rainer, I just tried again, here I get airspeed over gspeed when OSD1_ASPEED_EN = 1, mhmm, no ideas actually, you also need to have a valid airspeed estimate, you should see the gspeed widget blink right after boot, it signals no valid estimate with flashing, do you see it flash?

yes - I have the GPS speed (0km/h) flashing as long as there is no GPS fix. After GPS is fixed the flashing stops and a solid 0km/h ist shown right to the odometer pictogram.
Could it be an issue with the unit? In MP the air speed is shown as m/s, in the Goggles as km/h?
Or could it be related to the Matek digital air speed sensor? It is connected to DA2 CL2 on the F-765 board. Do you also have a digital connected to F-765 board, or is it an analog signal?

no, the quick check I did was connecting the air unit to SITL via a real serial port and run a plane mission, I checked what I had in the goggles against mavproxy and on screen OSD, I enabled a simulated wind of 10 m/s and saw airspeed change when flying against the wind and with the wind. OSD1_ASPEED_EN toggled ground speed and airspeed so everything worked as expected.

Yours should not be an issue with the units, we always send metric and the goggles render them as ft/s or km/h.
I tested this setup on a MatekF405-Wing with a digital airspeed sensor on the bench only, it was a while ago though

Hi everyone,
When I use the msp OSD for the DJI unit,
neither my CAN GPS or CAN airspeed sensor will work.
Is there a workaround?
I use the latest master for the Matek H743.
Michael

Hi Everyone,

I am trying to reverse engineer the MSP v2 protocol for Mateksys 3901 communication.

24, 58, 3C, 0,        1, 1F,        5, 0,     FF,        3F, 0, 0, 0,                   EE,
$   X   <         rangefinder    (5 bytes)   quality     distance                       crc
24, 58, 3C, 0,        1, 1F,        5, 0,     FF,        3B, 0, 0, 0,                   2F, 
$   X   <         rangefinder    (5 bytes)   quality     distance                       crc
24, 58, 3C, 0,        2, 1F,        9, 0,     8E,        0, 0, 0, 0,   0, 0, 0, 0,      65,
                   optic flow    (9 bytes)   quality    motion_x       motion_y         crc
24, 58, 3C, 0         24, 24 24 24 24 24 24 24 24 24 24 0 24 2 .......
$   X   <          no idea what is this

After the fourth message I get some semi random repeating data of lot of 24 hex numbers with sometimes an inserted hex code of 0, or 3C 9 FF.
Whenever I turn on the sensor the first 3 messages looks ok, but from that onward I have no idea what is the sensor outputting.
I looked through the code, and I got the hit from Alexes comments that I should send some command to switch from polling mode to command mode, to the board will stay silent only only answer to sent commands. Unfortunately I have no idea what should be sent. Can someone help, or point me where can I find some documentation of MSP v2 and especially the format of the different messages, message types and protocol flow.

Thanks, Denes

Hi, I was talking about ardupilot only, I added an option to send MSP telemetry messages without the need for polling from the air unit.

The matek sensor sends periodic MSP v2 frames to ardupilot which has to acknoledge each and every one of them.
I did not dump all of the 3901 messages so not sure if it sends other messages, what I did was simply implementing the handling of MSP rangefinder and opflow messages

Thanks for the help. Do you know what needs to be sent back to acknowledge the frame. I also would like to process these two messages only. Maybe the lack of acknowledgement is the reason for the Mateksys board to only sends the first couple of messages correctly, because it is waiting for the acknowledgement of the sent messages. After those couple of initial correct messages only 0x24 or $ is sent (and probably some noise once in a while). So if you know how to respond to a rangefinder or optic flow message please share it. It is fantastic that you managed to find this out without any documentation about these messages. I did not even know that these messages should be acked.

Thanks

To create the acks you need to check the MSP protocol specs.
What you need is writing your own MSP encode/decoder, it’s not a reverse engineering but rather an implementation by specs.

Dear Alex

I have already started to implement my own encoder and decoder from scratch, but
the only documentation that I could find was these two links.


http://armazila.com/MultiwiiSerialProtocol(draft)v02.pdf

I even wrote to Mateksys to provide the specs and they directed me to this page (Ardupilot and Inav)
This is the reason why I reverted to try to reverse engineer the code.

If you have such specs or know where to find them please share it.

thanks