Summary

RS-232C serial control spec for the LG M4210C commercial LCD monitor (42" class, North America). Covers power, input select, picture/sound adjustments, OSD/tile/key lock, ISM, tile mode, fault/usage readouts. 26 command rows documented.

Transport

protocols:
  - serial
serial:
  baud_rate: 9600
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
auth:
  type: none  # inferred: no auth procedure in source

Connector: D-Sub 9 (RS-232C CONTROL & SERVICE port). Source documents both 7-wire (standard) and 3-wire configurations. Use a straight cable.

Traits

- powerable       # power on/off commands present
- routable        # input select command present (AV, Component, RGB, HDMI)
- queryable       # query commands returning state present
- levelable       # volume, contrast, brightness, color, tint, sharpness, balance present

Actions

- id: power
  label: Power On/Off
  kind: action
  command: "ka {set_id} {data}\r"
  description: |
    Set power state. Use data=FF to read current power state.
    Set 00H = Power Off, 01H = Power On. ACK returns current state.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast (all products). Range 1-99.
    - name: data
      type: hex
      description: 00H (off), 01H (on), or FFH (read status)

- id: input_select
  label: Input Select
  kind: action
  command: "kb {set_id} {data}\r"
  description: Select main picture input source.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: |
        02H = AV, 04H = Component 1, 05H = Component 2,
        06H = RGB (DTV), 07H = RGB (PC), 08H = HDMI (DTV), 09H = HDMI (PC)

- id: aspect_ratio
  label: Aspect Ratio
  kind: action
  command: "kc {set_id} {data}\r"
  description: Set screen aspect ratio.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: |
        01H = Normal 4:3, 02H = Wide 16:9, 03H = Horizon (Spectacle),
        04H = Zoom1, 05H = Zoom2, 06H = Original, 07H = 14:9,
        08H = Full (Europe only), 09H = 1:1 (PC)

- id: screen_mute
  label: Screen Mute
  kind: action
  command: "kd {set_id} {data}\r"
  description: Mute/unmute the screen (picture on/off).
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: 00H = screen mute off (picture on), 01H = screen mute on (picture off)

- id: volume_mute
  label: Volume Mute
  kind: action
  command: "ke {set_id} {data}\r"
  description: Mute/unmute the volume.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: 00H = volume mute on (volume off), 01H = volume mute off (volume on)

- id: volume_control
  label: Volume Control
  kind: action
  command: "kf {set_id} {data}\r"
  description: Set volume level.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: 00H-64H (hexadecimal). Real mapping: 0=Step 0, 0xA=Step 10, 0xF=Step 15, 0x10=Step 16, 0x64=Step 100.

- id: contrast
  label: Contrast
  kind: action
  command: "kg {set_id} {data}\r"
  description: Set picture contrast.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: 00H-64H. Real mapping per source page A7.

- id: brightness
  label: Brightness
  kind: action
  command: "kh {set_id} {data}\r"
  description: Set picture brightness.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: 00H-64H. Real mapping per source page A7.

- id: color
  label: Color
  kind: action
  command: "ki {set_id} {data}\r"
  description: Set picture color saturation (video only).
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: 00H-64H. Real mapping per source page A7.

- id: tint
  label: Tint
  kind: action
  command: "kj {set_id} {data}\r"
  description: Set picture tint (video only).
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: 00H (Red -50) to 64H (Green +50). Real mapping: 0=Step -50, 64=Step 50.

- id: sharpness
  label: Sharpness
  kind: action
  command: "kk {set_id} {data}\r"
  description: Set picture sharpness (video only).
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: 00H-64H. Real mapping per source page A7.

- id: osd_select
  label: OSD Select
  kind: action
  command: "kl {set_id} {data}\r"
  description: Show/hide on-screen display.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: 00H = OSD Off, 01H = OSD On

- id: remote_lock
  label: Remote Lock / Key Lock
  kind: action
  command: "km {set_id} {data}\r"
  description: Lock/unlock remote control and local keys. When on, RS-232C still works.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: 00H = Off, 01H = On

- id: balance
  label: Balance
  kind: action
  command: "kt {set_id} {data}\r"
  description: Set sound balance L50..R50.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: 00H (L50) to 64H (R50).

- id: color_temperature
  label: Color Temperature
  kind: action
  command: "ku {set_id} {data}\r"
  description: Set color temperature preset.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: 00H = Normal, 01H = Cool, 02H = Warm, 03H = User

- id: abnormal_state
  label: Abnormal State (Read)
  kind: query
  command: "kz {set_id} FF\r"
  description: Read power-off reason when in standby.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
  response_values:
    "00": Normal (power on, signal present)
    "01": No signal (power on)
    "02": Turned off by remote control
    "03": Turned off by sleep timer
    "04": Turned off by RS-232C
    "06": AC down
    "08": Turned off by off-time function
    "09": Turned off by auto-off function

- id: ism_mode
  label: ISM Mode
  kind: action
  command: "jp {set_id} {data}\r"
  description: Select afterimage-prevention mode.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: 01H = Inversion, 02H = Orbiter, 03H = Orb.+Inv., 04H = White Wash, 08H = Normal

- id: auto_configuration
  label: Auto Configure
  kind: action
  command: "ju {set_id} 01\r"
  description: Auto-adjust picture position and minimize image shaking. Works only in RGB (PC) mode.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast

- id: key
  label: Key (IR Remote Code)
  kind: action
  command: "mc {set_id} {key_code}\r"
  description: Send IR remote key code to the set. Key codes listed in IR Codes section of source (page A18).
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: key_code
      type: hex
      description: IR key code (see IR Codes table in source). Examples: 08H=Power, 09H=Mute, 43H=Menu.

- id: tile_mode
  label: Tile Mode
  kind: action
  command: "dd {set_id} {data}\r"
  description: Configure tile (video wall) mode. Two hex digits encode columns x rows; 0X or X0 invalid except 00.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: |
        00H = tile mode off.
        High nibble = columns (1-4), low nibble = rows (1-4).
        Examples: 12H = 1x2, 13H = 1x3, 14H = 1x4, 44H = 4x4.
        Source data range documented as 00H-44H.

- id: tile_h_size
  label: Tile H Size
  kind: action
  command: "dg {set_id} {data}\r"
  description: Set tile horizontal size.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: 00H-64H.

- id: tile_v_size
  label: Tile V Size
  kind: action
  command: "dh {set_id} {data}\r"
  description: Set tile vertical size.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: 00H-64H.

- id: tile_id_set
  label: Tile ID Set
  kind: action
  command: "di {set_id} {data}\r"
  description: Assign tile ID for tiling function.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
    - name: data
      type: hex
      description: 00H-10H (0-16 decimal).

- id: elapsed_time_return
  label: Elapsed Time Return
  kind: query
  command: "dl {set_id} FF\r"
  description: Read total used hours. Response data is hex hours.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast

- id: temperature_value
  label: Temperature Value
  kind: query
  command: "dn {set_id} FF\r"
  description: Read internal temperature. Response is 1-byte hex.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast

- id: lamp_fault_check
  label: Lamp Fault Check
  kind: query
  command: "dp {set_id} FF\r"
  description: Check lamp fault status.
  params:
    - name: set_id
      type: integer
      description: Set ID 1-99; 0 = broadcast
  response_values:
    "00": Lamp Fault
    "01": Lamp OK

Feedbacks

- id: power_state
  type: enum
  values: [on, off]
  source: power command ACK (ka)
- id: input_source
  type: enum
  values: [av, component1, component2, rgb_dtv, rgb_pc, hdmi_dtv, hdmi_pc]
  source: input_select command ACK (kb)
- id: abnormal_state_reason
  type: enum
  values: [normal, no_signal, off_by_remote, off_by_sleep, off_by_rs232, ac_down, off_by_off_timer, off_by_auto_off]
  source: abnormal_state query (kz)
- id: lamp_fault
  type: enum
  values: [fault, ok]
  source: lamp_fault_check query (dp)
- id: elapsed_hours
  type: integer
  unit: hours
  source: elapsed_time_return query (dl)
- id: internal_temperature
  type: integer
  unit: hex_byte
  source: temperature_value query (dn)

Variables

# UNRESOLVED: source treats all adjustable values as discrete command parameters,
# not as settable variables with separate read/write. No Variables section populated.

Events

[]

Macros

[]

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no explicit safety warnings, interlock procedures,
# or power-on sequencing requirements. The "Abnormal state" feedback reports past
# power-off causes but is informational only.

Notes

Command framing: [Command1][Command2][Space][SetID][Space][Data][Cr]

  • Space = 0x20 ASCII
  • Cr = 0x0D ASCII carriage return
  • Command1 ∈ {j, k, m, d}
  • SetID range 1-99; 0 broadcasts to all products. With broadcast (0), ACK messages from all sets collide and must not be parsed.
  • Read status: send data = FF.

ACK framing: [Command2][Space][SetID][Space][OK][Data][x]

  • Normal ACK returns current state on read, or echoed data on write.
  • Error ACK: [Command2][Space][SetID][Space][NG][Data][x]
  • Token [x] in ACK terminator is not explicitly defined in the source; likely a typo for [Cr] (0x0D). Treat as UNRESOLVED until confirmed against a real device.

Tile mode data encoding: high nibble = columns (1-4), low nibble = rows (1-4). Values of the form 0X or X0 are invalid except 00 (tile off). Source data range documented as 00H-44H.

Source also contains an IR remote code table (NEC-format, carrier ~38kHz at 455kHz, frame interval Tf=108ms) with discrete codes for power on/off (C4/C5), input selection, ARC modes, and number keys. This spec covers the RS-232C interface only; IR codes are out of scope for Actions but may be sent via the key action (m c).

Source: refined excerpt from lg_electronics_inc_m4210c_north_america.refined.md, originally ManualsLib manual for LG M4210C, pages 52-58 (RS-232C protocol section) plus IR codes section.


Spec ready. 26 actions enumerated (all source rows), transport params from source (9600/8N1), no auth inferred from absence, IR codes referenced but out of scope.

## Provenance

```yaml
source_domains:
  - gscs-b2c.lge.com
  - lg.com
source_urls:
  - "https://gscs-b2c.lge.com/open/downloadFile?fileId=KROWM000331602.pdf"
  - https://www.lg.com/ca_en/support/product-support/troubleshoot/help-library/cs-CT20098005-20153058982994/
retrieved_at: 2026-05-04T23:49:31.345Z
last_checked_at: 2026-06-02T17:23:11.355Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T17:23:11.355Z
matched_actions: 26
action_count: 26
confidence: medium
summary: "All 26 spec actions matched literally in source command reference; transport parameters verified against communications spec. (3 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "source uses [x] as ACK terminator without defining the token; likely CR (0x0D) per the transmission spec but unconfirmed"
- "source treats all adjustable values as discrete command parameters,"
- "source contains no explicit safety warnings, interlock procedures,"

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0