Skip to content

Instantly share code, notes, and snippets.

@shinyquagsire23
Created February 23, 2023 07:43
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shinyquagsire23/7ddd17d1569acb21920683866570cb35 to your computer and use it in GitHub Desktop.
Save shinyquagsire23/7ddd17d1569acb21920683866570cb35 to your computer and use it in GitHub Desktop.
LG MStar firmware disorganized notes -- Hotwords: AEON B2, MStar, LG DualUp Firmware, MST9W00V4, MST9U
DDC/CI Command Codes (antiquated MStar function, not real):
------
0xCC, 0xF1, 0xF0 - LG special? Only CC actually used.
3
1
0xC6
0xC8
0xF3
0xF5
0xB1
0xCC cmds (incomplete):
-----
0x20
0x21
0x30
0x31
0x34
0x35
0x37
0x38
0x3a - Returns a version number "1.1.5"
0x3b
0x3c
0x8e
0x8f
0x90
0xa7
0xa8
0xa9
0xf1 - Returns 0x89abcdef
VCP List:
-----
0x2 ->
0x4 ->
0x5 ->
0x6, 0x1E, 0x20, 0x30, 0x3E, 0xE5 ->
0x8 ->
0xc -> color temp
0x10 -> brightness
0x12 -> ?
0x14 ->
0x15 ->
0x16, 0x18, 0x18 ->
0x1b -> idk
0x50 -> reads eeprom idk
0x52 -> sets some value, scratchpad/debug?
0x60 - current monitor input, setting 0 resets?
0x62 -> sets volume with UI indicator
0x64 -> eMCCS_OPCODE_AUDIO_MICROPHONE_VOLUME
0x6c, 0x6E, 0x70 -> RGB adjust
0x8d -> eMCCS_OPCODE_AUDIO_MUTE mute vs unmute, 0 brings up the overlay, 1 mutes, 2 unmutes
0xa1 -> eMCCS_OPCODE_GET_MONITOR_ID_EXTENDED monitor extend id
0xaf -> eMCCS_OPCODE_MONITOR_MODEL_NAME returns some serial, "28MQ780-V32S"
0xb6 -> eMCCS_OPCODE_MISC_DISPLAY_TECHNOLOGY_TYPE
0xc0 -> eMCCS_OPCODE_DISPLAY_DISPLY_USAGE_TIME
0xc1 -> also returns brightness?
0xc6 -> ?
0xc8 -> ?
0xc9 -> eMCCS_OPCODE_DISPLAY_DISPLY_FIRMWARE_LEVEL returns FF FF 03 03? Scaler version (from NXP)
0xca -> button control status
0xCC -> language
0xcf -> reads eeprom?
0xd0 -> "eMCCS_OPCODE_MISC_OUTPUT_SELECT" no-op
0xd6 -> eMCCS_OPCODE_DISPLAY_POWER_MODE VCP_PowerMode -- setting 5 turns off the display.
0xd7 - 0 when pdp on, 1 when off -- setting 0xd7 to 1 exits PBP, 0x5 and 0x3 are vertical side by side
0xe0 -> picture presets eMCCS_OPCODE_EYE_FINE_WINDOW
0xe2 - eMCCS_OPCODE_HDR_VALUE
0xe3 -> factory mode related
0xe4 -> subcommands: "eMCCS_OPCODE_MANUFACTURER_CALIBATION_COMMAND"
0x02 -> toggle OSD lock
0x03 -> ?
0x04 -> ?
0x05 -> n/a
0x06 -> toggles... brightness?
0x07 -> also brightness
0x08 -> calibration settings?
0xe6 -> eMCCS_OPCODE_MANUFACTURER_WRITE_GAMMA_LUT ---- in NXP fw, TCP on/off?
0xe7 -> eMCCS_OPCODE_MANUFACTURER_WRITE_COLOR_MATRIX
0xe8 -> vals 0-12, one blacks out only the main monitor?
0xea -> calib related, flood fills colors
0xeb -> OSD lock
0xec -> eMCCS_OPCODE_SMARTRESOLUTION
0xed -> eMCCS_OPCODE_MANUFACTURER_PIPMODE_OPCODE
0xee -> "eMCCS_OPCODE_SCREENSPLIT_OSD_MENU", no-op
0xef -> monitor id?
0xF2 -> screen lock?
0xf4 -> eMCCS_OPCODE_MANUFACTURER_GET_RATIO_LIST
0xf5 -> eMCCS_OPCODE_MANUFACTURER_RATIO_VALUE
0xf6 -> eMCCS_OPCODE_MANUFACTURER_SES
0xf7 -> eMCCS_OPCODE_MANUFACTURER_RESPONSE_TIME
0xf8 -> eMCCS_OPCODE_MANUFACTURER_FREE_SYNC
0xf9 -> image related, eMCCS_OPCODE_MANUFACTURER_BLACK_STABILIZER
0xfa -> eMCCS_OPCODE_MANUFACTURER_MOTION_BLUR
0xfb -> also reads eeprom
0xfc -> eMCCS_OPCODE_MANUFACTURER_FENGINE_MODE_SELECT
0xfd -> eMCCS_OPCODE_MANUFACTURER_POWER_LAMP_INDICATOR
0xfe -> eMCCS_OPCODE_MANUFACTURER_IMAGE_GAMMA_PRESET
0x50 DDC2AB:
-------
0x10 - backlight
0x12 - also backlight?
0x16 - R GAIN
0x18 - G GAIN
0x1A - B GAIN
0x1C -
0x40 -
0x41 - max 100
0x42 - returns 0 1 or 2
0x43 - ?
0x44 - ?
0x45 - no-op
0x46 - ?
0x47 - ?
0x68 - no-op (language select?)
0x69 - no-op
0x75 - ?
0x76 -
0x77 - "EDID SN UPDATE"
0x78 - serial number (from NXP fw)
0x79 - ?
0xa7 - ?
0xa8 - ?
0xa9 - ?
0xb0 - ?
0xB2 - "Peak luminance"
0xc0 -
0xc1 -
0xc2 -
0xc7 - fans? from NXP
0xc8 - some version? "PID"? from NXP fw
0xc9 - Scalar FW version?
0xca - Model number (from NXP)
0xcb - GoshenRidgeFirmwareVersion?
0xcd - disables UI loop
0xcf - ScalerFirmwareCurrentResourceVersion (no-op)
0xd0 - sets some value, same func as 0xd2, 0xd4, ...
0xd1 - returns some value, same func as 0xd3, 0xd5, ...
0xd2 - sets some value, same func as 0xd2, 0xd4, ...
0xd3 - returns some value, same func as 0xd3, 0xd5, ...
0xd4 - sets some value, same func as 0xd2, 0xd4, ...
0xd5 - returns some value, same func as 0xd3, 0xd5, ...
0xd6 - sets some value, same func as 0xd2, 0xd4, ...
0xd7 - returns some value, same func as 0xd3, 0xd5, ...
0xd8 - sets some value, same func as 0xd2, 0xd4, ...
0xd9 - returns some value, same func as 0xd3, 0xd5, ...
0xda - sets some value, same func as 0xd2, 0xd4, ...
0xdb - returns some value, same func as 0xd3, 0xd5, ...
0xdc - sets some value, same func as 0xd2, 0xd4, ...
0xdd - returns some value, same func as 0xd3, 0xd5, ...
0xde - sets some value, same func as 0xd2, 0xd4, ...
0xdf - returns some value, same func as 0xd3, 0xd5, ... --- scratchpad? unused.
0xe3 - no-op
0xe4 - "EEPROM ALL INITIAL"
0xe6 - ?
0xe7 - not eeprom?
0xe8 - not eeprom?
0xE9 - elapsed time clear
0xEB - ?
0xed - no-op
0xEF - ?
0xf0 - factory reset
0xF1 - AUTO_COLOR_ADJUST (no-op)
0xF2 - COLOR_MODE_CHANGE 01 warm 02 cool
0xF3 - aging on/off
0xf4 - Input switch 0x90 (HDMI1) 0xD0 (DP) 0xD2 (USB-C)
0xf5 - system reset (reset monitor)
0xf6 - ?
0xf7 - "APD command" (no-op)
0xf8 - probably eeprom read
0xf9 - probably eeprom write
0xfb - available ISP area?
Garbage:
0x5a - other pbp input?
0x55 - 0 when pdp on, 1 when off -- switching the bottom PDP from HDMI 1 to 2 => 0x1 -> 0x16
0xf5 - one pbp input -- 2 when usb c is at the top, 1 when at the bottom -- setting 0 when pdp off resets? -- setting 0xf when pdp on only resets top screen?
FIRMWARE UPDATE JUNK
----------------------------------------------------------------------------
ISP Mode Device 0x53:
------
ISP Mode Device 0x59 (I2C_IO_EXPANDER_ADDR):
------
MST_EnterIspMode:
MST_EnterSerialDbg_ConfigGPIOreg()
MST_EnterSerialDbg_pausingR2()
Send to 0x49: ("MSTAR")
Send to 0x49: (10 05)
Send to 0x49: (11)
read 11
Send to 0x49: (12)
Send to 0x49: (10 9f)
Send to 0x49: (11)
read 3
Send to 0x49: (12)
Send to 0x49: (10 05)
Send to 0x49: (11)
read 3
...
send: 02 07 f4 02 0f 99 32 32 00 22 ff 02 05 5c 8f 38 8d 39 22 02 0a 4d e4 ff fe 22 ff 02 0e 7e 12 94
# see: https://www.mouser.com/datasheet/2/870/gd25q127c_v2.3_20200220-1634067.pdf
BlockWriteCheck:
Send to 0x49: (10 02 hh mm ll) ex (10 02 80 10 00)
send 0x100 bytes
Send to 0x49: (12)
read 32
Send to 0x49: (12)
BlockVerifyCheck:
Send to 0x49: (10 03 hh mm ll)
Send to 0x49: (11)
read 32
Send to 0x49: (12)
MST_EnterSerialDbg_ConfigGPIOreg:
Enter_SerialDebugMode ("SERDB", 0x53 = 'S')
Enter_SingleStepMode (10 c0 c1 53, 10 1F C1 53)
MST_i2cCh0Config: 80, 82, 84, 51, 7F, 37, 61
MST_IicBusCtrl: 35, 71, read 1
MST_DbgReadScalerReg(4, 0x26)
10 04 26
MST_DbgReadScalerReg(4, 0x28)
10 04 28
Exit_SerialDebugMode (34, 45)
MST_EnterSerialDbg_pausingR2:
Enter_SingleStepMode (10 c0 c1 53, 10 1F C1 53)
MST_i2cCh4Config: 80, 82, 85, 53, 7F
MST_IicBusCtrl: 35, 71
?: 10 00 10 0F D7
?: 10 00 10 0F D7
read 11?
MST_DbgReadScalerReg(aa, bb):
?: 10 aa bb
read 1 byte ret
0x10 - Enter_SingleStepMode (10 c0 c1 53, 10 1F C1 53)
0x10 - Exit_SingleStepMode (10 c0 c1 FF, 10 1F C1 FF)
0x45 - exit ISP mode
0x53 - Enter_SerialDebugMode ("SERDB", 0x53 = 'S')
0x80 - ?
0x82 - ?
0x84 - ?
0x51 - ?
0x7F - ?
0x37 - ?
0x61 - ?
From LG's .NET app:
------------------------------------------------------------------------
eMCCS_OPCODE_MISC_DEGAUSS = 1,
eMCCS_OPCODE_MISC_NEW_CONTROL_VALUE = 2,
eMCCS_OPCODE_MISC_SOFT_CONTROL_VALUE = 3,
eMCCS_OPCODE_PRESET_RESTORE_FACTORY_DEFAULT = 4,
eMCCS_OPCODE_PRESET_RESTORE_FACTORY_LUMINANCE_DEFAULT = 5,
eMCCS_OPCODE_PRESET_RESTORE_FACTORY_GEOMETRY_DEFAULT = 6,
eMCCS_OPCODE_PRESET_RESTORE_FACTORY_COLOR_DEFAULT = 8,
eMCCS_OPCODE_PRESET_RESTORE_FACTORY_TV_DEFAULT = 10, // 0x0000000A
eMCCS_OPCODE_IMAGE_COLOR_TEMPARATURE_INCREMENT = 11, // 0x0000000B
eMCCS_OPCODE_IMAGE_COLOR_TEMPARATURE_REQUEST = 12, // 0x0000000C
eMCCS_OPCODE_IMAGE_CLOCK = 14, // 0x0000000E
eMCCS_OPCODE_IMAGE_LUMINANCE = 16, // 0x00000010
eMCCS_OPCODE_IMAGE_FLESH_TONE_ENHANCEMENT = 17, // 0x00000011
eMCCS_OPCODE_IMAGE_CONTRAST = 18, // 0x00000012
eMCCS_OPCODE_IMAGE_BLACKLIGHT_CONTROL = 19, // 0x00000013
eMCCS_OPCODE_IMAGE_COLOR_PRESET = 20, // 0x00000014
eMCCS_OPCODE_MANUFACTURER_PICTURE_MODE_VALUE = 21, // 0x00000015
eMCCS_OPCODE_IMAGE_RED_VEDIO_GAIN = 22, // 0x00000016
eMCCS_OPCODE_IMAGE_USER_COLOR_VISION_COMPENSATION = 23, // 0x00000017
eMCCS_OPCODE_IMAGE_GREEN_VEDIO_GAIN = 24, // 0x00000018
eMCCS_OPCODE_IMAGE_BLUE_VEDIO_GAIN = 26, // 0x0000001A
eMCCS_OPCODE_IMAGE_FOCUS = 28, // 0x0000001C
eMCCS_OPCODE_IMAGE_AUTO_SETUP = 30, // 0x0000001E
eMCCS_OPCODE_IMAGE_AUTO_COLOR_SETUP = 31, // 0x0000001F
eMCCS_OPCODE_GEOMETRY_HORIZONTAL_POSITION = 32, // 0x00000020
eMCCS_OPCODE_GEOMETRY_HORIZONTAL_SIZE = 34, // 0x00000022
eMCCS_OPCODE_GEOMETRY_HORIZONTAL_PINCUSHION = 36, // 0x00000024
eMCCS_OPCODE_GEOMETRY_HORIZONTAL_PINCUSHION_BALANCE = 38, // 0x00000026
eMCCS_OPCODE_GEOMETRY_HORIZONTAL_CONVERGENCE_RB = 40, // 0x00000028
eMCCS_OPCODE_GEOMETRY_HORIZONTAL_CONVERGENCE_MG = 41, // 0x00000029
eMCCS_OPCODE_GEOMETRY_HORIZONTAL_LINEARITY = 42, // 0x0000002A
eMCCS_OPCODE_GEOMETRY_HORIZONTAL_LINEARITY_BALANCE = 44, // 0x0000002C
eMCCS_OPCODE_IMAGE_GRAY_SCALE_EXPANSION = 46, // 0x0000002E
eMCCS_OPCODE_GEOMETRY_VERTICAL_POSITION = 48, // 0x00000030
eMCCS_OPCODE_GEOMETRY_VERTICAL_SIZE = 50, // 0x00000032
eMCCS_OPCODE_GEOMETRY_VERTICAL_PINCUSHION = 52, // 0x00000034
eMCCS_OPCODE_GEOMETRY_VERTICAL_PINCUSHION_BALANCE = 54, // 0x00000036
eMCCS_OPCODE_GEOMETRY_VERTICAL_CONVERGENCE_RB = 56, // 0x00000038
eMCCS_OPCODE_GEOMETRY_VERTICAL_CONVERGENCE_MG = 57, // 0x00000039
eMCCS_OPCODE_GEOMETRY_VERTICAL_LINEARITY = 58, // 0x0000003A
eMCCS_OPCODE_GEOMETRY_VERTICAL_LINEARITY_BALANCE = 60, // 0x0000003C
eMCCS_OPCODE_IMAGE_CLOCK_PHASE = 62, // 0x0000003E
eMCCS_OPCODE_GEOMETRY_HORIZONTAL_PARELLELOGRAM = 64, // 0x00000040
eMCCS_OPCODE_GEOMETRY_VERTICAL_PARELLELOGRAM = 65, // 0x00000041
eMCCS_OPCODE_GEOMETRY_HORIZONTAL_KEYSTONE = 66, // 0x00000042
eMCCS_OPCODE_GEOMETRY_VERTICAL_KEYSTONE = 67, // 0x00000043
eMCCS_OPCODE_GEOMETRY_ROTATIONS = 68, // 0x00000044
eMCCS_OPCODE_MANUFACTURER_GET_PICTURE_MODE_LIST3 = 69, // 0x00000045
eMCCS_OPCODE_GEOMETRY_TOP_CORNER_FLARE = 70, // 0x00000046
eMCCS_OPCODE_GEOMETRY_TOP_CORNER_HOOK = 72, // 0x00000048
eMCCS_OPCODE_GEOMETRY_BOTTOM_CORNERF_LARE = 74, // 0x0000004A
eMCCS_OPCODE_GEOMETRY_BOTTOM_CORNER_HOOK = 76, // 0x0000004C
eMCCS_OPCODE_MANUFACTURER_GET_PICTURE_MODE_LIST = 77, // 0x0000004D
eMCCS_OPCODE_MANUFACTURER_GET_PICTURE_MODE_LIST1 = 78, // 0x0000004E
eMCCS_OPCODE_MANUFACTURER_GET_PICTURE_MODE_LIST2 = 79, // 0x0000004F
eMCCS_OPCODE_MISC_ACTIVE_CONTROL = 82, // 0x00000052
eMCCS_OPCODE_MISC_PERFORMANCE_PRESERVATION = 84, // 0x00000054
eMCCS_OPCODE_IMAGE_HORIZONTAL_MOIRE = 86, // 0x00000056
eMCCS_OPCODE_IMAGE_VERTICAL_MOIRE = 88, // 0x00000058
eMCCS_OPCODE_IMAGE_SIX_AXIS_SATURATION_CONTROLRED = 89, // 0x00000059
eMCCS_OPCODE_IMAGE_SIX_AXIS_SATURATION_CONTROLYELLOW = 90, // 0x0000005A
eMCCS_OPCODE_IMAGE_SIX_AXIS_SATURATION_CONTROLGREEN = 91, // 0x0000005B
eMCCS_OPCODE_IMAGE_SIX_AXIS_SATURATION_CONTROLCYAN = 92, // 0x0000005C
eMCCS_OPCODE_IMAGE_SIX_AXIS_SATURATION_CONTROLBLUE = 93, // 0x0000005D
eMCCS_OPCODE_IMAGE_SIX_AXIS_SATURATION_CONTROLMAGENTA = 94, // 0x0000005E
eMCCS_OPCODE_MISC_INPUT_SOURCE = 96, // 0x00000060
eMCCS_OPCODE_AUDIO_SPEAKER_VOLUME = 98, // 0x00000062
eMCCS_OPCODE_MANUFACTURER_VOLUME = 98, // 0x00000062
eMCCS_OPCODE_AUDIO_MICROPHONE_VOLUME = 100, // 0x00000064
eMCCS_OPCODE_MISC_AMBIENT_LIGHT_SENSOR = 102, // 0x00000066
eMCCS_OPCODE_COLOR_TEMP_VALUE = 105, // 0x00000069
eMCCS_OPCODE_COLOR_TEMP_LIST = 106, // 0x0000006A
eMCCS_OPCODE_IMAGE_RED_VEDIOBLACK_LEVEL = 108, // 0x0000006C
eMCCS_OPCODE_IMAGE_GREEN_VEDIOBLACK_LEVEL = 110, // 0x0000006E
eMCCS_OPCODE_IMAGE_BLUE_VEDIOBLACK_LEVEL = 112, // 0x00000070
eMCCS_OPCODE_IMAGE_GAMMA = 114, // 0x00000072
eMCCS_OPCODE_IMAGE_LUTSIZE = 115, // 0x00000073
eMCCS_OPCODE_IMAGE_SINGLEPOINT_LUT_OPERATION = 116, // 0x00000074
eMCCS_OPCODE_IMAGE_BLOCK_LUT_OPERATION = 117, // 0x00000075
eMCCS_OPCODE_MISC_REMOTR_PROCEDURE_CALL = 118, // 0x00000076
eMCCS_OPCODE_MISC_EDID_OPERATION = 120, // 0x00000078
eMCCS_OPCODE_IMAGE_GET_GAMMA_LIST = 122, // 0x0000007A
eMCCS_OPCODE_IMAGE_ADJUST_ZOOM = 124, // 0x0000007C
eMCCS_OPCODE_GEOMETRY_HORIZONTAL_MIRROR_FLIP = 130, // 0x00000082
eMCCS_OPCODE_GEOMETRY_VERTICAL_MIRROR_FLIP = 132, // 0x00000084
eMCCS_OPCODE_GEOMETRY_DISPLAY_SCALING = 134, // 0x00000086
eMCCS_OPCODE_IMAGE_SHARPNESS = 135, // 0x00000087
eMCCS_OPCODE_IMAGE_VELOCITY_SCAN_MODULATION = 136, // 0x00000088
eMCCS_OPCODE_IMAGE_COLOR_SATURATION = 138, // 0x0000008A
eMCCS_OPCODE_MISC_TVCHANNEL_UPORDOWN = 139, // 0x0000008B
eMCCS_OPCODE_IMAGE_TV_SHARPNESS = 140, // 0x0000008C
eMCCS_OPCODE_AUDIO_MUTE = 141, // 0x0000008D
eMCCS_OPCODE_AUDIO_TREBLE = 141, // 0x0000008D
eMCCS_OPCODE_IMAGE_TV_CONTRAST = 142, // 0x0000008E
eMCCS_OPCODE_IMAGE_HUE = 144, // 0x00000090
eMCCS_OPCODE_AUDIO_BASS = 145, // 0x00000091
eMCCS_OPCODE_IMAGE_TV_BLACKLEVELLUMINANCE = 146, // 0x00000092
eMCCS_OPCODE_AUDIO_BALANCELR = 147, // 0x00000093
eMCCS_OPCODE_AUDIO_STEREO_MODE = 148, // 0x00000094
eMCCS_OPCODE_GEOMETRY_WINDOW_POSITION_TLX = 149, // 0x00000095
eMCCS_OPCODE_GEOMETRY_WINDOW_POSITION_TLY = 150, // 0x00000096
eMCCS_OPCODE_GEOMETRY_WINDOW_POSITION_BRX = 151, // 0x00000097
eMCCS_OPCODE_GEOMETRY_WINDOW_POSITION_BRY = 152, // 0x00000098
eMCCS_OPCODE_IMAGE_WINDOW_BACKGROUND = 154, // 0x0000009A
eMCCS_OPCODE_IMAGE_SIX_AXIS_HUE_CONTROLRED = 155, // 0x0000009B
eMCCS_OPCODE_IMAGE_SIX_AXIS_HUE_CONTROLYELLOW = 156, // 0x0000009C
eMCCS_OPCODE_IMAGE_SIX_AXIS_HUE_CONTROLGREEN = 157, // 0x0000009D
eMCCS_OPCODE_IMAGE_SIX_AXIS_HUE_CONTROLCYAN = 158, // 0x0000009E
eMCCS_OPCODE_IMAGE_SIX_AXIS_HUE_CONTROLBLUE = 159, // 0x0000009F
eMCCS_OPCODE_IMAGE_SIX_AXIS_HUE_CONTROLMAGENTA = 160, // 0x000000A0
eMCCS_OPCODE_GET_MONITOR_ID_EXTENDED = 161, // 0x000000A1
eMCCS_OPCODE_IMAGE_AUTO_SETUP_ONOFF = 162, // 0x000000A2
eMCCS_OPCODE_IMAGE_WINDOCONTROL_ONOFF = 164, // 0x000000A4
eMCCS_OPCODE_IMAGE_WINDOW_SELECT = 165, // 0x000000A5
eMCCS_OPCODE_IMAGE_SCREEN_ORIENTATION = 170, // 0x000000AA
eMCCS_OPCODE_DISPLAY_HORIZONTAL_FREQUENCY = 172, // 0x000000AC
eMCCS_OPCODE_DISPLAY_VERTICAL_FREQUENCY = 174, // 0x000000AE
eMCCS_OPCODE_MONITOR_MODEL_NAME = 175, // 0x000000AF
eMCCS_OPCODE_PRESET_SETTINGS = 176, // 0x000000B0
eMCCS_OPCODE_MISC_FLATPANEL_SUBPIXEL_LAYOUT = 178, // 0x000000B2
eMCCS_OPCODE_MISC_DISPLAY_TECHNOLOGY_TYPE = 182, // 0x000000B6
eMCCS_OPCODE_DPVL_MONITOR_STATUS = 183, // 0x000000B7
eMCCS_OPCODE_DPVL_PACKET_COUNT = 184, // 0x000000B8
eMCCS_OPCODE_DPVL_MONITOR_X_ORIGIN = 185, // 0x000000B9
eMCCS_OPCODE_DPVL_MONITOR_Y_ORIGIN = 186, // 0x000000BA
eMCCS_OPCODE_DPVL_HEADER_ERROR_COUNT = 187, // 0x000000BB
eMCCS_OPCODE_DPVL_BODY_CRC_ERROR_COUNT = 188, // 0x000000BC
eMCCS_OPCODE_DPVL_CLIENT_ID = 189, // 0x000000BD
eMCCS_OPCODE_DPVL_LINK_CONTROL = 190, // 0x000000BE
eMCCS_OPCODE_DISPLAY_DISPLY_USAGE_TIME = 192, // 0x000000C0
eMCCS_OPCODE_MISC_DISPLAY_DESCRIPTOR_LENGTH = 194, // 0x000000C2
eMCCS_OPCODE_MISC_TRANSMIT_DISPLAY_DESCRIPTOR = 195, // 0x000000C3
eMCCS_OPCODE_MISC_ENABLE_DISPLAY_OF_DISPLAY_DESCRIPTOR = 196, // 0x000000C4
eMCCS_OPCODE_MISC_APPLICATION_ENABLEKEY = 198, // 0x000000C6
eMCCS_OPCODE_MISC_DISPLAY_ENABLEKEY = 199, // 0x000000C7
eMCCS_OPCODE_DISPLAY_DISPLY_CONTROLLER_TYPE = 200, // 0x000000C8
eMCCS_OPCODE_DISPLAY_DISPLY_FIRMWARE_LEVEL = 201, // 0x000000C9
eMCCS_OPCODE_DISPLAY_OSD = 202, // 0x000000CA
eMCCS_OPCODE_DISPLAY_OSD_LANGUAGE = 204, // 0x000000CC
eMCCS_OPCODE_MISC_STATUS_INDICATORS = 205, // 0x000000CD
eMCCS_OPCODE_MISC_AUXILLARY_DISPLAY_SIZE = 206, // 0x000000CE
eMCCS_OPCODE_MISC_AUXILLARY_DISPLAY_DATA = 207, // 0x000000CF
eMCCS_OPCODE_MISC_OUTPUT_SELECT = 208, // 0x000000D0
eMCCS_OPCODE_IMAGE_STEREO_VEDIO_MODE = 212, // 0x000000D4
eMCCS_OPCODE_DISPLAY_POWER_MODE = 214, // 0x000000D6
eMCCS_OPCODE_MISC_AUXILLARY_POWER_OUTPUT = 215, // 0x000000D7
eMCCS_OPCODE_DPVL_POWER_ON_OFF = 216, // 0x000000D8
eMCCS_OPCODE_GEOMETRY_SCAN_MODE = 218, // 0x000000DA
eMCCS_OPCODE_IMAGE_DISPLAY_APPLICATION = 220, // 0x000000DC
eMCCS_OPCODE_MISC_OPERATION_MODE = 222, // 0x000000DE
eMCCS_OPCODE_DISPLAY_VCP_VERSION = 223, // 0x000000DF
eMCCS_OPCODE_EYE_FINE_WINDOW = 224, // 0x000000E0
eMCCS_OPCODE_DUAL_WEB_MODE = 225, // 0x000000E1
eMCCS_OPCODE_HDR_VALUE = 226, // 0x000000E2
eMCCS_OPCODE_SMARTDUALMON = 227, // 0x000000E3
eMCCS_OPCODE_MANUFACTURER_CALIBATION_COMMAND = 228, // 0x000000E4
eMCCS_OPCODE_MANUFACTURER_GETGAMMA_FROM_SCALER_COMMAND = 229, // 0x000000E5
eMCCS_OPCODE_MANUFACTURER_WRITE_GAMMA_LUT = 230, // 0x000000E6
eMCCS_OPCODE_MANUFACTURER_WRITE_COLOR_MATRIX = 231, // 0x000000E7
eMCCS_OPCODE_MANUFACTURER_SCALERBLOCK_ENABLE_DISABLE_COMMAND = 232, // 0x000000E8
eMCCS_OPCODE_MANUFACTURER_ENABLE_DISABLE_SCALER_PATTERN = 233, // 0x000000E9
eMCCS_OPCODE_MANUFACTURER_DISPLAY_SCALER_INTERNAL_PATTERN = 234, // 0x000000EA
eMCCS_OPCODE_MANUFACTURER_WRITE_NEW_COLOR_MATRIX = 235, // 0x000000EB
eMCCS_OPCODE_SMARTRESOLUTION = 236, // 0x000000EC
eMCCS_OPCODE_MANUFACTURER_PIPMODE_OPCODE = 237, // 0x000000ED
eMCCS_OPCODE_SCREENSPLIT_OSD_MENU = 238, // 0x000000EE
eMCCS_OPCODE_MANUFACTURER_DISPLAYID = 239, // 0x000000EF
eMCCS_OPCODE_MANUFACTURER_HEARTBEAT = 240, // 0x000000F0
eMCCS_OPCODE_MANUFACTURER_FENGINE_BRIGHTNESS = 241, // 0x000000F1
eMCCS_OPCODE_MANUFACTURER_FENGINE_ACE = 242, // 0x000000F2
eMCCS_OPCODE_MANUFACTURER_FENGINE_RCM = 243, // 0x000000F3
eMCCS_OPCODE_MANUFACTURER_GET_RATIO_LIST = 244, // 0x000000F4
eMCCS_OPCODE_MANUFACTURER_RATIO_VALUE = 245, // 0x000000F5
eMCCS_OPCODE_MANUFACTURER_SES = 246, // 0x000000F6
eMCCS_OPCODE_MANUFACTURER_RESPONSE_TIME = 247, // 0x000000F7
eMCCS_OPCODE_MANUFACTURER_FREE_SYNC = 248, // 0x000000F8
eMCCS_OPCODE_MANUFACTURER_BLACK_STABILIZER = 249, // 0x000000F9
eMCCS_OPCODE_MANUFACTURER_MOTION_BLUR = 250, // 0x000000FA
eMCCS_OPCODE_MANUFACTURER_SCALER_ISP_AREA = 251, // 0x000000FB
eMCCS_OPCODE_MANUFACTURER_FENGINE_MODE_SELECT = 252, // 0x000000FC
eMCCS_OPCODE_MANUFACTURER_POWER_LAMP_INDICATOR = 253, // 0x000000FD
eMCCS_OPCODE_MANUFACTURER_IMAGE_GAMMA_PRESET = 254, // 0x000000FE
namespace OSC.MonitorParameterDataStruture
{
public class MonitorParameterConstants
{
public const int Max_Connected_Monitor = 6;
public const int ACTIVE_PICTURE_MODE_PROFILE = 60;
public const int MAX_GAMMA_OPTIONS = 14;
public const int MAX_COLOR_TEMP_OPTIONS = 10;
public const int MAX_COLOR_TEMP_MANUAL_OPTIONS = 11;
public const int MAX_RESPONSE_TIME_OPTIONS = 4;
public const int MAX_FREE_SYNC_OPTIONS = 4;
public const int MAX_MOTION_BLUR_OPTIONS = 2;
public const int MAX_OSC_OPCODE_LIST = 26;
public const int PROFILE_GET_OPCODE_WAIT_TIME_FOR_ONE = 5000;
public const int IMPORT_PROFILE_GET_OPCODE_PROGRESS_RANGE = 10;
public const int IMPORT_PROFILE_SET_OPCODE_PROGRESS_RANGE = 70;
public const int IMPORT_PROFILE_VERIFY_OPCODE_PROGRESS_RANGE = 10;
public enum T_E_REQUEST_TYPE
{
eRequestNone,
eInitializeStatus,
eInitializeStatusReply,
eGetSupportedOpcodeList,
eGetSupportedOpcodeListFailed,
eSupportedOpcodeList,
eSetOpcodeRequest,
eSetOpcodeReply,
eGetAllOpcodeRequest,
eGetAllOpcodeReply,
eGetOpcodeRequest,
eGetOpcodeReply,
eScreenSplit,
eApplicationPresetm,
eGetScreenSplitLayout,
eApplicationPosition,
ePreviewWindowMoveStarted,
ePreviewWindowDropped,
eLayoutInitialization,
ePreviewLayoutWindowClicked,
GetGameWindowOpcode,
GetMonitorControlOpcode,
eProcessRequestForAllMonitor,
eExitOSCAppManager,
eModifiedInfoOfMonitor,
eGetColorAdjustOpcode,
eGetProfileOpcode,
eSetScreenSplitNone,
eGetMonitorModelName,
eGetGameSSOpcodeList,
eGameSSOpcodeList,
ePivotChange,
eModelNamePIDVID,
eSetPivotStatus,
eFWUpdateSdkStatus,
}
public enum T_E_PICTURE_MODE
{
eCustom,
eReader,
eReader1,
eReader2,
ePhoto,
eCinema,
eGame,
eRed_Weakness,
eGreen_Weakness,
eDark_Room_1,
eDark_Room_2,
eFPS_Game_1,
eFPS_Game_2,
eRTS_Game,
eCustom_Game,
esRGB,
Adobe,
Calibration,
Calibration1,
Calibration2,
DICOM,
DCI,
EBU,
REC709,
SMPTE_C,
DCI_P3,
Custom_AV,
Vivid1,
Vivid2,
Standard,
Color_Weakness,
Cinema_AV,
Text,
HDR_Effect,
HDR_Vivid,
HDR_Standard,
HDR_Game,
HDR_Cinema,
Mono,
Gamer1,
Gamer2,
Vivid,
REC2020,
FPS,
RTS,
Pathology,
Dicom_Clinical,
Extention,
Dicom_Diagnostic,
HGIG,
P3_D65_PQ,
BT_2100_PQ,
BT_2100_HLG,
BT_709,
BT_2020,
P3_D65,
DICOM_Custom,
P3_D65_PQ2,
BT_2100_PQ2,
BT_2100_HLG2,
}
public enum T_E_GAMMA_MODE
{
eGammaOff,
eGamma0,
eGamma1,
eGamma2,
eMode1,
eMode2,
eMode3,
eMode4,
eGamma1dot8,
eGamma2dot0,
eGamma2dot2,
eGamma2dot4,
eGamma2dot6,
eDicomGammaCurve,
}
public enum T_E_COLOR_TEMP
{
eColorTemp_Warm,
eColorTemp_Medium,
eColorTemp_Cool,
eColorTemp_Custom,
eColorTemp_6500K,
eColorTemp_7500K,
eColorTemp_9300K,
eColorTemp_Manual1,
eColorTemp_Manual2,
eColorTemp_Manual3,
}
public enum T_E_RESPONSE_TIME
{
eRESPONSE_TIME_OFF = 0,
eRESPONSE_TIME_HIGH = 1,
eRESPONSE_TIME_MIDDLE = 2,
eRESPONSE_TIME_LOW = 3,
eRESPONSE_TIME_UNSUPPORTED = 255, // 0x000000FF
}
public enum T_E_BLACKSTABILIZER_VAL
{
eBLACKSTABILIZER_OFF = 0,
eBLACKSTABILIZER_LOW = 1,
eBLACKSTABILIZER_MIDDLE = 2,
eBLACKSTABILIZER_HIGH = 3,
eBLACKSTABILIZER_UNSUPPORTED = 255, // 0x000000FF
}
public enum T_E_PBP_MODE_OPTION
{
ePBPOff,
eOneRationOne_PBP,
eFiveRationNine_PBP,
eSmall_PBP,
eLarge_PBP,
}
public enum T_E_RATIO_LIST
{
eRatio_One_One,
eRation_Wide,
eRation_Original,
eRatio_Cinema1,
eRatio_Cinema2,
}
public enum T_E_SES
{
eSES_Off = 0,
eSES_Low = 1,
eSES_High = 2,
eSES_UnSupported = 255, // 0x000000FF
}
public enum T_E_FREE_SYNC
{
eFREE_SYNC_OFF = 0,
eFREE_SYNC_ON = 1,
eFREE_SYNC_BASIC = 2,
eFREE_SYNC_EXTENDED = 3,
eFREE_SYNC_UNSUPPORTED = 255, // 0x000000FF
}
public enum T_E_MOTION_BLUR
{
eMOTION_BLUR_NOTSUPPORTED,
eMOTION_BLUR_ON,
eMOTION_BLUR_OFF,
}
public enum T_E_MONITOR_TYPE
{
PROFILE,
GSYNC,
GSYNC_PROFILE,
GSYNC1,
GSYNC2,
GSYNC1_PROFILE,
GSYNC2_PROFILE,
GSYNCR4,
GSYNCR425GR75FG,
NORMAL,
FOCUSVIEW,
MD_MONITOR,
}
}
}
LG FIRMWARE URLS
------------------------------------------
Real: https://lmu.lge.com/ExternalService/onscreencontrol/fw/28MQ780/MODEL_28MQ780_SV3.03_PV0.12.16_NV4.18_20221219.zip
Constant: https://lmu.lge.com/ExternalService/onscreencontrol/fw/28MQ780/FWLatestVersion.txt
Password: 28MQ780!LGdasusodkug!@#
@darkimage404
Copy link

darkimage404 commented Mar 4, 2023

https://lmu.lge.com/ExternalService/onscreencontrol/fw/28MQ780/FWLatestVersion.txt
Hi,
did you use wireshark on "lg onscreen control" to extract this information?
EDIT: You used strings, but 38GN950 "FWLatestVersion.txt" dosn't exist :(
mine is a LG 38GN950 and is a mstar "gaming" without some functions as PBP

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment