Summary
LG UHD TV (49UK7550PLA series) external control over RS-232C and, on US models only, telnet over IP (port 9761). RS-232C uses ASCII command frames of the form [Cmd1][Cmd2] [Set ID] [Data][Cr] with OK/NG acknowledgement; IP control uses uppercase ASCII command keywords (e.g. VOLUME_MUTE on) returning OK or NG. Spec covers all documented set/get commands from the vendor's External Control Device Setup manual.
Transport
protocols:
- serial
- tcp
addressing:
port: 9761 # IP control (USA only); plain telnet
serial:
baud_rate: 9600
data_bits: 8
parity: none
stop_bits: 1
flow_control: none # UNRESOLVED: not stated; "Use a crossed (reverse) cable" implies no hardware flow control
auth:
type: none # inferred: no login/password procedure on the telnet stream itself (the 828 PIN gates the on-TV menu, not the wire protocol)
Traits
- powerable # inferred from `ka` power on/off command
- routable # inferred from `xb` input select command
- queryable # inferred from FF-data query mechanism across all commands
- levelable # inferred from volume / brightness / contrast / etc. level commands
Actions
# --- RS-232C command set (Cmd1 Cmd2 + Set ID + Data + CR; Set ID 00 broadcasts to all) ---
- id: power_set
label: Power On/Off
kind: action
command: "ka {set_id} {data}\r" # Data 00=Off, 01=On
params:
- name: set_id
type: hex
description: Set ID 00-63 (0=broadcast, 1-99=specific set)
- name: data
type: enum
values: ["00", "01"]
description: 00=Power Off, 01=Power On
- id: power_query
label: Power Status Query
kind: query
command: "ka {set_id} FF\r"
params:
- name: set_id
type: hex
- id: aspect_ratio_set
label: Aspect Ratio
kind: action
command: "kc {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: enum
values: ["01", "02", "04", "05", "06", "07", "09", "0B", "0C", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C", "1D", "1E", "1F"]
description: "01=Normal, 02=16:9, 04=Zoom, 05=Zoom2, 06=SetByProgram, 07=14:9, 09=Just Scan, 0B=Full Wide, 0c=21:9, 10-1F=Cinema Zoom 1-16"
- id: screen_mute_set
label: Screen Mute
kind: action
command: "kd {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: enum
values: ["00", "01", "10"]
description: "00=Screen mute off / Video mute off, 01=Screen mute on, 10=Video mute on"
- id: volume_mute_set
label: Volume Mute
kind: action
command: "ke {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: enum
values: ["00", "01"]
description: 00=Mute on, 01=Mute off
- id: volume_set
label: Volume Control
kind: action
command: "kf {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: hex
description: Volume 00-64 (0-100 decimal)
- id: contrast_set
label: Contrast
kind: action
command: "kg {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: hex
description: 00-64
- id: brightness_set
label: Brightness
kind: action
command: "kh {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: hex
description: 00-64
- id: color_set
label: Color
kind: action
command: "ki {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: hex
description: 00-64
- id: tint_set
label: Tint
kind: action
command: "kj {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: hex
description: 00=Red, 64=Green
- id: sharpness_set
label: Sharpness
kind: action
command: "kk {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: hex
description: 00-32
- id: osd_select_set
label: OSD Select
kind: action
command: "kl {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: enum
values: ["00", "01"]
description: 00=OSD off, 01=OSD on
- id: remote_lock_set
label: Remote Control Lock Mode
kind: action
command: "km {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: enum
values: ["00", "01"]
description: 00=Lock off, 01=Lock on
- id: treble_set
label: Treble
kind: action
command: "kr {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: hex
description: 00-64
- id: bass_set
label: Bass
kind: action
command: "ks {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: hex
description: 00-64
- id: balance_set
label: Balance
kind: action
command: "kt {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: hex
description: 00-64
- id: color_temperature_set
label: Color Temperature
kind: action
command: "xu {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: hex
description: 00-64
- id: ism_method_set
label: ISM Method (Plasma only)
kind: action
command: "jp {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: enum
values: ["02", "08", "20"]
description: 02=Orbiter, 08=Normal, 20=Color Wash
- id: equalizer_set
label: Equalizer
kind: action
command: "jv {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: hex
description: Bit-packed byte - high 3 bits = band (000=1st through 100=5th), low 5 bits = step 0-20 (decimal)
- id: energy_saving_set
label: Energy Saving
kind: action
command: "jq {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: enum
values: ["00", "01", "02", "03", "04", "05"]
description: "00=Off, 01=Minimum, 02=Medium, 03=Maximum, 04=Auto/Intelligent sensor, 05=Screen off"
- id: tune_command
label: Tune Command
kind: action
command: "ma {set_id} {data00} {data01} {data02}\r" # short form; long form adds Data03-Data05 (see notes)
params:
- name: set_id
type: hex
- name: data00
type: hex
description: Physical channel high byte, OR Data 00 (per region/channel-type variant)
- name: data01
type: hex
description: Physical channel low byte, OR Major-high byte
- name: data02
type: hex
description: Input source enum (analog 00=ATV, 80=CATV; digital 10=DTV, 40=Sat DTV, etc.) OR Major-low byte
- name: data03
type: hex
description: Minor channel high byte (long form only) # UNRESOLVED: optional per region variant
- name: data04
type: hex
description: Minor channel low byte (long form only)
- name: data05
type: hex
description: Digital input source (long form). 02=DTV, 06=CADTV, 22=DTV no-physical, 26=CADTV no-physical, 46/66 cable variants, 07=BS, 08=CS1, 09=CS2 (Japan)
- id: channel_add_del_set
label: Channel/Programme Add or Skip
kind: action
command: "mb {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: enum
values: ["00", "01"]
description: 00=Del/Skip, 01=Add
- id: key_send
label: Send IR Remote Key Code
kind: action
command: "mc {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: hex
description: IR Key code (see Key Codes table - Power=08, Mute=09, VolUp=02, VolDn=03, Input=0B, Menu=43, OK=44, etc.)
- id: backlight_set
label: Backlight / Panel Light Control
kind: action
command: "mg {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: hex
description: 00-64
- id: input_select_set
label: Input Select (Main Picture)
kind: action
command: "xb {set_id} {data}\r"
params:
- name: set_id
type: hex
- name: data
type: enum
values: ["00", "01", "02", "03", "04", "10", "11", "20", "21", "40", "41", "60", "90", "91", "92", "93"]
description: "00=DTV, 01=CADTV, 02=Sat DTV, 03=ISDB-CS1, 04=ISDB-CS2, 10=ATV, 11=CATV, 20=AV/AV1, 21=AV2, 40=Component1, 41=Component2, 60=RGB, 90-93=HDMI1-4"
- id: mode_3d_set
label: 3D Mode (3D models only)
kind: action
command: "xt {set_id} {data00} {data01} {data02} {data03}\r"
params:
- name: set_id
type: hex
- name: data00
type: enum
values: ["00", "01", "02", "03"]
description: 00=3D On, 01=3D Off, 02=3D-to-2D, 03=2D-to-3D
- name: data01
type: enum
values: ["00", "01", "02", "03", "04", "05"]
description: Pattern - 00=Top/Bottom, 01=Side-by-Side, 02=CheckBoard, 03=FrameSequential, 04=ColumnInterleave, 05=RowInterleave
- name: data02
type: enum
values: ["00", "01"]
description: 00=Right-to-Left, 01=Left-to-Right
- name: data03
type: hex
description: 3D depth 00-14 hex (Manual mode only)
- id: extended_3d_set
label: Extended 3D Options (3D models only)
kind: action
command: "xv {set_id} {data00} {data01}\r"
params:
- name: set_id
type: hex
- name: data00
type: enum
values: ["00", "01", "02", "06", "07", "08", "09"]
description: 00=Picture Correction, 01=Depth, 02=Viewpoint, 06=Color Correction, 07=Sound Zooming, 08=Normal Image View, 09=3D Mode (Genre)
- name: data01
type: hex
description: Range depends on Data00 (see source - 0-1 toggle, 0-14 hex range, or genre enum 00-05)
- id: auto_configure
label: Auto Configure (RGB/PC mode only)
kind: action
command: "ju {set_id} 01\r"
params:
- name: set_id
type: hex
# --- IP control command set (telnet port 9761, USA only) ---
- id: ip_power
label: Power (IP)
kind: action
command: "POWER off\r" # source only documents POWER off; power-on uses WOL
params: []
- id: ip_aspect_ratio
label: Aspect Ratio (IP)
kind: action
command: "ASPECT_RATIO {mode}\r"
params:
- name: mode
type: enum
values: [4by3, 16by9, setbyoriginal]
- id: ip_screen_mute
label: Screen Mute (IP)
kind: action
command: "SCREEN_MUTE {mode}\r"
params:
- name: mode
type: enum
values: [screenmuteon, videomuteon, allmuteoff]
- id: ip_volume_mute
label: Volume Mute (IP)
kind: action
command: "VOLUME_MUTE {state}\r"
params:
- name: state
type: enum
values: [on, off]
- id: ip_volume_control
label: Volume Control (IP)
kind: action
command: "VOLUME_CONTROL {level}\r"
params:
- name: level
type: integer
description: 0 to 100
- id: ip_contrast
label: Contrast (IP)
kind: action
command: "PICTURE_CONTRAST {level}\r"
params:
- name: level
type: integer
description: 0 to 100
- id: ip_brightness
label: Brightness (IP)
kind: action
command: "PICTURE_BRIGHTNESS {level}\r"
params:
- name: level
type: integer
description: 0 to 100
- id: ip_color
label: Color (IP)
kind: action
command: "PICTURE_COLOUR {level}\r"
params:
- name: level
type: integer
description: 0 to 100
- id: ip_tint
label: Tint (IP)
kind: action
command: "PICTURE_TINT {level}\r"
params:
- name: level
type: integer
description: 0 to 100
- id: ip_sharpness
label: Sharpness (IP)
kind: action
command: "PICTURE_SHARPNESS {level}\r"
params:
- name: level
type: integer
description: 0 to 50
- id: ip_osd_select
label: OSD Select (IP)
kind: action
command: "OSD_SELECT {state}\r"
params:
- name: state
type: enum
values: [on, off]
- id: ip_remote_lock
label: Remote Control Lock Mode (IP)
kind: action
command: "REMOTECONTROLER_LOCK {state}\r"
params:
- name: state
type: enum
values: [on, off]
- id: ip_balance
label: Balance (IP)
kind: action
command: "AUDIO_BALANCE {level}\r"
params:
- name: level
type: integer
description: 0 to 100
- id: ip_color_temperature
label: Color Temperature (IP)
kind: action
command: "PICTURE_COLOUR_TEMPERATURE {level}\r"
params:
- name: level
type: integer
description: 0 to 100
- id: ip_equalizer
label: Equalizer (IP)
kind: action
command: "AUDIO_EQUALIZER {band} {step}\r"
params:
- name: band
type: integer
description: 1 to 5 (frequency band)
- name: step
type: integer
description: 0 to 20 (step decimal)
- id: ip_energy_saving
label: Energy Saving (IP)
kind: action
command: "ENERGY_SAVING {mode}\r"
params:
- name: mode
type: enum
values: [screenoff, maximum, medium, minimum, off]
- id: ip_tune_command
label: Tune Command (IP)
kind: action
command: "CHANNEL_SETTING_{tuner}_{type} {args}\r"
params:
- name: tuner
type: enum
values: [ATSC]
- name: type
type: enum
values: [ATV, DTV]
- name: args
type: string
description: |
ATV form: "{channel} antenna|cable"
DTV cablenotphy form: "{channel} cablenotphy"
DTV major/minor form: "{major} {minor} antennanotphy|cablenotphy"
- id: ip_channel_add_delete
label: Channel Add/Delete (IP)
kind: action
command: "CHANNEL_ADD_DELETE {op}\r"
params:
- name: op
type: enum
values: [add, delete]
- id: ip_key_action
label: Key Action (IP)
kind: action
command: "KEY_ACTION {key}\r"
params:
- name: key
type: enum
values: [exit, channelup, channeldown, volumeup, volumedown, arrowright, arrowleft, volumemute, deviceinput, sleepreserve, livetv, previouschannel, favoritechannel, teletext, teletextoption, returnback, avmode, captionsubtitle, arrowup, arrowdown, myapp, settingmenu, ok, quickmenu, videomode, audiomode, channellist, bluebutton, yellowbutton, greenbutton, redbutton, aspectratio, audiodescription, programmorder, userguide, smarthome, simplelink, fastforward, rewind, programminfo, programguide, play, slowplay, soccerscreen, record, "3d", autoconfig, app, screenbright, number0, number1, number2, number3, number4, number5, number6, number7, number8, number9]
- id: ip_backlight
label: Backlight Control (IP)
kind: action
command: "PICTURE_BACKLIGHT {level}\r"
params:
- name: level
type: integer
description: 0 to 100; precondition - Energy Saving must be off
- id: ip_input_select
label: Input Select (IP)
kind: action
command: "INPUT_SELECT {input}\r"
params:
- name: input
type: enum
values: [dtv, atv, cadtv, catv, avav1, component1, hdmi1, hdmi2, hdmi3]
- id: ip_picture_3d
label: 3D Picture Mode (IP, 3D models only)
kind: action
command: "PICTURE_3D {mode} {pattern} {direction} {depth}\r"
params:
- name: mode
type: enum
values: [off, 3dto2d, 2dto3d, on]
- name: pattern
type: enum
values: [topandbottom, sidebyside, checkboard, framesequential, columninterleaving, rowinterleaving]
description: Required when mode=on
- name: direction
type: enum
values: [righttoleft, lefttoright]
description: Required when mode=on or mode=2dto3d
- name: depth
type: integer
description: 0-20; required when mode=on or mode=2dto3d
- id: ip_picture_3d_extension
label: Extended 3D Options (IP, 3D models only)
kind: action
command: "PICTURE_3D_EXTENSION {option} {args}\r"
params:
- name: option
type: enum
values: [picturecorrection, colorcorrection, sound, normal, depth, viewpoint, genre]
- name: args
type: string
description: |
picturecorrection: 0=R-to-L, 1=L-to-R
colorcorrection/sound/normal: 0=off, 1=on
depth/viewpoint: 0-20
genre: 0=Standard, 1=Sport, 2=Cinema, 3=Extreme, 4=Manual, 5=Auto
Feedbacks
- id: ack_ok
label: OK Acknowledgement
type: ascii_frame
format: "{cmd2} {set_id} OK{data}x" # RS-232 success response
description: Transmitted on receipt of valid command. Data field reflects current value (for queries) or echoes written value.
- id: ack_ng
label: Error Acknowledgement
type: ascii_frame
format: "{cmd2} {set_id} NG{data}x"
description: Transmitted on invalid command or non-viable function. Data 00 = Illegal Code.
- id: ip_ack_ok
label: IP OK Response
type: enum
values: [OK]
description: telnet command accepted
- id: ip_ack_ng
label: IP NG Response
type: enum
values: [NG]
description: telnet command rejected
# Per-command queries (via FF data) - return current value in OK ack payload
- id: power_state
type: enum
values: ["00", "01"]
description: 00=Off, 01=On (returned by `ka ... FF`)
- id: aspect_ratio_state
type: hex
description: Returned by `kc ... FF`
- id: volume_state
type: hex
description: 00-64 (returned by `kf ... FF`)
- id: volume_mute_state
type: enum
values: ["00", "01"]
description: 00=muted, 01=unmuted (returned by `ke ... FF`)
- id: input_state
type: hex
description: Current input (returned by `xb ... FF`)
# UNRESOLVED: source states "all functions" support FF-data query - additional per-command query feedbacks are implied but not separately enumerated in source.
Variables
- id: set_id
label: Set ID
type: integer
range: [1, 99]
description: Device address on the RS-232 bus (1-99 decimal, 01-63 hex). Set ID 0 (00 hex) broadcasts to all connected sets. Configured via SETTINGS > General > About this TV / OPTION > SET ID on the TV.
- id: ip_control_enabled
label: Network IP Control
type: boolean
description: Must be set to On in the IP Control Setup menu (entered via SETTINGS hold + 828 PIN on Live TV) before telnet port 9761 accepts connections. USA models only.
- id: ip_control_password
label: IP Control Setup PIN
type: string
description: 3-digit PIN that gates the on-TV IP Control Setup menu. Default 828; user-changeable. Not used on the telnet stream itself.
- id: mobile_tv_on
label: Mobile TV On (Wake-on-LAN)
type: boolean
description: Must be On to power the TV on remotely via WOL (no IP `POWER on` command is documented).
Events
# UNRESOLVED: source documents no asynchronous/unsolicited notifications from the device.
Macros
# UNRESOLVED: source documents no multi-step macros.
Safety
confirmation_required_for: []
interlocks: []
# Source documents no safety warnings, interlocks, or power sequencing requirements
# for serial/IP control. UNRESOLVED: not stated in source.
Notes
- RS-232C wiring: source describes a 3-wire crossed (null-modem) configuration — PC TXD (pin 3) ↔ TV RXD (pin 2), PC RXD (pin 2) ↔ TV TXD (pin 3), GND ↔ GND. Some sets use a phone-jack-to-DB9 adapter instead. Other models use the USB port via an LG-supported PL2303 (VID 0x0557 / PID 0x2008) USB-to-serial converter.
- During media playback or recording, only the Power (
ka) and Key (mc) RS-232 commands and the corresponding IPKEY_ACTIONare honoured; all other commands return NG. - With an RS-232C cable,
kaworks in both power-on and power-off (standby) states. With the USB-to-serial converter,kaonly works while the TV is on. - When Remote Control Lock (
km/REMOTECONTROLER_LOCK) is on and the TV is in standby (viaka 00,mc 08, or off-timer), the TV will NOT respond to IR or local-key power-on. Removing mains power for 20-30 seconds releases the lock. - IP control is documented only for "USA only" models, requires Network IP Control to be set to On (via the hidden 828-PIN menu), and uses plain telnet on port 9761. There is no documented IP
POWER oncommand — power-on over IP requires Wake-on-LAN with "Mobile TV On" enabled. - ISM Method (
jp) is documented as plasma-only; it is unlikely to be functional on this LCD/LED model but is included for completeness because the source's command reference table lists it. - 3D commands (
xt,xv, IPPICTURE_3D*) apply only to 3D-capable models in this series. - Equalizer command (
jv) encodes band (high 3 bits) and step (low 5 bits) into a single byte — not a simple decimal value. - Tune Command (
ma) has multiple regional variants (Europe/Mid-East/Colombia/Asia vs. South Korea/North America vs. Japan), with different data-byte layouts and input-source enums per region. The action above covers the short (3-data-byte) form; the long (6-data-byte) form for digital channels uses additional Data03-Data05 fields.
Provenance
source_domains:
- proaudioinc.com
source_urls:
- https://www.proaudioinc.com/Dealer_Area/RS232C_EN_160526.pdf
retrieved_at: 2026-06-02T01:17:53.320Z
last_checked_at: 2026-06-02T17:22:55.915Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T17:22:55.915Z
matched_actions: 51
action_count: 51
confidence: medium
summary: "All 51 spec actions matched literally in source; transport parameters (9600 baud, RS-232C/IP) verified; no undocumented commands found. (8 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "firmware compatibility range, exact list of regional model variants in the \"49UK7550PLA Series\" — source only states feature differences depend on model and region."
- "not stated; \"Use a crossed (reverse) cable\" implies no hardware flow control"
- "optional per region variant"
- "source states \"all functions\" support FF-data query - additional per-command query feedbacks are implied but not separately enumerated in source."
- "source documents no asynchronous/unsolicited notifications from the device."
- "source documents no multi-step macros."
- "not stated in source."
- "per-command query feedback shapes for every command (source documents the FF mechanism generically rather than per-row), exact serial timing (inter-byte and response timeout), behaviour during firmware update / channel scan, complete list of region-specific tune-command variations beyond the examples given."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0