MSP OSD support for Walksnail VTX and AVATAR goggles

I am trying to integrate OSD messages from a Pixhawk 6C mini (Firmware version 1.14.3) with Walksnail VTX to be displayed on AVATAR googles X. I see OSD related parameters in the doc (Parameter Reference | PX4 User Guide (v1.14)), but its not visible when I check the parameters of the Pixhawk from QGC. Following MAVLink Peripherals (GCS/OSD/Companion) | PX4 Guide (main), I enabled OSD on mavlink-1 for telem-2 at 57600 baud rate, but I don’t see anything in the goggles.

Are there any other parameters that need to be updated or does PX4 not support this without using an intermediate module such as Micro OSD, MinimOSD or Mini OSD?

Appreciate any help regarding this!

Thanks!

Hi @Ninad_Jadhav , have you tried the OSD parameters?

You are mixing OSD over MAVLINK (not used by Walksnail) and MSP OSD (used by Walksnail)

Thank you for the reply @Benja ! I don’t see OSD parameters in QGroundControl which I used to install the latest firmware. Do I need to build the firmware locally first and use that file so that the OSD parameters are accessible, instead of using the default one?

Oh right, that driver is not compiled by default. You need to build PX4 locally and enable it.

After compiling locally using instructions from : Reptile Dragon 2 (RD2) Build | PX4 Guide (main), I see the OSD parameters in QGC and set it to TELEM2 (which is connected to the Walksnail). However I still fail to see the messages. A couple of questions I have now are -

a. Does the OSD parameters automatically set the baudrate? After selecting enabling MSP_OSD_CONFIG and selecting TELEM2, I don’t see the SER_TEL2_BAUD (which I would expect to see based on Serial Port Configuration | PX4 Guide (main)) Walksnail requires baudrate of 115200.
b. Do the messages show only when the vehicle is armed?

All the OSD parameters have default values Parameter Reference | PX4 Guide (main) (e.g., OSD_SYMBOLS = 16383).

Yes, it does.

no, they should show all the time.


From the shell, what does msp_osd status report?

I see that its running on the serial port. I also verified that when the VTX is connected to TELEM2 (that I set in the MSP_OSD_CONFIG), the googles automatically start recording when the vehicle is armed (which means that its getting the ARM/disarm messages). But I don’t see any messages on the display.

I want to add that this behaviour is the same on the DJI O3 Airunit with the MSP_OSD.
I also don’t see any OSD symbols but when arming the airunit starts recording and exits low power mode. With the original DJI Airunit it is working as intended with the WTFOSD mod.
On Ardupilot they have a working implementation for O3 Airunit, but I didn’t look into how it is different because I don’t really understand code :confused:

Then the PX4 implementation is probably outdated :smiling_face_with_tear:

hey, fyi same issue here - and no time to look into the code yet.

When you get the OSD Data can in what unit does it display? I have the same issue but I can not display it to metric…
I also want to have the Craft_name displayed but that doesnot work either

Hi all, first post from me as I am looking to convert a system over to PX4… does anyone know if this is fixed now?

I tried the latest stable release(v1.15.0) today, the issue still exists

The issue also exists in v1.15.2.

Status looks OK.

nsh> msp_osd status
INFO  [msp_osd] Running on /dev/ttyS3
INFO  [msp_osd]     initialized: 1
INFO  [msp_osd]     initialization issues: 0
INFO  [msp_osd]     scroll rate: 125
INFO  [msp_osd]     successful sends: 86895
INFO  [msp_osd]     unsuccessful sends: 9655
INFO  [msp_osd] Current message: 
    Hol|DSRM|N

I’m using MSP_OSD_CONFIG set to TELEM2. I only have the altitude and GPS speed set in OSD_SYMBOLS. On my Walksnail Goggles X I tried moving the OSD position and also cycled through the different OSD modes. The default is AUTO, but there are modes for INAV, Betaflight, Ardupilot, etc.

Curious if anyone else has solved this. I’ll be looking at the software next.

The issue here is that the PX4 driver was intended for a particular DJI FPV system, and the different FPV Goggle manufacturers have their own variants of MSP (“Multi-Wii Serial Protocol”) for OSD. There is little documentation available with details on the differences, so it is necessary to read Betaflight or iNav code and experiment with a live system to understand the protocol.

I asked the Walksnail support team for an interface control document, and they directed me to the Betaflight documentation at DisplayPort MSP Extensions | Betaflight. MSP has two versions, and the Avatar system uses the MSP v1 protocol. See the section on the v1 message structure at MSP V2 · iNavFlight/inav Wiki · GitHub.

Essentially, the Avatar system has a canvas which has 20 rows and 53 columns. If you want to write a character to a location on the canvas, you specify the row and column in your message, and the code of the character from the active font. You send the command MSP_DP_CLEAR_SCREEN followed by MSP_DP_WRITE_STRING and then MSP_DP_DRAW_SCREEN to make it appear on the screen. Other FPV systems use different canvas sizes, and some use methods other than the MSP Display Port extensions to draw the overlay.

So far this is pretty simple. A complicating factor is that the Walksnail goggles allow you to use multiple fonts, and the fonts are not consistent with each other. The capital letters, numbers, and a few other symbols use ASCII character codes, but other symbols (e.g. crosshairs, vertical bars, artificial horizon dots) have codes which are unique to the active font set. (e.g. even though the Betaflight and iNav fonts both have crosshairs, the character codes are different). The goggles come from the factory with fonts for Betaflight, iNav, and other systems installed, and you can choose between these sets in the goggle menu, or you can replace these with custom fonts.

Adding support for all of these combinations isn’t a technical feat, but it will take a lot of work. Using the information above, it is a simple matter to hack up the msp_osd driver in PX4 in order to get a basic HUD on the Avatar system with crosshairs, altitude, vertical speed indicator and airspeed, using the Betaflight font. That’s what I settled with (for now).

1 Like