Summary
RS-232C and Telnet (IP) external control protocol for the LG 49NANO81UNA NanoCell TV. Source documents 27 ASCII command families over serial (9600 8N1) plus a parallel set of keyword commands over TCP port 9761, covering power, input selection, picture/sound tuning, channel tuning, remote-key emulation, and backlight. 3D and ISM commands are documented but model-dependent (NANO81 is not 3D, not plasma).
Transport
protocols:
- serial
- tcp
serial:
baud_rate: 9600
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
communication_code: ascii
cable: crossed_reverse
port_options:
- USB_to_serial_PL2303 # Vendor ID 0x0557, Product ID 0x2008
- DE9_RS232C # D-Sub 9-pin female-to-female
- phone_jack_RS232C
addressing:
port: 9761
auth:
type: none # inferred: no login procedure for the telnet/serial session itself
# Note: the IP Control Setup menu is gated by a 3-digit password (default 828)
# but that is a local-menu credential, not a transport-layer authentication.
Traits
# powerable - Power (ka) command documented
# routable - Input select (xb) command documented
# queryable - Status query via [Data]=FF returns current state, plus all [Cmd2]...[OK/NG] acks
# levelable - Volume, Contrast, Brightness, Color, Tint, Sharpness, Treble, Bass, Balance, Backlight, Equalizer documented
Actions
# Frame: [Cmd1][Cmd2][ ][SetID][ ][Data][Cr] where SetID is hex 0x00..0x63 (0=broadcast)
# Response: [Cmd2][ ][SetID][ ][OK/NG][Data][x]; 'NG' with Data 00 = Illegal Code
# Read status: transmit Data=FF; current state returned in ack Data.
- id: power
label: Power
kind: action
command: "ka {data}"
params:
- name: data
type: enum
values: ["00", "01"] # 00=Off, 01=On
notes: |
Transmit "ka {SetID} FF" to query power state.
With RS-232C cable: works in both power-on and power-off states.
With USB-to-Serial converter: works only when TV is on.
- id: aspect_ratio
label: Aspect Ratio
kind: action
command: "kc {data}"
params:
- name: data
type: enum
values:
- "01" # Normal 4:3
- "02" # Wide 16:9
- "04" # Zoom
- "05" # Zoom 2 (Europe, Colombia, Mid-East)
- "06" # Set by Program / Original
- "07" # 14:9 (Europe, Colombia, Mid-East, Asia ex KR/JP)
- "09" # Just Scan
- "0B" # Full Wide (Latin America ex Colombia)
- "0C" # 21:9 (model-dependent)
- "10..1F" # Cinema Zoom 1..16
- id: screen_mute
label: Screen Mute
kind: action
command: "kd {data}"
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: volume_mute
label: Volume Mute
kind: action
command: "ke {data}"
params:
- name: data
type: enum
values: ["00", "01"] # 00=Mute on, 01=Mute off
- id: volume_control
label: Volume Control
kind: action
command: "kf {data}"
params:
- name: data
type: integer
range: "00..64"
- id: contrast
label: Contrast
kind: action
command: "kg {data}"
params:
- name: data
type: integer
range: "00..64"
- id: brightness
label: Brightness
kind: action
command: "kh {data}"
params:
- name: data
type: integer
range: "00..64"
- id: color
label: Color / Colour
kind: action
command: "ki {data}"
params:
- name: data
type: integer
range: "00..64"
- id: tint
label: Tint
kind: action
command: "kj {data}"
notes: |
Data range: 00=Red .. 64=Green. Model-dependent.
Ack identifier is 'r', not 'j'.
- id: sharpness
label: Sharpness
kind: action
command: "kk {data}"
params:
- name: data
type: integer
range: "00..32"
- id: osd_select
label: OSD Select
kind: action
command: "kl {data}"
params:
- name: data
type: enum
values: ["00", "01"] # 00=OSD off, 01=OSD on
- id: remote_control_lock
label: Remote Control Lock Mode
kind: action
command: "km {data}"
params:
- name: data
type: enum
values: ["00", "01"] # 00=Lock off, 01=Lock on
notes: |
Lock released after main power cycle (plug-off/on, 20-30s).
When in standby and lock is on, IR/local Power key will not turn TV on.
- id: treble
label: Treble
kind: action
command: "kr {data}"
params:
- name: data
type: integer
range: "00..64"
notes: Ack identifier is 'u'.
- id: bass
label: Bass
kind: action
command: "ks {data}"
params:
- name: data
type: integer
range: "00..64"
- id: balance
label: Balance
kind: action
command: "kt {data}"
params:
- name: data
type: integer
range: "00..64"
- id: color_temperature
label: Color Temperature
kind: action
command: "xu {data}"
params:
- name: data
type: integer
range: "00..64"
notes: Ack identifier is 'l'.
- id: ism_method
label: ISM Method
kind: action
command: "jp {data}"
params:
- name: data
type: enum
values: ["02", "08", "20"] # 02=Orbiter, 08=Normal, 20=Color Wash
notes: Plasma TV only. Not applicable to LED/LCD models like 49NANO81UNA.
- id: equalizer
label: Equalizer
kind: action
command: "jv {data}"
notes: |
Single-byte Data encoding two fields:
bits 7-5: frequency band (000=1st .. 100=5th)
bits 4-0: step value (0..20 decimal)
Sound mode must be EQ-adjustable.
- id: energy_saving
label: Energy Saving
kind: action
command: "jq {data}"
params:
- name: data
type: enum
values:
- "00" # Off
- "01" # Minimum
- "02" # Medium
- "03" # Maximum
- "04" # Auto (LCD/LED) / Intelligent sensor (PDP)
- "05" # Screen off
- id: tune_command
label: Tune Command
kind: action
command: "ma {data00} {data01} {data02}"
notes: |
Layout varies by region. Europe/Mid-East/Colombia/Asia(ex KR,JP) - 3 data bytes:
ma [SetID] [Data00 hi] [Data01 lo] [Data02 input]
SetID must be '0' for major/minor variants.
- id: channel_add_del
label: Channel Add/Del (Skip)
kind: action
command: "mb {data}"
params:
- name: data
type: enum
values: ["00", "01"] # 00=Del(ATSC/ISDB)/Skip(DVB), 01=Add
- id: key
label: IR Remote Key
kind: action
command: "mc {keycode_hex}"
notes: |
Data is a hex key code from the IR Key Code table (see Key Codes section).
Unlike most other commands, this one is executed even during media playback/recording.
- id: control_backlight
label: Control Backlight
kind: action
command: "mg {data}"
params:
- name: data
type: integer
range: "00..64"
- id: control_panel_light
label: Control Panel Light
kind: action
command: "mg {data}"
params:
- name: data
type: integer
range: "00..64"
notes: Same opcode as Control Backlight; semantics differ by model.
- id: input_select
label: Input Select (Main Picture)
kind: action
command: "xb {data}"
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: ISDB-BS (Japan) - see source for the Japan-specific code.
- id: 3d_mode
label: 3D Mode
kind: action
command: "xt {d00} {d01} {d02} {d03}"
notes: |
3D models only. Not applicable to 49NANO81UNA.
Data00: 00=3D On, 01=3D Off, 02=3D to 2D, 03=2D to 3D.
Data01: 00=Top/Bottom, 01=Side-by-Side, 02=Check Board, 03=Frame Sequential, 04=Column interleaving, 05=Row interleaving.
Data02 (Plasma): 00=Right→Left, 01=Left→Right.
Data03: 3D Effect 00..14 hex.
- id: 3d_extended
label: Extended 3D
kind: action
command: "xv {d00} {d01}"
notes: |
3D models only. Not applicable to 49NANO81UNA.
Data00 options: 00=Picture Correction, 01=Depth (manual only), 02=Viewpoint,
06=Color Correction, 07=Sound Zooming, 08=Normal Image View, 09=Mode (Genre).
See source for the per-option Data01 ranges and preconditions.
- id: auto_configure
label: Auto Configure
kind: action
command: "ju {data}"
params:
- name: data
type: enum
values: ["01"] # 01 = run Auto Configure
notes: |
RGB (PC) input only. Adjusts picture position and minimizes image shaking.
Model-dependent.
- id: power_status_query
label: Power Status Query
kind: query
command: "ka FF"
notes: Returns current power state in ack Data.
- id: volume_mute_status_query
label: Volume Mute Status Query
kind: query
command: "ke FF"
- id: volume_status_query
label: Volume Status Query
kind: query
command: "kf FF"
IR Key Codes (for mc command)
# All values are hex. Source: p.2 of the LG Owner's Manual External Control section.
# Each entry maps to the corresponding R/C button.
key_codes:
"00": "CH +, PR +"
"01": "CH -, PR -"
"02": "Volume +"
"03": "Volume -"
"06": "Arrow Right (>)"
"07": "Arrow Left (<)"
"08": "Power"
"09": "Mute"
"0B": "Input"
"0E": "SLEEP"
"0F": "TV, TV/RAD"
"10-19": "Number Keys 0-9"
"1A": "Q.View / Flashback"
"1E": "FAV (Favorite Channel)"
"20": "Text (Teletext)"
"21": "T.Opt (Teletext Option)"
"28": "Return (BACK)"
"30": "AV (Audio/Video) Mode"
"39": "Caption/Subtitle"
"40": "Arrow Up (Cursor)"
"41": "Arrow Down (Cursor)"
"42": "My Apps"
"43": "Menu / Settings"
"44": "OK / Enter"
"45": "Q.Menu"
"4C": "List, - (ATSC only)"
"4D": "PICTURE"
"52": "SOUND"
"53": "List"
"5B": "Exit"
"60": "PIP(AD)"
"61": "Blue"
"63": "Yellow"
"71": "Green"
"72": "Red"
"79": "Ratio / Aspect Ratio"
"7A": "User Guide"
"7C": "Smart / Home"
"7E": "SIMPLINK"
"8E": "Forward (>>)"
"8F": "Rewind (<<)"
"91": "AD (Audio Description)"
"99": "AutoConfig"
"9B": "TV / PC"
"9E": "LIVE MENU"
"9F": "App / *"
"AA": "Info"
"AB": "Program Guide"
"B0": "Play"
"B1": "Stop / File List"
"B5": "RECENT"
"BA": "Freeze / Slow Play / Pause"
"BB": "Soccer"
"BD": "REC"
"DC": "3D"
notes: |
Key code 4C is available only on ATSC/ISDB models (South Korea, Japan,
North America, Latin America except Colombia).
Feedbacks
- id: power_state
type: enum
values: [on, off]
source: "ka" command ack with Data 00/01
- id: volume_mute_state
type: enum
values: [on, off]
source: "ke" command ack with Data 00/01
- id: volume_level
type: integer
range: "0..100"
source: "kf" command ack (data range 00..64 hex)
- id: ok_acknowledgement
type: string
format: "[Cmd2][ ][SetID][ ][OK][Data][x]"
description: Returned when command is accepted; Data echoes the value just written, or current state for read-mode.
- id: error_acknowledgement
type: string
format: "[Cmd2][ ][SetID][ ][NG][Data][x]"
description: Returned on illegal code / communication error. Data 00 = Illegal Code.
# UNRESOLVED: no unsolicited event/notification stream documented in source.
# UNRESOLVED: no per-input signal-presence or picture-mode feedback beyond the parameter read acks.
Variables
- id: set_id
type: integer
range: "1..99 (decimal) / 0x00..0x63 (hex)"
description: |
Monitor ID for multi-TV RS-232 buses. 0 broadcasts to all connected sets.
Configured via Settings > General > About this TV (or OPTION) > SET ID.
# UNRESOLVED: no other persistent-state variables documented in source.
Events
# UNRESOLVED: no unsolicited event/notification stream documented in source.
# The protocol is strictly request/response; the device only speaks when spoken to.
Macros
# UNRESOLVED: no multi-step sequences described in source.
Safety
confirmation_required_for: []
interlocks:
- description: |
Volume mute (ke), screen mute (kd), and input select (xb) take effect immediately
without a confirm step. Application-layer confirmation is the integrator's responsibility.
# UNRESOLVED: no explicit safety warnings, interlocks, or power-on sequencing requirements in source.
Notes
- The source explicitly notes that during media playback/recording, all commands except
ka(Power) andmc(Key) are treated asNG. Application logic should pause media before sending picture/sound/tuning commands, or expectNGacks. - RS-232 vs USB-to-Serial asymmetry: with the DE9 RS-232C cable the
kapower command works in both standby and on states; with the PL2303 USB-to-Serial converter,kaworks only while the TV is on (standby has the USB host unpowered). - Real-data mapping: a single hex byte covers steps 0..254 (00..FE); a two-byte pair covers steps 256..9999 (e.g.
27 0F= 9999). Set ID range 1..99 maps to hex 00..63. - IP control (USA only) reuses the same logic but with a different command vocabulary over telnet on TCP 9761. The 3-digit password (default
828) gates the setup menu only, not the telnet session. - Several commands have quirks worth noting at integration time:
Tint(kj) ack echoes the identifierr, notj.Treble(kr) ack echoes the identifieru.Color Temperature(xu) ack echoes the identifierl.Control BacklightandControl Panel Lightshare opcodemg; semantics depend on model.Set ID = 0broadcasts to every connected TV on the bus.
- The 49NANO81UNA is an LED/LCD NanoCell set, so plasma-only commands (ISM Method
jp) and 3D-only commands (xt,xv) are listed for protocol completeness but should not be expected to function on this specific model.
Provenance
source_domains:
- proaudioinc.com
source_urls:
- https://www.proaudioinc.com/Dealer_Area/RS232C_EN_160526.pdf
retrieved_at: 2026-06-02T01:09:06.402Z
last_checked_at: 2026-06-03T05:36:09.952Z
Verification Summary
verdict: verified
checked_at: 2026-06-03T05:36:09.952Z
matched_actions: 31
action_count: 31
confidence: medium
summary: "All 31 spec actions traced to source (multi-fence parser fix re-verify). (8 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "firmware version compatibility not stated in source; ISM Method (jp) is plasma-only and not applicable to this LED model; 3D commands (xt, xv) are 3D-model-only and not applicable to the 49NANO81UNA"
- "no unsolicited event/notification stream documented in source."
- "no per-input signal-presence or picture-mode feedback beyond the parameter read acks."
- "no other persistent-state variables documented in source."
- "no multi-step sequences described in source."
- "no explicit safety warnings, interlocks, or power-on sequencing requirements in source."
- "firmware version compatibility not stated in source."
- "which specific xb input codes (e.g. HDMI3/HDMI4, ISDB-BS) the 49NANO81UNA accepts — only stated as \"depends on model and signal\"."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0