diff --git a/docs/development/msp/README.md b/docs/development/msp/README.md
index 7377eef84bc..97acd69cb2f 100644
--- a/docs/development/msp/README.md
+++ b/docs/development/msp/README.md
@@ -251,8 +251,6 @@ When the MSP JSON specification changes, bump `msp_messages.json` version:
[81 - MSP_SET_BLACKBOX_CONFIG](#msp_set_blackbox_config)
[82 - MSP_TRANSPONDER_CONFIG](#msp_transponder_config)
[83 - MSP_SET_TRANSPONDER_CONFIG](#msp_set_transponder_config)
-[84 - MSP_OSD_CONFIG](#msp_osd_config)
-[85 - MSP_SET_OSD_CONFIG](#msp_set_osd_config)
[86 - MSP_OSD_CHAR_READ](#msp_osd_char_read)
[87 - MSP_OSD_CHAR_WRITE](#msp_osd_char_write)
[88 - MSP_VTX_CONFIG](#msp_vtx_config)
@@ -1391,63 +1389,6 @@ When the MSP JSON specification changes, bump `msp_messages.json` version:
**Notes:** Not implemented in INAV `fc_msp.c`.
-## `MSP_OSD_CONFIG (84 / 0x54)`
-**Description:** Retrieves OSD configuration settings and layout for screen 0. Coordinates are packed as `(Y << 8) | X`. When `USE_OSD` is not compiled in, only `osdDriverType` = `OSD_DRIVER_NONE` is returned.
-
-**Request Payload:** **None**
-
-**Reply Payload:**
-|Field|C Type|Size (Bytes)|Units|Description|
-|---|---|---|---|---|
-| `osdDriverType` | `uint8_t` | 1 | [osdDriver_e](https://github.com/iNavFlight/inav/wiki/Enums-reference#enum-osddriver_e) | Enum `osdDriver_e`: `OSD_DRIVER_MAX7456` if `USE_OSD`, else `OSD_DRIVER_NONE`. |
-| `videoSystem` | `uint8_t` | 1 | [videoSystem_e](https://github.com/iNavFlight/inav/wiki/Enums-reference#enum-videosystem_e) | Enum `videoSystem_e`: Video system (Auto/PAL/NTSC) (`osdConfig()->video_system`). Sent even if OSD disabled |
-| `units` | `uint8_t` | 1 | [osd_unit_e](https://github.com/iNavFlight/inav/wiki/Enums-reference#enum-osd_unit_e) | Enum `osd_unit_e` Measurement units (Metric/Imperial) (`osdConfig()->units`). Sent even if OSD disabled |
-| `rssiAlarm` | `uint8_t` | 1 | % | RSSI alarm threshold (`osdConfig()->rssi_alarm`). Sent even if OSD disabled |
-| `capAlarm` | `uint16_t` | 2 | mAh/mWh | Capacity alarm threshold (`currentBatteryProfile->capacity.warning`). Truncated to 16 bits. Sent even if OSD disabled. |
-| `timerAlarm` | `uint16_t` | 2 | minutes | Timer alarm threshold in minutes (`osdConfig()->time_alarm`). Sent even if OSD disabled. |
-| `altAlarm` | `uint16_t` | 2 | meters | Altitude alarm threshold (`osdConfig()->alt_alarm`). Sent even if OSD disabled |
-| `distAlarm` | `uint16_t` | 2 | meters | Distance alarm threshold (`osdConfig()->dist_alarm`). Sent even if OSD disabled |
-| `negAltAlarm` | `uint16_t` | 2 | meters | Negative altitude alarm threshold (`osdConfig()->neg_alt_alarm`). Sent even if OSD disabled |
-| `itemPositions` | `uint16_t[OSD_ITEM_COUNT]` | OSD_ITEM_COUNT | packed | Packed X/Y position for each OSD item on screen 0 (`osdLayoutsConfig()->item_pos[0][i]`). Sent even if OSD disabled |
-
-**Notes:** 1 byte if `USE_OSD` disabled; full payload (1 + fields + 2*OSD_ITEM_COUNT bytes) otherwise.
-
-## `MSP_SET_OSD_CONFIG (85 / 0x55)`
-**Description:** Sets OSD configuration or a single item's position on screen 0.
-#### Variant: `dataSize >= 10`
-
-**Description:** dataSize >= 10
-
-**Request Payload:**
-|Field|C Type|Size (Bytes)|Units|Description|
-|---|---|---|---|---|
-| `selector` | `uint8_t` | 1 | - | Must be 0xFF (-1) to indicate a configuration update. |
-| `videoSystem` | `uint8_t` | 1 | [videoSystem_e](https://github.com/iNavFlight/inav/wiki/Enums-reference#enum-videosystem_e) | Enum `videoSystem_e`: Video system (Auto/PAL/NTSC) (`osdConfig()->video_system`). |
-| `units` | `uint8_t` | 1 | [osd_unit_e](https://github.com/iNavFlight/inav/wiki/Enums-reference#enum-osd_unit_e) | Enum `osd_unit_e` Measurement units (Metric/Imperial) (`osdConfig()->units`). |
-| `rssiAlarm` | `uint8_t` | 1 | % | RSSI alarm threshold (`osdConfig()->rssi_alarm`). |
-| `capAlarm` | `uint16_t` | 2 | mAh/mWh | Capacity alarm threshold (`currentBatteryProfile->capacity.warning`). Truncated to 16 bits. |
-| `timerAlarm` | `uint16_t` | 2 | minutes | Timer alarm threshold in minutes (`osdConfig()->time_alarm`). |
-| `altAlarm` | `uint16_t` | 2 | meters | Altitude alarm threshold (`osdConfig()->alt_alarm`). |
-| `distAlarm` | `uint16_t` | 2 | meters | Distance alarm threshold (`osdConfig()->dist_alarm`). Optional trailing field. |
-| `negAltAlarm` | `uint16_t` | 2 | meters | Negative altitude alarm threshold (`osdConfig()->neg_alt_alarm`). Optional trailing field. |
-
-**Reply Payload:** **None**
-
-#### Variant: `dataSize == 3`
-
-**Description:** Single item position update
-
-**Request Payload:**
-|Field|C Type|Size (Bytes)|Units|Description|
-|---|---|---|---|---|
-| `itemIndex` | `uint8_t` | 1 | Index | Index of the OSD item to update (0 to `OSD_ITEM_COUNT - 1`). |
-| `itemPosition` | `uint16_t` | 2 | packed | Packed X/Y position (`(Y << 8) | X`) for the specified item. |
-
-**Reply Payload:** **None**
-
-
-**Notes:** Requires `USE_OSD`. Distinguishes formats based on the first byte. Format 1 requires at least 10 bytes. Format 2 requires 3 bytes. Triggers an OSD redraw. See `MSP2_INAV_OSD_SET_*` for more advanced control.
-
## `MSP_OSD_CHAR_READ (86 / 0x56)`
**Description:** Reads character data from the OSD font memory.
diff --git a/docs/development/msp/msp_messages.json b/docs/development/msp/msp_messages.json
index 176833915ad..5466675739e 100644
--- a/docs/development/msp/msp_messages.json
+++ b/docs/development/msp/msp_messages.json
@@ -1,7 +1,7 @@
{
"version": {
- "major": 2,
- "minor": 1,
+ "major": 3,
+ "minor": 0,
"patch": 0
},
"messages": {
@@ -2433,182 +2433,6 @@
"notes": "Not implemented in INAV `fc_msp.c`.",
"description": "Set VTX Transponder settings."
},
- "MSP_OSD_CONFIG": {
- "code": 84,
- "mspv": 1,
- "replaced_by": ["MSP2_INAV_OSD_LAYOUTS", "MSP2_INAV_OSD_ALARMS", "MSP2_INAV_OSD_PREFERENCES"],
- "request": null,
- "reply": {
- "payload": [
- {
- "name": "osdDriverType",
- "ctype": "uint8_t",
- "desc": "Enum `osdDriver_e`: `OSD_DRIVER_MAX7456` if `USE_OSD`, else `OSD_DRIVER_NONE`.",
- "units": "Enum",
- "enum": "osdDriver_e"
- },
- {
- "name": "videoSystem",
- "ctype": "uint8_t",
- "desc": "Enum `videoSystem_e`: Video system (Auto/PAL/NTSC) (`osdConfig()->video_system`). Sent even if OSD disabled",
- "units": "Enum",
- "enum": "videoSystem_e"
- },
- {
- "name": "units",
- "ctype": "uint8_t",
- "desc": "Enum `osd_unit_e` Measurement units (Metric/Imperial) (`osdConfig()->units`). Sent even if OSD disabled",
- "units": "Enum",
- "enum": "osd_unit_e"
- },
- {
- "name": "rssiAlarm",
- "ctype": "uint8_t",
- "desc": "RSSI alarm threshold (`osdConfig()->rssi_alarm`). Sent even if OSD disabled",
- "units": "%"
- },
- {
- "name": "capAlarm",
- "ctype": "uint16_t",
- "desc": "Capacity alarm threshold (`currentBatteryProfile->capacity.warning`). Truncated to 16 bits. Sent even if OSD disabled.",
- "units": "mAh/mWh"
- },
- {
- "name": "timerAlarm",
- "ctype": "uint16_t",
- "desc": "Timer alarm threshold in minutes (`osdConfig()->time_alarm`). Sent even if OSD disabled.",
- "units": "minutes"
- },
- {
- "name": "altAlarm",
- "ctype": "uint16_t",
- "desc": "Altitude alarm threshold (`osdConfig()->alt_alarm`). Sent even if OSD disabled",
- "units": "meters"
- },
- {
- "name": "distAlarm",
- "ctype": "uint16_t",
- "desc": "Distance alarm threshold (`osdConfig()->dist_alarm`). Sent even if OSD disabled",
- "units": "meters"
- },
- {
- "name": "negAltAlarm",
- "ctype": "uint16_t",
- "desc": "Negative altitude alarm threshold (`osdConfig()->neg_alt_alarm`). Sent even if OSD disabled",
- "units": "meters"
- },
- {
- "name": "itemPositions",
- "desc": "Packed X/Y position for each OSD item on screen 0 (`osdLayoutsConfig()->item_pos[0][i]`). Sent even if OSD disabled",
- "ctype": "uint16_t",
- "array": true,
- "array_size": 0,
- "array_size_define": "OSD_ITEM_COUNT",
- "units": "packed"
- }
- ]
- },
- "variable_len": true,
- "notes": "1 byte if `USE_OSD` disabled; full payload (1 + fields + 2*OSD_ITEM_COUNT bytes) otherwise.",
- "description": "Retrieves OSD configuration settings and layout for screen 0. Coordinates are packed as `(Y << 8) | X`. When `USE_OSD` is not compiled in, only `osdDriverType` = `OSD_DRIVER_NONE` is returned."
- },
- "MSP_SET_OSD_CONFIG": {
- "code": 85,
- "mspv": 1,
- "replaced_by": ["MSP2_INAV_OSD_SET_LAYOUT_ITEM", "MSP2_INAV_OSD_SET_ALARMS", "MSP2_INAV_OSD_SET_PREFERENCES"],
- "request": null,
- "reply": null,
- "notes": "Requires `USE_OSD`. Distinguishes formats based on the first byte. Format 1 requires at least 10 bytes. Format 2 requires 3 bytes. Triggers an OSD redraw. See `MSP2_INAV_OSD_SET_*` for more advanced control.",
- "description": "Sets OSD configuration or a single item's position on screen 0.",
- "variants": {
- "dataSize >= 10": {
- "description": "dataSize >= 10",
- "request": {
- "payload": [
- {
- "name": "selector",
- "ctype": "uint8_t",
- "desc": "Must be 0xFF (-1) to indicate a configuration update.",
- "value": 255
- },
- {
- "name": "videoSystem",
- "ctype": "uint8_t",
- "desc": "Enum `videoSystem_e`: Video system (Auto/PAL/NTSC) (`osdConfig()->video_system`).",
- "units": "Enum",
- "enum": "videoSystem_e"
- },
- {
- "name": "units",
- "ctype": "uint8_t",
- "desc": "Enum `osd_unit_e` Measurement units (Metric/Imperial) (`osdConfig()->units`).",
- "units": "Enum",
- "enum": "osd_unit_e"
- },
- {
- "name": "rssiAlarm",
- "ctype": "uint8_t",
- "desc": "RSSI alarm threshold (`osdConfig()->rssi_alarm`).",
- "units": "%"
- },
- {
- "name": "capAlarm",
- "ctype": "uint16_t",
- "desc": "Capacity alarm threshold (`currentBatteryProfile->capacity.warning`). Truncated to 16 bits.",
- "units": "mAh/mWh"
- },
- {
- "name": "timerAlarm",
- "ctype": "uint16_t",
- "desc": "Timer alarm threshold in minutes (`osdConfig()->time_alarm`).",
- "units": "minutes"
- },
- {
- "name": "altAlarm",
- "ctype": "uint16_t",
- "desc": "Altitude alarm threshold (`osdConfig()->alt_alarm`).",
- "units": "meters"
- },
- {
- "name": "distAlarm",
- "ctype": "uint16_t",
- "desc": "Distance alarm threshold (`osdConfig()->dist_alarm`). Optional trailing field.",
- "units": "meters",
- "optional": true
- },
- {
- "name": "negAltAlarm",
- "ctype": "uint16_t",
- "desc": "Negative altitude alarm threshold (`osdConfig()->neg_alt_alarm`). Optional trailing field.",
- "units": "meters",
- "optional": true
- }
- ]
- },
- "reply": null
- },
- "dataSize == 3": {
- "description": "Single item position update",
- "request": {
- "payload": [
- {
- "name": "itemIndex",
- "ctype": "uint8_t",
- "desc": "Index of the OSD item to update (0 to `OSD_ITEM_COUNT - 1`).",
- "units": "Index"
- },
- {
- "name": "itemPosition",
- "ctype": "uint16_t",
- "desc": "Packed X/Y position (`(Y << 8) | X`) for the specified item.",
- "units": "packed"
- }
- ]
- },
- "reply": null
- }
- }
- },
"MSP_OSD_CHAR_READ": {
"code": 86,
"mspv": 1,
diff --git a/src/main/fc/fc_msp.c b/src/main/fc/fc_msp.c
index 1edf45749e2..274c211b81c 100644
--- a/src/main/fc/fc_msp.c
+++ b/src/main/fc/fc_msp.c
@@ -1367,26 +1367,6 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
break;
#endif
- case MSP_OSD_CONFIG:
-#ifdef USE_OSD
- sbufWriteU8(dst, OSD_DRIVER_MAX7456); // OSD supported
- // send video system (AUTO/PAL/NTSC)
- sbufWriteU8(dst, osdConfig()->video_system);
- sbufWriteU8(dst, osdConfig()->units);
- sbufWriteU8(dst, osdConfig()->rssi_alarm);
- sbufWriteU16(dst, currentBatteryProfile->capacity.warning);
- sbufWriteU16(dst, osdConfig()->time_alarm);
- sbufWriteU16(dst, osdConfig()->alt_alarm);
- sbufWriteU16(dst, osdConfig()->dist_alarm);
- sbufWriteU16(dst, osdConfig()->neg_alt_alarm);
- for (int i = 0; i < OSD_ITEM_COUNT; i++) {
- sbufWriteU16(dst, osdLayoutsConfig()->item_pos[0][i]);
- }
-#else
- sbufWriteU8(dst, OSD_DRIVER_NONE); // OSD not supported
-#endif
- break;
-
case MSP_3D:
sbufWriteU16(dst, reversibleMotorsConfig()->deadband_low);
sbufWriteU16(dst, reversibleMotorsConfig()->deadband_high);
@@ -3105,36 +3085,6 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
#endif
#ifdef USE_OSD
- case MSP_SET_OSD_CONFIG:
- sbufReadU8Safe(&tmp_u8, src);
- // set all the other settings
- if ((int8_t)tmp_u8 == -1) {
- if (dataSize >= 10) {
- osdConfigMutable()->video_system = sbufReadU8(src);
- osdConfigMutable()->units = sbufReadU8(src);
- osdConfigMutable()->rssi_alarm = sbufReadU8(src);
- currentBatteryProfileMutable->capacity.warning = sbufReadU16(src);
- osdConfigMutable()->time_alarm = sbufReadU16(src);
- osdConfigMutable()->alt_alarm = sbufReadU16(src);
- // Won't be read if they weren't provided
- sbufReadU16Safe(&osdConfigMutable()->dist_alarm, src);
- sbufReadU16Safe(&osdConfigMutable()->neg_alt_alarm, src);
- } else
- return MSP_RESULT_ERROR;
- } else {
- // set a position setting
- if ((dataSize >= 3) && (tmp_u8 < OSD_ITEM_COUNT)) // tmp_u8 == addr
- osdLayoutsConfigMutable()->item_pos[0][tmp_u8] = sbufReadU16(src);
- else
- return MSP_RESULT_ERROR;
- }
- // Either a element position change or a units change needs
- // a full redraw, since an element can change size significantly
- // and the old position or the now unused space due to the
- // size change need to be erased.
- osdStartFullRedraw();
- break;
-
case MSP2_INAV_OSD_UPDATE_POSITION: {
if (dataSize == 3) {
uint8_t item;
diff --git a/src/main/msp/msp_protocol.h b/src/main/msp/msp_protocol.h
index 6b4705a738c..0b2e97da5f9 100644
--- a/src/main/msp/msp_protocol.h
+++ b/src/main/msp/msp_protocol.h
@@ -189,9 +189,6 @@
#define MSP_TRANSPONDER_CONFIG 82 //out message Get transponder settings
#define MSP_SET_TRANSPONDER_CONFIG 83 //in message Set transponder settings
-#define MSP_OSD_CONFIG 84 //DEPRECATED in INAV 9.1 - use MSP2_INAV_OSD_* instead. Will be removed in INAV 10.0
-#define MSP_SET_OSD_CONFIG 85 //DEPRECATED in INAV 9.1 - use MSP2_INAV_OSD_* instead. Will be removed in INAV 10.0
-
#define MSP_OSD_CHAR_READ 86 //out message Get osd settings - betaflight
#define MSP_OSD_CHAR_WRITE 87 //in message Set osd settings - betaflight