Summary
LG SmartTV series with two documented external control surfaces: an RS-232C serial interface (DE9 or phone-jack, optionally over a USB-to-Serial converter using PL2303) carrying ASCII command pairs of the form [Cmd1][Cmd2][ ][Set ID][ ][Data][Cr], and a Network IP Control telnet interface on TCP port 9761 (USA only, must be enabled via the hidden IP Control Setup menu) carrying plaintext command lines. Both surfaces expose power, picture, audio, channel tuning, input routing, key-injection, and 3D control. Power-on over IP requires WoL because the telnet service is not available while the TV is off.
Transport
protocols:
- tcp
- serial
addressing:
port: 9761
serial:
baud_rate: 9600
data_bits: 8
parity: none
stop_bits: 1
flow_control: none # inferred: source documents 3-wire RXD/TXD/GND only, no RTS/CTS lines
auth:
type: none # inferred: source describes telnet session opened directly with `telnet <ip> 9761` and no login prompt; the 828 password gates the on-TV setup menu, not the telnet session
Traits
- powerable # inferred from power on/off command (ka / POWER)
- routable # inferred from input-select commands (xb / INPUT_SELECT)
- queryable # inferred from "Transmit 'FF' data to read status of command" on every k/x family command
- levelable # inferred from volume / contrast / brightness / backlight level commands
Actions
# ============================================================
# RS-232C command set (Section "Command reference list", rows 01-27)
# Wire format: [Command1][Command2][ ][Set ID][ ][Data][Cr]
# - Set ID: 00-63 hex (decimal 0-99); 00 = broadcast to all sets
# - Data: command-specific hex; FF = query current status
# - Cr: ASCII 0x0D
# ============================================================
- id: rs232_power
label: Power (RS-232)
kind: action
command: "[k][a][ ][Set ID][ ][Data][Cr]"
params:
- name: set_id
type: hex
description: 00-63 (00 = all sets)
- name: data
type: enum
values:
- "00" # Power Off
- "01" # Power On
- "FF" # Query status
notes: |
Ack: [a][ ][Set ID][ ][OK/NG][Data][x].
With native RS-232C cable, ka works in both power-on and power-off states.
With USB-to-Serial converter, ka only works when TV is on.
- id: rs232_aspect_ratio
label: Aspect Ratio (RS-232)
kind: action
command: "[k][c][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: enum
values:
- "01" # Normal
- "02" # Wide 16:9
- "04" # Zoom
- "05" # Zoom 2 (Europe/Colombia/Mid-East except Colombia)
- "06" # Set by Program/Original
- "07" # 14:9 (4:3)
- "09" # Just Scan
- "0B" # Full Wide (Latin America except Colombia)
- "0C" # 21:9
- "10-1F" # Cinema Zoom 1 to 16
notes: "Ack: [c][ ][Set ID][ ][OK/NG][Data][x]."
- id: rs232_screen_mute
label: Screen Mute (RS-232)
kind: action
command: "[k][d][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: enum
values:
- "00" # Screen mute off (Picture on) / Video mute off
- "01" # Screen mute on (Picture off)
- "10" # Video mute on
- id: rs232_volume_mute
label: Volume Mute (RS-232)
kind: action
command: "[k][e][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: enum
values:
- "00" # Volume mute on
- "01" # Volume mute off
notes: "Ack: [e][ ][Set ID][ ][OK/NG][Data][x]."
- id: rs232_volume_control
label: Volume Control (RS-232)
kind: action
command: "[k][f][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: hex
description: 00-64 (decimal 0-100)
notes: "Ack: [f][ ][Set ID][ ][OK/NG][Data][x]."
- id: rs232_contrast
label: Contrast (RS-232)
kind: action
command: "[k][g][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: hex
description: 00-64
notes: "Ack: [g][ ][Set ID][ ][OK/NG][Data][x]."
- id: rs232_brightness
label: Brightness (RS-232)
kind: action
command: "[k][h][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: hex
description: 00-64
notes: "Ack: [h][ ][Set ID][ ][OK/NG][Data][x]."
- id: rs232_color
label: Color/Colour (RS-232)
kind: action
command: "[k][i][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: hex
description: 00-64
notes: "Ack: [i][ ][Set ID][ ][OK/NG][Data][x]."
- id: rs232_tint
label: Tint (RS-232)
kind: action
command: "[k][j][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: hex
description: 00 (Red) to 64 (Green)
notes: "Ack: [r][ ][Set ID][ ][OK/NG][Data][x] (per source)."
- id: rs232_sharpness
label: Sharpness (RS-232)
kind: action
command: "[k][k][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: hex
description: 00-32
notes: "Ack: [k][ ][Set ID][ ][OK/NG][Data][x]."
- id: rs232_osd_select
label: OSD Select (RS-232)
kind: action
command: "[k][l][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: enum
values:
- "00" # OSD off
- "01" # OSD on
notes: "Ack: [l][ ][Set ID][ ][OK/NG][Data][x]."
- id: rs232_remote_lock
label: Remote Control Lock Mode (RS-232)
kind: action
command: "[k][m][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: enum
values:
- "00" # Lock off
- "01" # Lock on
notes: |
Ack: [m][ ][Set ID][ ][OK/NG][Data][x].
Lock released by main-power off/on cycle (plug-out 20-30s then plug-in).
- id: rs232_treble
label: Treble (RS-232)
kind: action
command: "[k][r][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: hex
description: 00-64
notes: "Ack: [u][ ][Set ID][ ][OK/NG][Data][x] (per source)."
- id: rs232_bass
label: Bass (RS-232)
kind: action
command: "[k][s][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: hex
description: 00-64
notes: "Ack: [s][ ][Set ID][ ][OK/NG][Data][x]."
- id: rs232_balance
label: Balance (RS-232)
kind: action
command: "[k][t][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: hex
description: 00-64
notes: "Ack: [t][ ][Set ID][ ][OK/NG][Data][x]."
- id: rs232_color_temperature
label: Color(Colour) Temperature (RS-232)
kind: action
command: "[x][u][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: hex
description: 00-64
notes: "Ack: [l][ ][Set ID][ ][OK/NG][Data][x] (per source)."
- id: rs232_ism_method
label: ISM Method (RS-232, Plasma only)
kind: action
command: "[j][p][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: enum
values:
- "02" # Orbiter
- "08" # Normal
- "20" # Color(Colour) Wash
notes: "Ack: [p][ ][Set ID][ ][OK/NG][Data][x]. Plasma TV only."
- id: rs232_equalizer
label: Equalizer (RS-232)
kind: action
command: "[j][v][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: hex
description: |
Bit-packed byte: bits 7-5 select frequency band (000=1st .. 100=5th),
bits 4-0 select step 0-19 (decimal). Source provides bit table.
notes: "Ack: [v][ ][Set ID][ ][OK/NG][Data][x]. Requires sound mode EQ-adjustable."
- id: rs232_energy_saving
label: Energy Saving (RS-232)
kind: action
command: "[j][q][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: enum
values:
- "00" # Off
- "01" # Minimum
- "02" # Medium
- "03" # Maximum
- "04" # Auto / Intelligent sensor
- "05" # Screen off
notes: "Ack: [q][ ][Set ID][ ][OK/NG][Data][x]."
- id: rs232_tune_command
label: Tune Command (RS-232)
kind: action
command: "[m][a][ ][Set ID][ ][Data 00][ ][Data 01][ ][Data 02][Cr]"
params:
- name: data
type: bytes
description: |
Region-dependent layout. Europe/Mid-East/Colombia/Asia (excl. SK, JP):
3 bytes - [Hi][Lo][Source] with Source 00=ATV, 80=CATV, 10=DTV,
20=Radio, 40=SDTV, 50=S-Radio, 90=CADTV, A0=CA-Radio.
South Korea / N./L. America (excl. Colombia) and Japan:
6 bytes - [Phys][MajHi][MajLo][MinHi][MinLo][Source].
Channel data range 00 00 - 27 0F (0-9999 decimal).
Source includes worked examples (ma 00 00 0a 00, ma 00 00 01 10, etc.).
notes: |
Ack (3-byte form): [a][ ][Set ID][ ][OK][Data 00][Data 01][Data 02][x] /
[a][ ][Set ID][ ][NG][Data 00][x].
Ack (6-byte form): [a][ ][Set ID][ ][OK][Data 00..05][x] / NG form.
- id: rs232_channel_add_del
label: Channel(Programme) Add/Del/Skip (RS-232)
kind: action
command: "[m][b][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: enum
values:
- "00" # Del (ATSC/ISDB) / Skip (DVB)
- "01" # Add
notes: "Ack: [b][ ][Set ID][ ][OK/NG][Data][x]."
- id: rs232_key
label: Key (RS-232 IR remote injection)
kind: action
command: "[m][c][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: hex
description: |
Key code from the "KEY CODES" table - e.g. 00=CH+, 02=Vol+, 08=Power,
09=Mute, 0B=Input, 44=OK/Enter, 7C=Smart/Home, BD=REC, DC=3D, etc.
Full 50+ entry table in source pp.1-2.
notes: "Ack: [c][ ][Set ID][ ][OK/NG][Data][x]."
- id: rs232_control_backlight
label: Control Backlight / Panel Light (RS-232)
kind: action
command: "[m][g][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: hex
description: 00-64
notes: "Ack: [g][ ][Set ID][ ][OK/NG][Data][x]. Same mnemonic governs backlight and panel light."
- id: rs232_input_select
label: Input Select (RS-232)
kind: action
command: "[x][b][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: enum
values:
- "00" # DTV
- "01" # CADTV
- "02" # Satellite DTV
- "03" # ISDB-CS1 (Japan)
- "04" # ISDB-CS2 (Japan)
- "10" # ATV
- "11" # CATV
- "20" # AV / AV1
- "21" # AV2
- "40" # Component1
- "41" # Component2
- "60" # RGB
- "90" # HDMI1
- "91" # HDMI2
- "92" # HDMI3
- "93" # HDMI4
notes: "Ack: [b][ ][Set ID][ ][OK/NG][Data][x]."
- id: rs232_3d
label: 3D Mode (RS-232, 3D models only)
kind: action
command: "[x][t][ ][Set ID][ ][Data 00][ ][Data 01][ ][Data 02][ ][Data 03][Cr]"
params:
- name: data_00
type: enum
values: ["00", "01", "02", "03"] # 3D On / 3D Off / 3D->2D / 2D->3D
- name: data_01
type: enum
values: ["00", "01", "02", "03", "04", "05"] # TopBottom/SideBySide/CheckBoard/FrameSeq/ColInterl/RowInterl
- name: data_02
type: enum
values: ["00", "01"] # Right-to-Left / Left-to-Right
- name: data_03
type: hex
description: 3D depth 00-14 (Manual mode only)
notes: "Ack: [t][ ][Set ID][ ][OK][Data00][Data01][Data02][Data03][x] / NG form."
- id: rs232_extended_3d
label: Extended 3D (RS-232, 3D models only)
kind: action
command: "[x][v][ ][Set ID][ ][Data 00][ ][Data 01][Cr]"
params:
- name: data_00
type: enum
values:
- "00" # 3D Picture Correction
- "01" # 3D Depth (Manual only)
- "02" # 3D Viewpoint
- "06" # 3D Color Correction
- "07" # 3D Sound Zooming
- "08" # Normal Image View
- "09" # 3D Mode (Genre)
- name: data_01
type: hex
description: Range varies per data_00 (00-01 for correction/genre toggles, 00-14 for depth/viewpoint, 00-05 for genre)
notes: "Ack: [v][ ][Set ID][ ][OK][Data00][Data01][x] / NG form."
- id: rs232_auto_configure
label: Auto Configure (RS-232)
kind: action
command: "[j][u][ ][Set ID][ ][Data][Cr]"
params:
- name: data
type: enum
values:
- "01" # Run auto-configure
notes: "Ack: [u][ ][Set ID][ ][OK/NG][Data][x]. RGB (PC) input only."
# ============================================================
# Network IP Control (telnet on TCP 9761, USA only)
# Wire format: ASCII command line terminated by Enter (LF/CRLF).
# Responses: 'OK' on success, 'NG' on error.
# ============================================================
- id: ip_power_off
label: Power Off (IP)
kind: action
command: "POWER off"
params: []
notes: |
Only 'off' is documented for the IP transport because the telnet server
is unavailable while the TV is off. Power-on is performed via Wake-on-LAN
after enabling the 'Mobile TV On' setting.
- id: ip_aspect_ratio
label: Aspect Ratio (IP)
kind: action
command: "ASPECT_RATIO {mode}"
params:
- name: mode
type: enum
values: [4by3, 16by9, setbyoriginal]
- id: ip_screen_mute
label: Screen Mute (IP)
kind: action
command: "SCREEN_MUTE {mode}"
params:
- name: mode
type: enum
values: [screenmuteon, videomuteon, allmuteoff]
- id: ip_volume_mute
label: Volume Mute (IP)
kind: action
command: "VOLUME_MUTE {state}"
params:
- name: state
type: enum
values: [on, off]
- id: ip_volume_control
label: Volume Control (IP)
kind: action
command: "VOLUME_CONTROL {level}"
params:
- name: level
type: integer
description: 0-100 decimal
- id: ip_picture_contrast
label: Picture Contrast (IP)
kind: action
command: "PICTURE_CONTRAST {level}"
params:
- name: level
type: integer
description: 0-100
- id: ip_picture_brightness
label: Picture Brightness (IP)
kind: action
command: "PICTURE_BRIGHTNESS {level}"
params:
- name: level
type: integer
description: 0-100
- id: ip_picture_colour
label: Picture Colour (IP)
kind: action
command: "PICTURE_COLOUR {level}"
params:
- name: level
type: integer
description: 0-100
- id: ip_picture_tint
label: Picture Tint (IP)
kind: action
command: "PICTURE_TINT {level}"
params:
- name: level
type: integer
description: 0-100
- id: ip_picture_sharpness
label: Picture Sharpness (IP)
kind: action
command: "PICTURE_SHARPNESS {level}"
params:
- name: level
type: integer
description: 0-50
- id: ip_osd_select
label: OSD Select (IP)
kind: action
command: "OSD_SELECT {state}"
params:
- name: state
type: enum
values: [on, off]
- id: ip_remote_lock
label: Remote Control Lock (IP)
kind: action
command: "REMOTECONTROLER_LOCK {state}"
params:
- name: state
type: enum
values: [on, off]
- id: ip_audio_balance
label: Audio Balance (IP)
kind: action
command: "AUDIO_BALANCE {level}"
params:
- name: level
type: integer
description: 0-100
- id: ip_picture_colour_temperature
label: Picture Colour Temperature (IP)
kind: action
command: "PICTURE_COLOUR_TEMPERATURE {level}"
params:
- name: level
type: integer
description: 0-100
- id: ip_audio_equalizer
label: Audio Equalizer (IP)
kind: action
command: "AUDIO_EQUALIZER {band} {step}"
params:
- name: band
type: integer
description: 1-5 (frequency band)
- name: step
type: integer
description: 0-20 (decimal step)
notes: "Precondition: Sound > Sound Mode Settings > Equalizer = on."
- id: ip_energy_saving
label: Energy Saving (IP)
kind: action
command: "ENERGY_SAVING {mode}"
params:
- name: mode
type: enum
values: [screenoff, maximum, medium, minimum, off]
- id: ip_channel_setting_atsc_atv
label: Channel Setting (ATSC ATV) (IP)
kind: action
command: "CHANNEL_SETTING_ATSC_ATV {channel} {source}"
params:
- name: channel
type: integer
description: Physical analog channel number
- name: source
type: enum
values: [antenna, cable]
- id: ip_channel_setting_atsc_dtv
label: Channel Setting (ATSC DTV) (IP)
kind: action
command: "CHANNEL_SETTING_ATSC_DTV {args}"
params:
- name: form
type: enum
values:
- "[channel] cablenotphy" # single-channel cable digital
- "[major] [minor] antennanotphy" # major/minor digital antenna
- "[major] [minor] cablenotphy" # major/minor digital cable
- name: channel
type: integer
- name: major
type: integer
- name: minor
type: integer
notes: "Three documented invocation forms within the CHANNEL_SETTING_ATSC_DTV method."
- id: ip_channel_add_delete
label: Channel Add/Delete (IP)
kind: action
command: "CHANNEL_ADD_DELETE {op}"
params:
- name: op
type: enum
values: [add, delete]
- id: ip_key_action
label: Key Action (IP IR injection)
kind: action
command: "KEY_ACTION {key}"
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_picture_backlight
label: Picture Backlight (IP)
kind: action
command: "PICTURE_BACKLIGHT {level}"
params:
- name: level
type: integer
description: 0-100
notes: "Precondition: Picture > Energy Saving = off."
- id: ip_input_select
label: Input Select (IP)
kind: action
command: "INPUT_SELECT {source}"
params:
- name: source
type: enum
values: [dtv, atv, cadtv, catv, avav1, component1, hdmi1, hdmi2, hdmi3]
- id: ip_picture_3d_off
label: 3D Off / 3D-to-2D (IP)
kind: action
command: "PICTURE_3D {mode}"
params:
- name: mode
type: enum
values: [off, 3dto2d]
notes: "3D models only."
- id: ip_picture_3d_2dto3d
label: 3D 2D-to-3D (IP)
kind: action
command: "PICTURE_3D 2dto3d {orientation} {depth}"
params:
- name: orientation
type: enum
values: [righttoleft, lefttoright]
- name: depth
type: integer
description: 0-20
notes: "3D models only."
- id: ip_picture_3d_on
label: 3D On (IP)
kind: action
command: "PICTURE_3D on {pattern} {orientation} {depth}"
params:
- name: pattern
type: enum
values: [topandbottom, sidebyside, checkboard, framesequential, columninterleaving, rowinterleaving]
- name: orientation
type: enum
values: [righttoleft, lefttoright]
- name: depth
type: integer
description: 0-20
notes: "3D models only."
- id: ip_picture_3d_extension_picturecorrection
label: 3D Picture Correction (IP)
kind: action
command: "PICTURE_3D_EXTENSION picturecorrection {direction}"
params:
- name: direction
type: enum
values: ["0", "1"] # 0=Right-to-Left, 1=Left-to-Right
notes: "Precondition: PICTURE_3D on X X X."
- id: ip_picture_3d_extension_colorcorrection_sound
label: 3D Color Correction / Sound Zooming (IP)
kind: action
command: "PICTURE_3D_EXTENSION {option} {state}"
params:
- name: option
type: enum
values: [colorcorrection, sound]
- name: state
type: enum
values: ["0", "1"] # 0=off, 1=on
notes: "Precondition: PICTURE_3D on X X X."
- id: ip_picture_3d_extension_normal
label: 3D Normal Image View (IP)
kind: action
command: "PICTURE_3D_EXTENSION normal {state}"
params:
- name: state
type: enum
values: ["0", "1"] # 0=off, 1=on
notes: "Precondition: PICTURE_3D on X X X."
- id: ip_picture_3d_extension_depth_viewpoint
label: 3D Depth / Viewpoint (IP)
kind: action
command: "PICTURE_3D_EXTENSION {option} {value}"
params:
- name: option
type: enum
values: [depth, viewpoint]
- name: value
type: integer
description: 0-20 (viewpoint range)
notes: |
Depth precondition: PICTURE_3D 2dto3d X X AND PICTURE_3D_EXTENSION genre 4.
Viewpoint precondition: PICTURE_3D 2dto3d X X.
- id: ip_picture_3d_extension_genre
label: 3D Mode Genre (IP)
kind: action
command: "PICTURE_3D_EXTENSION genre {genre}"
params:
- name: genre
type: enum
values: ["0", "1", "2", "3", "4", "5"]
notes: |
0=Standard / 1=Sport / 2=Cinema / 3=Extreme / 4=Manual / 5=Auto.
Precondition: PICTURE_3D 2dto3d X X.
Feedbacks
# RS-232 query: send the same opcode with Data=FF; ACK frame returns current value.
# Wire format: [Command2][ ][Set ID][ ][OK][Data][x] (success) or [Command2][ ][Set ID][ ][NG][Data][x].
# Each Feedback below mirrors the corresponding Action's queryable status.
- id: rs232_ack_ok
label: OK Acknowledgement (RS-232)
type: string
format: "[Command2][ ][Set ID][ ][OK][Data][x]"
notes: "Returned for any successfully processed command. Data echoes set value or returns queried status when request used Data=FF."
- id: rs232_ack_ng
label: Error Acknowledgement (RS-232)
type: string
format: "[Command2][ ][Set ID][ ][NG][Data][x]"
notes: "Data=00 means Illegal Code per source."
- id: ip_ack_ok
label: OK Response (IP)
type: string
format: "OK"
notes: "Returned when an IP command line is accepted."
- id: ip_ack_ng
label: NG Response (IP)
type: string
format: "NG"
notes: "Returned when an IP command line is rejected."
- id: power_state_query
label: Power Status Query (RS-232)
type: enum
values: [on, off]
query_command: "[k][a][ ][Set ID][ ][FF][Cr]"
notes: "Ack data byte: 00=off, 01=on."
# UNRESOLVED: source documents that every k/x family command supports a Data=FF query
# returning current status, but does not enumerate per-command response value ranges
# beyond what is implicit in the set-command parameter table. Only the explicit
# 'show power state' query example is itemized above; per-command queries are
# implementable by sending Data=FF on each opcode and parsing the ACK Data field.
Variables
- id: set_id
label: Set ID
type: integer
range: [1, 99]
default: 1
notes: |
Selects which TV responds on a daisy-chained RS-232 bus.
Transmitted as hex 0x00-0x63. 0x00 broadcasts to all sets.
Configured on TV via Settings > General > About this TV / OPTION > SET ID.
- id: ip_control_enable
label: Network IP Control Enable
type: enum
values: [on, off]
notes: |
Set via hidden 'IP Control Setup' menu (long-press Settings 5s on Live TV,
enter password 828, select Network IP Control = On). Requires TV reboot.
- id: ip_control_password
label: IP Control Setup Password
type: string
default: "828"
notes: "3-digit numeric password gating access to the IP Control Setup menu (not the telnet session)."
- id: mobile_tv_on
label: Mobile TV On (Wake-on-LAN enable)
type: enum
values: [on, off]
notes: "Settings > Mobile TV On = On is required for power-on via WoL packet from a paired mobile app."
Events
# UNRESOLVED: source documents only request/response framing; no unsolicited
# event push notifications are described for either RS-232 or telnet transport.
Macros
# UNRESOLVED: no explicit multi-step macro sequences are documented in the source.
# (3D extension preconditions describe required state-before-call ordering, but
# those are precondition notes on individual actions, not standalone macros.)
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no explicit safety warnings, interlock procedures,
# or power-sequencing requirements beyond operational notes (e.g. ka not executed
# during media playback/recording).
Notes
- Dual transport on different population scopes. The RS-232C command set is the global LG external-control protocol documented for this TV series; the Network IP Control telnet interface on TCP 9761 is explicitly scoped "For USA only" in the source. Drivers targeting non-USA units should fall back to RS-232.
- Power-on asymmetry on IP. The telnet daemon is only reachable while the TV is powered on, so
POWER offis the only documented IP power verb. Power-on is performed via a Wake-on-LAN magic packet after enablingMobile TV On. Native RS-232C cable can driveka 01(power on) in standby; USB-to-Serial converters cannot. - Media playback blocks most commands. During playback or recording of media, all commands except
ka(Power) andmc(Key) on RS-232 — and Power + Key on IP — return NG. - Query mechanism. Every
k*andx*RS-232 opcode acceptsData=FFto read current status; the ACK byte carries the current value. This is whattraits: queryablereflects. - Set ID 0 is broadcast. Sending Set ID
0x00addresses every chained set simultaneously. - Lock release path. Remote Control Lock (
km 01) is cleared only by a main-power cycle (20-30s unplug); a power-on key press will not wake a locked TV while in standby. - 3D commands are gated by model. All
xt/xv/PICTURE_3D*entries are flagged "(only 3D models)" in source. - USB-to-Serial chip identity. LG documents PL2303 (Vendor 0x0557 / Product 0x2008) as the supported converter; cable is not provided.
- OK acknowledgement quirks. The source's per-command ACK templates occasionally show a different second-character than the request mnemonic (e.g. Tint request
kjACK shown as[r]; Treble requestkrACK shown as[u]; Colour TemperaturexuACK shown as[l]). These appear to be source-document typographic errors; field implementers should match on the actual second character returned rather than the printed example.
Provenance
source_domains:
- proaudioinc.com
source_urls:
- https://www.proaudioinc.com/Dealer_Area/RS232C_EN_160526.pdf
retrieved_at: 2026-06-02T02:47:12.317Z
last_checked_at: 2026-06-02T17:23:07.239Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T17:23:07.239Z
matched_actions: 57
action_count: 57
confidence: medium
summary: "All 57 spec actions matched verbatim in source; transport parameters verified; no shape or coverage gaps. (9 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "firmware version range, supported model variants beyond \"SmartTV series\" not stated; exact behavior differences between models flagged \"(Depending on model)\" not enumerated."
- "source documents that every k/x family command supports a Data=FF query"
- "source documents only request/response framing; no unsolicited"
- "no explicit multi-step macro sequences are documented in the source."
- "source contains no explicit safety warnings, interlock procedures,"
- "which entries above are typographical errors in the source vs intentional; some ACK mnemonic mismatches (kj→[r], kr→[u], xu→[l]) cannot be reconciled without device testing."
- "exact line-termination expected by the IP control parser (LF vs CRLF). Source says \"press Enter\" but does not specify the byte sequence."
- "behaviour of `POWER on` over IP — source documents `POWER off` example only; whether the telnet daemon accepts `POWER on` after Mobile TV On / WoL handshake is not stated."
- "response framing for IP query-style operations — source documents only OK/NG outcomes for sent commands and does not describe a query verb for reading current state over IP."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0