MSP protocol support

Great! flash the latest firmware, its working now! in the first time I try to use the latest firware, this is no protocal 33 and MSP options, anyway, thanks a lot.

2 Likes

Hi there,

I flashed my cube orange with the 4.10 fixed wing firmware. So far so good. But after I loaded my parameter list and matched the dji osd parameter I got the osd to work, but unfortunately I saw there no vtol parameter in the flight modes page. Did I something wrong or are those sections of the code not yet integrated?

Regards Patrick

Hi everyone, I’ve been trying and failing to get the custom OSD working on the DJI goggles for a while now and would appreciate any ideas you might have to get it working.

I’m using a Kakute F7 board running the latest firmware (4.1.0 dev) with a Caddx Vista VTx.

The main issue I’ve noticed (which may be the sole reason why it’s not working) is that there is no MSP_OPTIONS parameter available in the firmware as far as I can see.

I was originally going to ask why that might be (and go through everything I’ve tried), but I just noticed that the Firmware Limitations wiki page (https://ardupilot.org/copter/docs/common-limited-firmware.html) has recently been updated and the Kakute F7 board now has a long list of ‘missing features’ rather than just the four that were previously listed. The MSP protocol is one of the features which is now missing.

Is there any way to get the MSP function to work on the Kakute F7, or is it just not an available feature anymore?

Also, does anyone have any insight why this board now has this new list of features left out (that were previously available)?

Thanks.

Hi, you’re right, current configuration does not include MSP (and a lot more) by default, if you can build it yourself you should edit

/ardupilot/libraries/AP_HAL_ChibiOS/hwdef/KakuteF7/hwdef.dat

and manually enable MSP support

The last part of hwdef.dat should look like

# setup for OSD
define OSD_ENABLED 1
define OSD_PARAM_ENABLED 1
define HAL_OSD_TYPE_DEFAULT 1
ROMFS_WILDCARD libraries/AP_OSD/fonts/font*.bin

define BOARD_PWM_COUNT_DEFAULT 6
define STM32_PWM_USE_ADVANCED TRUE

# disable SMBUS and fuel battery monitors to save flash
define HAL_BATTMON_SMBUS_ENABLE 0
define HAL_BATTMON_FUEL_ENABLE 0

# disable parachute and sprayer to save flash
define HAL_PARACHUTE_ENABLED 0
define HAL_SPRAYER_ENABLED 0

# enable MSP
define HAL_MSP_ENABLED 1

# uncomment the following to enable CRSF
#define HAL_CRSF_ENABLED 1
#define HAL_CRSF_TELEM_ENABLED 1
#define HAL_CRSF_TELEM_TEXT_SELECTION_ENABLED 1

# save FLASH, but leave above when flash issue is fixed
define HAL_MINIMIZE_FEATURES 1

# reduce max size of embedded params for apj_tool.py
define AP_PARAM_MAX_EMBEDDED_PARAM 1024

Thanks for that information Alex. Great to hear it should be possible to get it working.

Unfortunately I haven’t built any custom firmware before, and from initial research it doesn’t look like a quick thing to pick up. If it’s not too much hassle for you, would it be possible for you to create a build with that custom code included? I’m sure there are others that would also find it useful. If it’s a bigger task to do than I realise, don’t worry about it and I’ll just have to try and get my head around it.

Hi, try these builds, they should work just fine

kakutef7_arducopter.zip (572.9 KB)
kakutef7_arduplane.zip (592.6 KB)

Perfect! Worked instantly. Massive thanks for the assistance Alex!

1 Like

Had anyone already checked if the osd is working on the dji fpv with a matek h743? I tried already all serial ports and can’t get the osd to work. Already tried to invert the signal via mp with no success.

Maybe someone can help.

Hey folks! I just went through and arranged the OSD xy coordinates by hand to my usual configuration, just figured it might help folks to have an example to start with!

For QGroundControl, save as some-ardupilot-dji-osd.params then go to Parameters -> Tools -> Load From File!

# Vehicle-Id Component-Id Name Value Type

1	1	OSD_TYPE	3	2
1	1	MSP_OPTIONS	0	2
# 1	1	SERIAL5_PROTOCOL	33	2

1	1	OSD1_ALTITUDE_EN	1	2
1	1	OSD1_ALTITUDE_X	20	2
1	1	OSD1_ALTITUDE_Y	7	2
1	1	OSD1_ARMING_EN	1	2
1	1	OSD1_ARMING_X	8	2
1	1	OSD1_ARMING_Y	0	2
1	1	OSD1_ASPEED_EN	1	2
1	1	OSD1_ASPEED_X	4	2
1	1	OSD1_ASPEED_Y	9	2
1	1	OSD1_BATTBAR_EN	1	2
1	1	OSD1_BATTBAR_X	3	2
1	1	OSD1_BATTBAR_Y	15	2
1	1	OSD1_BATUSED_EN	1	2
1	1	OSD1_BATUSED_X	2	2
1	1	OSD1_BATUSED_Y	2	2
1	1	OSD1_BAT_VOLT_EN	1	2
1	1	OSD1_BAT_VOLT_X	2	2
1	1	OSD1_BAT_VOLT_Y	14	2
1	1	OSD1_CELLVOLT_EN	1	2
1	1	OSD1_CELLVOLT_X	13	2
1	1	OSD1_CELLVOLT_Y	1	2
1	1	OSD1_CURRENT_EN	1	2
1	1	OSD1_CURRENT_X	2	2
1	1	OSD1_CURRENT_Y	1	2
1	1	OSD1_ENABLE	1	2
1	1	OSD1_FLTMODE_EN	1	2
1	1	OSD1_FLTMODE_X	6	2
1	1	OSD1_FLTMODE_Y	6	2
1	1	OSD1_GPSLAT_EN	1	2
1	1	OSD1_GPSLAT_X	0	2
1	1	OSD1_GPSLAT_Y	13	2
1	1	OSD1_GPSLONG_EN	1	2
1	1	OSD1_GPSLONG_X	0	2
1	1	OSD1_GPSLONG_Y	14	2
1	1	OSD1_GSPEED_EN	1	2
1	1	OSD1_GSPEED_X	5	2
1	1	OSD1_GSPEED_Y	7	2
1	1	OSD1_HOMEDIR_EN	1	2
1	1	OSD1_HOMEDIR_X	20	2
1	1	OSD1_HOMEDIR_Y	1	2
1	1	OSD1_HOMEDIST_EN	1	2
1	1	OSD1_HOMEDIST_X	19	2
1	1	OSD1_HOMEDIST_Y	0	2
1	1	OSD1_MESSAGE_EN	1	2
1	1	OSD1_MESSAGE_X	15	2
1	1	OSD1_MESSAGE_Y	0	2
1	1	OSD1_PITCH_EN	1	2
1	1	OSD1_PITCH_X	24	2
1	1	OSD1_PITCH_Y	12	2
1	1	OSD1_POWER_EN	1	2
1	1	OSD1_POWER_X	2	2
1	1	OSD1_POWER_Y	0	2
1	1	OSD1_RSSI_EN	1	2
1	1	OSD1_RSSI_X	27	2
1	1	OSD1_RSSI_Y	0	2
1	1	OSD1_SATS_EN	1	2
1	1	OSD1_SATS_X	26	2
1	1	OSD1_SATS_Y	1	2
1	1	OSD1_STATS_EN	0	2
1	1	OSD1_STATS_X	0	2
1	1	OSD1_STATS_Y	0	2
1	1	OSD1_VSPEED_EN	1	2
1	1	OSD1_VSPEED_X	26	2
1	1	OSD1_VSPEED_Y	11	2

Such great work on this @yaapu, thanks so much.

1 Like

Hi,

I have a quadcopter that uses the Kakute-F7 FC and 3901-L0X optical flow and lidar sensor. When I did the ground test, the log showed very reasonable data, but when I fly it, it’s very uncontrollable and the range finder seems to make thing worse. I’ve attached both logs. Thanks.

OF Flight.bin (490 KB) OF Ground Test.bin (732 KB)

I found that my 3901 is basically useless in open sun or brighter light levels. It’s okay in doors but that’s about it. I’ve given up on it for now.

That’s disappointing, but thanks for the info. I was flying on a very sunny day.

Hi, I am an old user of arduplane/arducopter (±10 years) and I have recently flipped my wallet and bought a DJI Goggles v1 and a DJI Air unit to upgrade the visuals on my ZOHD Drift.
I’ve been using Plane 4.0.9 version and all worked well with the analog video system.
So I searched google to see how can I have OSD from the flight controller and avoiding the route of having an extra arduino in my already heavy build, I ended up here. Read some basic documentation then downloaded the corresponding .apj file from your branch and tried to set up the OSD but I’m not succeeding. I have an Omnibus F4 Nano v6.1 revision so yeah some things are not as on the original, maybe that’s why I’m having difficulties setting this up. Can any body help me? I’m not sure how to wire up the telemetry and to which port. https://ardupilot.org/copter/docs/common-omnibusnanov6.html here is the documentation. I tried enabling BRD_Altconfig =1 but I don’t have SERIAL4 in the parameter list, so i could use pins Tx3/Rx3 for telemetry. Right now I hooked up the white wire to tx1 and grey wire to rx1 (though on rev 6.1 supposedly rx1 is not available). I have set Serial1_protocol 30, serial1_baud 115 and serial1_options 3. So what am I doing wrong? :smiley: any help would be apreciated

Me again. Managed to fix my issues :smiley: Flashed the latest 4.1dev firmware to my board, serial 4 became available, so I hooked up the dji air unit to UARTS TX3/RX3 and voila, osd appeared. Couple of things are overlapped in the upper right corner buut I guess now I just have to do some arranging stuff. Thanks, and I hope my experience will help somebody out that also has an Omnibus F4 Nano V6 revision 6.1 or 6.2. Cheers! :sunglasses:

Hi, don’t use my branch, go for latest master here,
set BRD_ALT_CONFIG = 1 and reboot, you should have SERIAL4 now (more info here)

SERIAL4_PROTOCOL = 33, OSD_TYPE=3, MSP_OPTIONS=0

check the wiki for more info

1 Like

great, you followed my suggestion …before I wrote it :slight_smile:

1 Like

Yeah, I had an amazing flight today, the only things not working in the OSD are the AMP consumption, total and current. I’ve arranged the OSD items per Tim O’Brien’s settings - thank you for that btw. I wonder if I need to set something else in the arduplane parameters, not sure if the Omnibus F4 Nano v6.1 supports this because there is no current resistor like on it’s bigger brother that I have in my Mini Talon and my WingWing Z84 (Omnibus F4 Pro V3) Any ideas? Thanks again!

current should work, is it working in Mission Planner? Did you properly setup a battery monitor?

Hi folks. I’m about to buy a Shark Byte system, but am concerned about OSD. I looked thru the thread and saw nary a mention of Shark Byte. I’d like to know if ardupilot will support OSD with the Fatshark Shark Byte system.

Thanks.

Hi Alex, sorry to bother you, but I can’t seem to enable the MSP support for Matek 3901-L0X lidar in Config after I flashed the copter to latest stable version. My FC is Kakute F7 Mini. I tried to follow your note about manually adding support back in hwdef.dat, but got lost in trying to compile. Is it possible that you can help to build the latest firmware with MSP support of Kakute F7 mini? Thank you very much.