MSP protocol support

Hey Alex, just wondering if there is any idea on having a working horizon line at all? Dark / night time flying could use this.

Other than that, it has been working extremely well for me for many flights now on F765-wing FC’s - thanks!

Hi all,
now that @Tridge merged MSP support in master MSP OSD parameters are shared with ArduPilot integrated OSD, older MSP_OSD_ parameters will no longer work!

Matek 3901.L0X

SERIAL_PROTOCOL = 32
SERIAL_BAUD = 115 (should be already set as default)
RNGFND_TYPE = 32
FLOW_TYPE = 7

DJI FPV Goggles or Goggles RE

SERIAL_PROTOCOL = 33
SERIAL_BAUD = 115 (should be already set as default)
MSP_OPTIONS = 0 use both TX/RX (default and preferred way)
MSP_OPTIONS = 1 only TX needed

OSD_TYPE = 3 (MSP)

OSD1_ENABLE = 1
OSD1_ALTITUDE_EN = 1
OSD1_ARMING_EN = 1
OSD1_ASPEED_EN = 1
OSD1_BATTBAR_EN = 1
OSD1_BATUSED_EN = 1
OSD1_BAT_VOLT_EN = 1
OSD1_BLHTEMP_EN = 1
OSD1_BTEMP_EN = 1
OSD1_CELLVOLT_EN = 1
OSD1_CLK_EN = 1
OSD1_CRSSHAIR_EN = 1
OSD1_CURRENT_EN = 1
OSD1_FLTMODE_EN = 1
OSD1_GPSLAT_EN = 1
OSD1_GPSLONG_EN = 1
OSD1_GSPEED_EN = 1
OSD1_HOMEDIR_EN = 1
OSD1_HOMEDIST_EN = 1
OSD1_MESSAGE_EN = 1
OSD1_PITCH_EN = 1
OSD1_POWER_EN = 1
OSD1_ROLL_EN = 1
OSD1_RSSI_EN = 1
OSD1_SATS_EN = 1
OSD1_SIDEBARS_EN = 1
OSD1_VSPEED_EN = 1
OSD1_WIND_EN = 1

Note: OSD positions can be adjusted using mission planner OSD configurator

Artificial horizon:

  • OSD_SIDEBARS ladders
  • OSD_CRSSHAIR crosshair
  • horizon line is unsupported (DJI firmware does not support it)

Ardupilot specific “features” and notes

  • OSD_MESSAGE enables the display of status text messages as a scrolling 12 chars text (12 is the maximum allowed by the DJI system). Each message is displayed up to SD_MSGTIME, then it is hidden. The OSD_MESSAGE widget is also used to display the current ardupilot flight mode (STAB, MANU, LOIT, etc) when there are no messages displayed. Upon flight mode changes the flightmode name will flash for 3 seconds even if there’s a text message scrolling, after the 3 seconds scrolling will resume for the remaining scrolling time.
    The same text area is used to display wind speed and direction.
  • OSD_SATS (gps sats number) will flash if there’s no fix (DJI issue shows 14 sats when no fix)
  • OSD_HOMEDIR and OSD_HOMEDIST will flash if HOME is not set.
  • OSD_ASPEED (airspeed) is supported as override of the OSD_GSPEED item, so if you enable airspeed display you’ll loose groundspeed display.
    Airspeed will flash if no estimate available.
  • clock will flash id no GPS lock (required for valid date/time)
  • cell and battery voltage will flash on battery failsafe
2 Likes

Thanks Brady!
unfortunately screen rendering is totally up to DJI, we only provide the telemetry info and the goggles render them on screen, so for the horizon line we’ll need to wait a DJI firmware update supporting it!

That makes sense, it hadn’t actually occured to me that it’s a rendering issue rather than anything else.

Fingers crossed DJI include that in the next round of FW updates, along with other options people are asking for.

1 Like

@yaapu thanks for this awesome addition first of all! i’d appreciate help on how to run the osd mockup in SITL (WSL/Ubuntu). running sim_vehicle.py --osd on master i do get the standard maxchip osd mockup on OSD_TYPE = 2, but i can’t seem to wrap my head around how to get the MSP OSD running on AP_MSP/Tools/msposd.py?

thanks in advance,

basti.

EDIT: nevermind, got it running by typing
./../libraries/AP_MSP/Tools/msposd.py & sim_vehicle.py --osd
when starting SITL from vehicle folder.
working great, thanks again!

1 Like

I believe Henry will be documenting this soon, but here is a rough guide:

  • build with sim_vehicle.py with --osd option
  • param set OSD_TYPE=3
  • param set MSP_OPTIONS=1
  • param set SERIAL2_PROTOCOL=33
  • restart SITL
  • in a separate terminal, run libraries/AP_MSP/Tools/msposd.py
  • optionally load parameters from libraries/AP_MSP/Tools/osdtest.parm to get more elements displayed

You can also run on a real board. I find it useful to run against OTG2 on F7/H7 boards. Just set SERIALn_PROTOCOL=33 for the last SERIALn port and connect to the 2nd USB endpoint for the board using msposd.py --port /dev/XXXXX

1 Like

thanks @tridge actually it’s the additional terminal i’m struggling with under wsl/ubuntu. combining commands with a & separator from a single command line seems like a quite convenient alternative, requiring no additional settings.

one thing i could’t figure intuitively was how to bring the flightmodes on screen. reading code told me i’d find them in the message panel. would it be an option to put the flightmodes into the actual flightmode panel?

cheers and thanks again for those great additions!

Hi basti, that’s not possible because DJI goggles render only a very limited set of flightmodes based on a bitmask STAB,HORIZON, HEAD, FS and RESCUE.
What I’ve done is hide all modes except for failsafe which is rendered as !FS! by the goggles (and makes sense for ardupilot users)
We have no control on how the goggles render items we feed telemetry and the goggles render them on screen .

1 Like

aah ok, thanks @yaapu for the explanation! pretty obviously i don’t have that hardware …yet :wink:

1 Like

Hello,
I can’t seem to enable the osd on a cubeblack with “latest” firmware.
OSD_EN = 1 is missing!
Did anyone else notice this?

it is OSD_TYPE, and needs to be set to 3 for MSP

Got it thank you. I will try again today!

Hi Alex,

as always top implemented! Thank you very much!

I have already gotten used to your original arrangement of the elements in the OSD. Do you perhaps have the appropriate coordinates for the now integrated OSD as text?

The statistics screen is not yet included, right?

Hi Reinhard,
you can find the coordinates in this file ardupilot/libraries/AP_MSP/Tools/osdtest.parm at master · ArduPilot/ardupilot · GitHub.

Older coordinates will work just fine, simply use the new parameters names.

Stats have not been implemented yet, we did a feature freeze before getting it into master, I’ll be working on stats as next feature.

Hey, great work!! can you please compile a hex for Radiolink mini PIX V1.0 or can i just use one already and for pixhawk im kinda of a noob when it come to coding and software

https://radiolink.com/filedownload/46291

STM32F405VGT6 processor and LPS22HB barometer from America ST,
MPU6500 accelerometer from INVENSENS, QMC5883L compass which same technology as
HMC5983 from Honeywell

Hi Evan, no need for custum build, the mini-pix v1 is already supported, just use Mission Planner and select beta firmware, or download from ArduPilot firmware : /Plane/latest/mini-pix and use MissionPlanner for flashing

Alex

ok so i installed 4.0.6 set protocol to 30 and s_options to 3 and buad to 115 still nothing where do i type the msp comms to turn stuff on and off i dont see any osd data

You need to select beta firmware! MSP is not supported in stable

4.0.6 is beta im pretty sure

Hi Alex are you on discord