Servers by jDrones

Help me with DJI MSP Telemetry please


I’m currently using a Durandal H7 flight controller with the DJI digital FPV goggles and a DJI Air Unit vtx. I have been trying to use D3ngit’s Arduino MSP to MAVLink translation solution with limited success.

As I was digging into troubleshooting, I noticed that @yaapu appears to have incorporated MSP directly into Ardupilot. I don’t see any details on the conversations posted to discuss but if I’m reading Github correctly, Yaapu’s branch was merged back into the main codebase on 9/1/20. I don’t see any references to MSP telem on the instructional website and I haven’t dug into the code enough to figure out how to try and use it. Before I go to all that trouble, can anyone confirm that MSP has indeed been merged into the mainstream ardupilot releases?

If the answer about Yaapu’s changes are other than positive, then I’ll need some help with @D3ngit 's solution. I suspect I’ve got a hardware/wiring issue, but I’ll get to that.

I loaded up an arduino nano with the v2 translation code, wired it up to my drone, and I get an OSD in the DJI goggles. Unfortunately, the only telemetry that seems to be accurately passed is the flight mode.

I followed the instructions here: which were fairly comprehensive although they glossed over a few points regarding the hardware connections. I think I’ve got things figured out.

Arducopter SERIAL2_PROTOCOL=2 (mavlink2) SERIAL2_BAUD=57 (57600)
I’ve tried protocol=1 (mavlink1) but that did not change the results

My wiring:
Air Unit white (UART RX) -> Arduino D0 (TX) [SCOPE CH2]
FC Telem2 Pin2 (TX) -> Arduino D8 [SCOPE CH3]
FC Telem2 Pin3 (RX) -> Arduino D9 [SCOPE CH1]
FC Telem2 Pin6 (GND) -> Arduino GND
5vBuck Converter POS -> Arduino +5V
5vBuck Converter GND -> Arduino GND
9vBuck Converter GND -> AirUnit Black
9vBuck Converter Red -> AirUnit Red

I get no data on FC Telem2 Pin2 (TX) -> Arduino D8. Not sure what’s going on there (see oscilloscope output).

Arduino serial monitor output:
Sorry, it’s a screenshot of text. I couldn’t get it to cut/paste correctly. Notice that some data comes through plain text such as flight mode - the only OSD item that is working.

Oscilloscope Output:
All the noise is coming from a little DC fan I’ve got sitting on the air unit for cooling. Removing the fan does not change the results.

So… any suggestions on where to go? I’m stumped at the moment. I’ve got two buck converters so I can run the Air Unit at 9v and Arduino at 5v. Possibly the ground level isn’t correctly matching? I may try running the Air Unit from 5v and see where that gets me.

If MSP has been implemented directly, I’ll need some help with that. Especially SERIAL2_PROTOCOL and other settings needed for MSP. I presume Air Unit TX -> Serial2 RX and Air Unit RX -> Serial2 TX would be about it.

@yaapu’s branch has been merged, it works well although I haven’t tried it myself

1 Like

Thanks! I whacked the latest 4.1.0-dev onto my FC in order to go down that path.

If anyone happens to have a link to details on setting up, please pass it my way.

thread on discuss MSP protocol support
official wiki docs


1 Like

I dont know if that converter requests the relevant parameters over mavlink, you may have to set SRx parameters like for some OSD boards.

Thanks! That was super easy to get working. Doc omits port speed. I’d already set it to 115200 per one of the posts in the thread but it might be worth adding to the docs.

1 Like

Glad you got it working!
Port speed is automagically set to 115200 :slight_smile:

1 Like

If you have a look in wiring section “port speed 57600” :+1:

Servers by jDrones