Summary

LG 32LB660BPSB Series commercial display controllable via RS-232C serial or TCP/IP using an ASCII command protocol. Commands cover power, volume, picture adjustments, input selection, channel tuning, and remote key emulation. The protocol uses the format [Command1][Command2][ ][Set ID][ ][Data][Cr] with hexadecimal data and Set ID addressing (1-99, 0 = all sets).

Transport

protocols:
  - serial
  - tcp  # inferred from file source name and known protocol designation
serial:
  baud_rate: 9600
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none  # UNRESOLVED: flow control not stated; wiring diagrams show both 3-wire and 7-wire configs
addressing:
  port: null  # UNRESOLVED: TCP port for direct IP control not stated in source; Crestron uses 41794 but that is protocol-specific
auth:
  type: none  # inferred: no auth procedure in source

Traits

traits:
  - powerable  # inferred from power on/off commands (ka)
  - levelable  # inferred from volume, contrast, brightness, color, tint, sharpness, treble, bass, balance, backlight commands
  - routable   # inferred from input select command (xb)
  - queryable  # inferred from FF data read mode returning present status

Actions

actions:
  - id: power_off
    label: Power Off
    kind: action
    command: "ka {set_id} 00"
    description: "Turn the display off. Send as [k][a][ ][Set ID][ ][00][Cr]"
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
        description: "Set ID (0 = all sets)"
    response: "[a] [Set ID] [OK|NG][Data][x]"

  - id: power_on
    label: Power On
    kind: action
    command: "ka {set_id} 01"
    description: "Turn the display on."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
        description: "Set ID (0 = all sets)"
    response: "[a] [Set ID] [OK|NG][Data][x]"

  - id: aspect_ratio
    label: Set Aspect Ratio
    kind: action
    command: "kc {set_id} {data}"
    description: "Adjust the screen format / main picture size."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: enum
        values:
          - value: "01"
            label: "Normal 4:3"
          - value: "02"
            label: "Wide 16:9"
          - value: "04"
            label: "Zoom"
          - value: "05"
            label: "Zoom 2"
          - value: "06"
            label: "Set by Program"
          - value: "07"
            label: "14:9"
          - value: "09"
            label: "Just Scan"
          - value: "0B"
            label: "Full Wide"
          - value: "0C"
            label: "21:9"
          - value: "10"
            label: "Cinema Zoom 1"
          - value: "1F"
            label: "Cinema Zoom 16"
    response: "[c] [Set ID] [OK|NG][Data][x]"

  - id: screen_mute
    label: Screen Mute
    kind: action
    command: "kd {set_id} {data}"
    description: "Select screen mute on/off."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: enum
        values:
          - value: "00"
            label: "Screen mute off (picture on)"
          - value: "01"
            label: "Screen mute on (picture off, no OSD)"
          - value: "10"
            label: "Video mute on (OSD still visible)"
    response: "[d] [Set ID] [OK|NG][Data][x]"

  - id: volume_mute
    label: Volume Mute
    kind: action
    command: "ke {set_id} {data}"
    description: "Control volume mute on/off."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: enum
        values:
          - value: "00"
            label: "Volume mute on (audio off)"
          - value: "01"
            label: "Volume mute off (audio on)"
    response: "[e] [Set ID] [OK|NG][Data][x]"

  - id: volume_control
    label: Volume Control
    kind: action
    command: "kf {set_id} {data}"
    description: "Adjust volume level."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: integer
        min: 0
        max: 100
        description: "Volume level (hex 00-64)"
    response: "[f] [Set ID] [OK|NG][Data][x]"

  - id: contrast
    label: Contrast
    kind: action
    command: "kg {set_id} {data}"
    description: "Adjust screen contrast."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: integer
        min: 0
        max: 100
        description: "Contrast level (hex 00-64)"
    response: "[g] [Set ID] [OK|NG][Data][x]"

  - id: brightness
    label: Brightness
    kind: action
    command: "kh {set_id} {data}"
    description: "Adjust screen brightness."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: integer
        min: 0
        max: 100
        description: "Brightness level (hex 00-64)"
    response: "[h] [Set ID] [OK|NG][Data][x]"

  - id: color
    label: Color
    kind: action
    command: "ki {set_id} {data}"
    description: "Adjust screen color."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: integer
        min: 0
        max: 100
        description: "Color level (hex 00-64)"
    response: "[i] [Set ID] [OK|NG][Data][x]"

  - id: tint
    label: Tint
    kind: action
    command: "kj {set_id} {data}"
    description: "Adjust screen tint. 00 = red, 64 = green."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: integer
        min: 0
        max: 100
        description: "Tint level (hex 00=red to 64=green)"
    response: "[j] [Set ID] [OK|NG][Data][x]"

  - id: sharpness
    label: Sharpness
    kind: action
    command: "kk {set_id} {data}"
    description: "Adjust screen sharpness."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: integer
        min: 0
        max: 50
        description: "Sharpness level (hex 00-32)"
    response: "[k] [Set ID] [OK|NG][Data][x]"

  - id: osd_select
    label: OSD Select
    kind: action
    command: "kl {set_id} {data}"
    description: "Turn OSD on/off for remote control operation."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: enum
        values:
          - value: "00"
            label: "OSD off"
          - value: "01"
            label: "OSD on"
    response: "[l] [Set ID] [OK|NG][Data][x]"

  - id: remote_control_lock
    label: Remote Control Lock Mode
    kind: action
    command: "km {set_id} {data}"
    description: "Lock or unlock front panel and remote control."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: enum
        values:
          - value: "00"
            label: "Lock off"
          - value: "01"
            label: "Lock on"
    response: "[m] [Set ID] [OK|NG][Data][x]"

  - id: treble
    label: Treble
    kind: action
    command: "kr {set_id} {data}"
    description: "Adjust treble."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: integer
        min: 0
        max: 100
        description: "Treble level (hex 00-64)"
    response: "[r] [Set ID] [OK|NG][Data][x]"

  - id: bass
    label: Bass
    kind: action
    command: "ks {set_id} {data}"
    description: "Adjust bass."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: integer
        min: 0
        max: 100
        description: "Bass level (hex 00-64)"
    response: "[s] [Set ID] [OK|NG][Data][x]"

  - id: balance
    label: Balance
    kind: action
    command: "kt {set_id} {data}"
    description: "Adjust audio balance."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: integer
        min: 0
        max: 100
        description: "Balance level (hex 00-64)"
    response: "[t] [Set ID] [OK|NG][Data][x]"

  - id: color_temperature
    label: Color Temperature
    kind: action
    command: "xu {set_id} {data}"
    description: "Adjust color temperature."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: integer
        min: 0
        max: 100
        description: "Color temperature (hex 00-64)"
    response: "[u] [Set ID] [OK|NG][Data][x]"

  - id: equalizer
    label: Equalizer
    kind: action
    command: "jv {set_id} {data}"
    description: "Adjust equalizer. Data is a bitfield: bits 7-5 select band (1st-5th), bits 4-0 set step (0-20+)."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: integer
        description: "EQ bitfield (hex). Band selection in bits 7-5, frequency step in bits 4-0."
    response: "[v] [Set ID] [OK|NG][Data][x]"

  - id: energy_saving
    label: Energy Saving
    kind: action
    command: "jq {set_id} {data}"
    description: "Set energy saving mode."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: enum
        values:
          - value: "00"
            label: "Off"
          - value: "01"
            label: "Minimum"
          - value: "02"
            label: "Medium"
          - value: "03"
            label: "Maximum"
          - value: "04"
            label: "Auto"
          - value: "05"
            label: "Screen off"
    response: "[q] [Set ID] [OK|NG][Data][x]"

  - id: tune_channel
    label: Tune Channel
    kind: action
    command: "ma {set_id} {data00} {data01} {data02}"
    description: "Tune to a specific channel. Format varies by region (Europe/Asia vs Americas/Korea vs Japan). See source for full regional details."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data00
        type: integer
        description: "High channel data (hex)"
      - name: data01
        type: integer
        description: "Low channel data (hex)"
      - name: data02
        type: integer
        description: "Input source selector (hex). Europe/Asia: 10=DTVAntenna, 20=AntennaRadio, 40=SatTV, 50=SatRadio, 90=CableTV, a0=CableRadio. Americas: 00=ATV, 01=CATV, 02=DTVAntenna, 06=CableTV, 22/26/46/66=various digital modes."
    response: "[a] [Set ID] [OK|NG][Data...][x]"

  - id: channel_add_del
    label: Channel Add/Del(Skip)
    kind: action
    command: "mb {set_id} {data}"
    description: "Set channel skip/add status for current channel."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: enum
        values:
          - value: "00"
            label: "Del/Skip"
          - value: "01"
            label: "Add"
    response: "[b] [Set ID] [OK|NG][Data][x]"

  - id: send_key
    label: Send IR Key Code
    kind: action
    command: "mc {set_id} {data}"
    description: "Send IR remote key code. See key code table in source (various hex codes)."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: integer
        description: "IR key code in hex (e.g. 08=Power, 10-19=Number keys 0-9)"
    response: "[c] [Set ID] [OK|NG][Data][x]"

  - id: backlight_control
    label: Backlight Control
    kind: action
    command: "mg {set_id} {data}"
    description: "Control the backlight level (LCD/LED TV)."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: integer
        min: 0
        max: 100
        description: "Backlight level (hex 00-64)"
    response: "[g] [Set ID] [OK|NG][Data][x]"

  - id: input_select
    label: Input Select
    kind: action
    command: "xb {set_id} {data}"
    description: "Select input source for main picture."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
      - name: data
        type: enum
        values:
          - value: "00"
            label: "DTV"
          - value: "01"
            label: "CADTV"
          - value: "02"
            label: "Satellite DTV ISDB-BS"
          - value: "03"
            label: "ISDB-CS1"
          - value: "04"
            label: "ISDB-CS2"
          - value: "10"
            label: "ATV"
          - value: "11"
            label: "CATV"
          - value: "20"
            label: "AV/AV1"
          - value: "21"
            label: "AV2"
          - value: "40"
            label: "Component1"
          - value: "41"
            label: "Component2"
          - value: "60"
            label: "RGB"
          - value: "90"
            label: "HDMI1"
          - value: "91"
            label: "HDMI2"
          - value: "92"
            label: "HDMI3"
          - value: "93"
            label: "HDMI4"
    response: "[b] [Set ID] [OK|NG][Data][x]"

  - id: auto_configure
    label: Auto Configure
    kind: action
    command: "ju {set_id} 01"
    description: "Auto-adjust picture position and minimize image shaking. RGB (PC) mode only."
    params:
      - name: set_id
        type: integer
        min: 0
        max: 99
    response: "[u] [Set ID] [OK|NG][Data][x]"

Feedbacks

feedbacks:
  - id: power_state
    label: Power State
    command: "ka {set_id} FF"
    type: enum
    values:
      - value: "00"
        label: "Off"
      - value: "01"
        label: "On"
    description: "Query power state by sending FF as data. Ack response contains current state."

  - id: aspect_ratio_status
    label: Aspect Ratio Status
    command: "kc {set_id} FF"
    type: enum
    description: "Query current aspect ratio. Same value set as aspect_ratio action."

  - id: screen_mute_status
    label: Screen Mute Status
    command: "kd {set_id} FF"
    type: enum
    values:
      - value: "00"
        label: "Off"
      - value: "01"
        label: "Screen mute on"
      - value: "10"
        label: "Video mute on"

  - id: volume_mute_status
    label: Volume Mute Status
    command: "ke {set_id} FF"
    type: enum
    values:
      - value: "00"
        label: "Muted"
      - value: "01"
        label: "Unmuted"

  - id: volume_level
    label: Volume Level
    command: "kf {set_id} FF"
    type: integer
    min: 0
    max: 100

  - id: contrast_level
    label: Contrast Level
    command: "kg {set_id} FF"
    type: integer
    min: 0
    max: 100

  - id: brightness_level
    label: Brightness Level
    command: "kh {set_id} FF"
    type: integer
    min: 0
    max: 100

  - id: color_level
    label: Color Level
    command: "ki {set_id} FF"
    type: integer
    min: 0
    max: 100

  - id: tint_level
    label: Tint Level
    command: "kj {set_id} FF"
    type: integer
    min: 0
    max: 100

  - id: sharpness_level
    label: Sharpness Level
    command: "kk {set_id} FF"
    type: integer
    min: 0
    max: 50

  - id: osd_status
    label: OSD Status
    command: "kl {set_id} FF"
    type: enum
    values:
      - value: "00"
        label: "Off"
      - value: "01"
        label: "On"

  - id: remote_lock_status
    label: Remote Lock Status
    command: "km {set_id} FF"
    type: enum
    values:
      - value: "00"
        label: "Unlocked"
      - value: "01"
        label: "Locked"

  - id: treble_level
    label: Treble Level
    command: "kr {set_id} FF"
    type: integer
    min: 0
    max: 100

  - id: bass_level
    label: Bass Level
    command: "ks {set_id} FF"
    type: integer
    min: 0
    max: 100

  - id: balance_level
    label: Balance Level
    command: "kt {set_id} FF"
    type: integer
    min: 0
    max: 100

  - id: color_temperature_level
    label: Color Temperature Level
    command: "xu {set_id} FF"
    type: integer
    min: 0
    max: 100

  - id: equalizer_status
    label: Equalizer Status
    command: "jv {set_id} FF"
    type: integer
    description: "Current EQ bitfield value."

  - id: energy_saving_status
    label: Energy Saving Status
    command: "jq {set_id} FF"
    type: enum
    values:
      - value: "00"
        label: "Off"
      - value: "01"
        label: "Minimum"
      - value: "02"
        label: "Medium"
      - value: "03"
        label: "Maximum"
      - value: "04"
        label: "Auto"
      - value: "05"
        label: "Screen off"

  - id: input_status
    label: Input Source Status
    command: "xb {set_id} FF"
    type: enum
    description: "Current input source. Same value set as input_select action."

  - id: backlight_level
    label: Backlight Level
    command: "mg {set_id} FF"
    type: integer
    min: 0
    max: 100

Variables

# UNRESOLVED: all settable parameters are represented as actions above.
# The command protocol does not distinguish between actions and variables;
# every writable command accepts a data value.

Events

# UNRESOLVED: no unsolicited notification protocol documented in source.
# Acknowledgements are only sent in response to commands.

Macros

# UNRESOLVED: no multi-step sequences described in source.

Safety

confirmation_required_for: []
interlocks:
  - description: "During media playback/recording, all commands except Power (ka) and Key (mc) are rejected with NG response."
  - description: "With USB-to-Serial converter, power command only works when TV is on. RS-232C cable allows ka command in both power-on and power-off states."
  - description: "When key lock is on and TV is in standby, TV will not turn on via IR or local key power button."
  - description: "External control lock is released when main power is cycled off and on (unplug/replug, wait 20-30 seconds)."
# UNRESOLVED: no formal safety interlock sequences or power-on sequencing requirements documented beyond the above behavioral notes.

Notes

  • Command format: All commands use ASCII encoding with format [Cmd1][Cmd2][ ][SetID][ ][Data][Cr] where Cr = 0x0D, space = 0x20. Data is hexadecimal. Set ID is 0-99 decimal (0 broadcasts to all sets).
  • Acknowledgement format: OK = [Cmd2][ ][SetID][ ][OK][Data][x], Error = [Cmd2][ ][SetID][ ][NG][Data][x]. NG with data 00 means illegal code.
  • Query convention: Sending FF as data reads the current status of any command. The response contains the current value.
  • Model-dependent behavior: Source notes many commands "may work differently depending upon model and signal." Availability should be verified per device.
  • Crestron integration: Built-in Crestron support with default port 41794. Requires server IP and IP ID configuration.
  • USB-to-Serial: Only PL2303 chip-based converters (VID 0x0557, PID 0x2008) are supported.

Provenance

source_domains:
  - lg.com
  - justaddpower.com
  - scribd.com
source_urls:
  - https://www.lg.com/us/business/download/resources/BT00001837/UV340C-U_Install_Manual_170825.pdf
  - https://www.justaddpower.com/docs/manuals/rs232-lg.pdf
  - https://www.scribd.com/document/649294226/LG-TV-RS-232C-Control-Manual
retrieved_at: 2026-06-02T22:08:48.429Z
last_checked_at: 2026-06-02T22:08:48.429Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T22:08:48.429Z
matched_actions: 25
action_count: 25
confidence: medium
summary: "All 25 spec actions traced to source (dip-safe re-verify). (14 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "TCP/IP port for direct IP control not stated in source; only Crestron integration port (41794) is mentioned"
- "USB-to-Serial converter chip requirement noted (PL2303) but no further control implications documented"
- "flow control not stated; wiring diagrams show both 3-wire and 7-wire configs"
- "TCP port for direct IP control not stated in source; Crestron uses 41794 but that is protocol-specific"
- "all settable parameters are represented as actions above."
- "no unsolicited notification protocol documented in source."
- "no multi-step sequences described in source."
- "no formal safety interlock sequences or power-on sequencing requirements documented beyond the above behavioral notes."
- "TCP/IP port for direct LG IP control not stated; only Crestron port documented"
- "maximum command rate / minimum interval between commands not documented"
- "maximum simultaneous connection count not documented"
- "exact key code mapping for the Key (mc) command — source lists hex codes but most are labeled generically as \"R/C Button\""
- "equalizer data bitfield encoding is described but exact frequency bands per step are not fully specified"
- "tune command behavior differs significantly by geographic region; full parameter sets for Japan models not completely documented"

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