Summary
LG 86QNED90UQA 4K MiniLED television with RS-232C serial (DE9 or 3.5mm phone-jack) and IP/Telnet (port 9761) control. This spec covers the ASCII command set, the supplementary key-code IR-emulation table, the communication parameters, and the model-dependent commands documented in the owner manual.
Transport
protocols:
- serial
- tcp
serial:
baud_rate: 9600
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
addressing:
port: 9761 # Telnet port stated in source for IP Control section
auth:
type: password # IP control uses 3-digit password (default 828); RS-232C has no auth
notes: "RS-232C transport: no authentication. IP/Telnet transport: 3-digit numeric password, default 828, configurable via Password Change submenu in IP Control Setup."
Traits
- powerable # inferred from Power (ka) command and POWER off IP command
- routable # inferred from Input select (xb) and INPUT_SELECT IP commands
- queryable # inferred from FF status-read transmissions and OK/NG acknowledgement protocol
- levelable # inferred from volume / bass / treble / brightness / contrast / sharpness / color / tint / backlight commands
Actions
RS-232C (Serial)
- id: power
label: Power
kind: action
command: "ka {data}" # e.g. "ka 00 00 01" → power on with Set ID 1
params:
- 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 {setid} FF" # "ka 00 FF" with Set ID 0x00
params: []
- id: aspect_ratio
label: Aspect Ratio
kind: action
command: "kc {data}"
params:
- name: data
type: enum
values: ["01", "02", "04", "05", "06", "07", "09", "0B", "0C", "10-1F"]
description: "01=Normal, 02=16:9, 04=Zoom, 05=Zoom2, 06=Set by Program/Original, 07=14:9, 09=Just Scan, 0B=Full Wide (LATAM), 0C=21:9, 10-1F=Cinema Zoom 1-16"
- id: screen_mute
label: Screen Mute
kind: action
command: "kd {data}"
params:
- name: data
type: enum
values: ["00", "01", "10"]
description: "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"]
description: "00=Volume mute on, 01=Volume mute off"
- id: volume_control
label: Volume Control
kind: action
command: "kf {data}"
params:
- name: data
type: integer
description: "0-100 decimal (transmitted as 00-64 hex)"
- id: contrast
label: Contrast
kind: action
command: "kg {data}"
params:
- name: data
type: integer
description: "0-100 decimal (00-64 hex)"
- id: brightness
label: Brightness
kind: action
command: "kh {data}"
params:
- name: data
type: integer
description: "0-100 decimal (00-64 hex)"
- id: color
label: Color/Colour
kind: action
command: "ki {data}"
params:
- name: data
type: integer
description: "0-100 decimal (00-64 hex)"
- id: tint
label: Tint
kind: action
command: "kj {data}"
params:
- name: data
type: integer
description: "0=Red, 100=Green (00-64 hex)"
- id: sharpness
label: Sharpness
kind: action
command: "kk {data}"
params:
- name: data
type: integer
description: "0-50 decimal (00-32 hex)"
- id: osd_select
label: OSD Select
kind: action
command: "kl {data}"
params:
- name: data
type: enum
values: ["00", "01"]
description: "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"]
description: "00=Lock off, 01=Lock on"
- id: treble
label: Treble
kind: action
command: "kr {data}"
params:
- name: data
type: integer
description: "0-100 decimal (00-64 hex)"
- id: bass
label: Bass
kind: action
command: "ks {data}"
params:
- name: data
type: integer
description: "0-100 decimal (00-64 hex)"
- id: balance
label: Balance
kind: action
command: "kt {data}"
params:
- name: data
type: integer
description: "0-100 decimal (00-64 hex)"
- id: color_temperature
label: Color Temperature
kind: action
command: "xu {data}"
params:
- name: data
type: integer
description: "0-100 decimal (00-64 hex)"
- id: ism_method
label: ISM Method
kind: action
command: "jp {data}"
params:
- name: data
type: enum
values: ["02", "08", "20"]
description: "02=Orbiter, 08=Normal, 20=Color Wash. Plasma TV only - not applicable to QNED."
- id: equalizer
label: Equalizer
kind: action
command: "jv {data}"
params:
- name: data
type: string
description: "1-byte value: bits 7-5 select frequency band (1st-5th), bits 4-0 select step (0-20). E.g. 5th band, step 20 = 10010101 = 0x95. Adjustable when sound mode is EQ-adjustable."
- id: energy_saving
label: Energy Saving
kind: action
command: "jq {data}"
params:
- name: data
type: enum
values: ["00", "01", "02", "03", "04", "05"]
description: "00=Off, 01=Minimum, 02=Medium, 03=Maximum, 04=Auto (LCD/LED), 05=Screen off"
- id: tune_command
label: Tune Command
kind: action
command: "ma {data00} {data01} {data02}"
params:
- name: data00
type: string
description: "High byte channel data (00-27 hex)"
- name: data01
type: string
description: "Low byte channel data (00-0F hex)"
- name: data02
type: string
description: "Input source: 00=ATV Antenna, 80=CATV, 10=DTV Antenna, 40=SDTV Satellite, 90=CADTV, a0=CA-Radio, 20=Antenna Radio, 50=S-Radio"
- id: tune_command_extended
label: Tune Command (Major/Minor)
kind: action
command: "ma 0 {data00} {data01} {data02} {data03} {data04} {data05}"
params:
- name: data00
type: string
description: "Physical channel number (don't care for digital)"
- name: data01
type: string
description: "Major channel high byte"
- name: data02
type: string
description: "Major channel low byte"
- name: data03
type: string
description: "Minor channel high byte"
- name: data04
type: string
description: "Minor channel low byte"
- name: data05
type: string
description: "Input source: 00=ATV, 01=CATV, 02=DTV Antenna, 06=CADTV Physical, 22=DTV Antenna (no physical), 26=CADTV (no physical), 46=CADTV Physical/Major only, 66=CADTV Major only, 07=BS, 08=CS1, 09=CS2"
- id: channel_add_del
label: Channel Add/Del(Skip)
kind: action
command: "mb {data}"
params:
- name: data
type: enum
values: ["00", "01"]
description: "00=Del(ATSC/ISDB)/Skip(DVB), 01=Add"
- id: key
label: IR Key Code Send
kind: action
command: "mc {keycode}"
params:
- name: keycode
type: string
description: "Two-character hex IR key code from the KEY CODES table (e.g. 08=Power, 09=Mute, 0B=Input, 44=OK, 43=Menu/Settings)"
- id: backlight
label: Control Backlight / Panel Light
kind: action
command: "mg {data}"
params:
- name: data
type: integer
description: "0-100 decimal (00-64 hex). Controls backlight on LED/LCD, panel light on others."
- id: input_select
label: Input Select (Main)
kind: action
command: "xb {data}"
params:
- 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=Satellite DTV, 03=ISDB-CS1, 04=ISDB-CS2, 10=ATV, 11=CATV, 20=AV/AV1, 21=AV2, 40=Component1, 41=Component2, 60=RGB, 90=HDMI1, 91=HDMI2, 92=HDMI3, 93=HDMI4"
- id: auto_configure
label: Auto Configure
kind: action
command: "ju {data}"
params:
- name: data
type: enum
values: ["01"]
description: "01=To set Auto Configure. Works only in RGB (PC) mode."
IP / Telnet (Port 9761, USA only)
- id: ip_power
label: IP Power
kind: action
command: "POWER off"
params:
- name: action
type: enum
values: ["on", "off"]
description: "POWER on | POWER off"
- id: ip_aspect_ratio
label: IP Aspect Ratio
kind: action
command: "ASPECT_RATIO {mode}"
params:
- name: mode
type: enum
values: ["4by3", "16by9", "setbyoriginal"]
- id: ip_screen_mute
label: IP Screen Mute
kind: action
command: "SCREEN_MUTE {mode}"
params:
- name: mode
type: enum
values: ["screenmuteon", "videomuteon", "allmuteoff"]
- id: ip_volume_mute
label: IP Volume Mute
kind: action
command: "VOLUME_MUTE {mode}"
params:
- name: mode
type: enum
values: ["on", "off"]
- id: ip_volume_control
label: IP Volume Control
kind: action
command: "VOLUME_CONTROL {level}"
params:
- name: level
type: integer
description: "0-100 decimal"
- id: ip_contrast
label: IP Contrast
kind: action
command: "PICTURE_CONTRAST {level}"
params:
- name: level
type: integer
description: "0-100 decimal"
- id: ip_brightness
label: IP Brightness
kind: action
command: "PICTURE_BRIGHTNESS {level}"
params:
- name: level
type: integer
description: "0-100 decimal"
- id: ip_color
label: IP Color/Colour
kind: action
command: "PICTURE_COLOUR {level}"
params:
- name: level
type: integer
description: "0-100 decimal"
- id: ip_tint
label: IP Tint
kind: action
command: "PICTURE_TINT {level}"
params:
- name: level
type: integer
description: "0-100 decimal"
- id: ip_sharpness
label: IP Sharpness
kind: action
command: "PICTURE_SHARPNESS {level}"
params:
- name: level
type: integer
description: "0-50 decimal"
- id: ip_osd_select
label: IP OSD Select
kind: action
command: "OSD_SELECT {mode}"
params:
- name: mode
type: enum
values: ["on", "off"]
- id: ip_remote_lock
label: IP Remote Control Lock
kind: action
command: "REMOTECONTROLER_LOCK {mode}"
params:
- name: mode
type: enum
values: ["on", "off"]
- id: ip_balance
label: IP Balance
kind: action
command: "AUDIO_BALANCE {level}"
params:
- name: level
type: integer
description: "0-100 decimal"
- id: ip_color_temperature
label: IP Color Temperature
kind: action
command: "PICTURE_COLOUR_TEMPERATURE {level}"
params:
- name: level
type: integer
description: "0-100 decimal"
- id: ip_equalizer
label: IP Equalizer
kind: action
command: "AUDIO_EQUALIZER {band} {step}"
params:
- name: band
type: integer
description: "1-5 frequency band"
- name: step
type: integer
description: "0-20 step. Precondition: All settings > sound > sound mode settings > Equalizer on"
- id: ip_energy_saving
label: IP Energy Saving
kind: action
command: "ENERGY_SAVING {mode}"
params:
- name: mode
type: enum
values: ["screenoff", "maximum", "medium", "minimum", "off"]
- id: ip_tune_atsc_atv
label: IP Tune (ATSC/ATV)
kind: action
command: "CHANNEL_SETTING_ATSC_ATV {channel} {source}"
params:
- name: channel
type: integer
description: "Channel number"
- name: source
type: enum
values: ["antenna", "cable"]
- id: ip_tune_atsc_dtv_phy
label: IP Tune (ATSC DTV Physical)
kind: action
command: "CHANNEL_SETTING_ATSC_DTV {channel} cablenotphy"
params:
- name: channel
type: integer
description: "Channel number (cable, not using physical)"
- id: ip_tune_atsc_dtv_majmin
label: IP Tune (ATSC DTV Major/Minor)
kind: action
command: "CHANNEL_SETTING_ATSC_DTV {major} {minor} {source}notphy"
params:
- name: major
type: integer
description: "Major channel number"
- name: minor
type: integer
description: "Minor channel number"
- name: source
type: enum
values: ["antenna", "cable"]
- id: ip_channel_add_del
label: IP Channel Add/Del
kind: action
command: "CHANNEL_ADD_DELETE {mode}"
params:
- name: mode
type: enum
values: ["add", "delete"]
- id: ip_key_action
label: IP Key Action
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_backlight
label: IP Backlight
kind: action
command: "PICTURE_BACKLIGHT {level}"
params:
- name: level
type: integer
description: "0-100 decimal. Precondition: All settings > picture > Energy Saving off"
- id: ip_input_select
label: IP Input Select
kind: action
command: "INPUT_SELECT {input}"
params:
- name: input
type: enum
values: [dtv, atv, cadtv, catv, avav1, component1, hdmi1, hdmi2, hdmi3]
Feedbacks
# RS-232C acknowledgement format:
# [Command2][ ][Set ID][ ][OK][Data][x] → success, returns data
# [Command2][ ][Set ID][ ][NG][Data][x] → error
# NG Data 00 = Illegal Code
#
# All set commands can be queried by sending data = 0xFF; the set returns
# the current state in the OK Acknowledgement.
- id: ok_acknowledgement
type: string
description: "OK Acknowledgement: [Command2][Space][SetID][Space]OK[Data]x - returned on successful command. Data is the current state when reading (FF was sent)."
- id: ng_acknowledgement
type: string
description: "NG Acknowledgement: [Command2][Space][SetID][Space]NG[Data]x - returned on illegal code or communication error. Data 00 = Illegal Code."
# IP/Telnet acknowledgements:
- id: ip_ok
type: string
description: "OK - printed when IP command is accepted"
- id: ip_ng
type: string
description: "NG - printed when IP command is rejected"
Variables
# Queryable state (all returned via the same OK Acknowledgement with the
# corresponding command letter when data 0xFF is sent):
- id: set_id
type: integer
description: "Set ID 1-99 (decimal 1-99, hex 0x00-0x63). Set to 0x00 to broadcast to all connected sets."
- id: power_state
type: integer
description: "00 = Power Off, 01 = Power On (via ka FF query)"
- id: volume_state
type: integer
description: "0-100 (00-64 hex) (via kf FF query)"
- id: input_state
type: integer
description: "Input source code (via xb FF query) - same enum as input_select action data"
Events
# UNRESOLVED: source documents no unsolicited notifications or asynchronous
# event strings. All TV→host traffic is in response to a host query.
Macros
# UNRESOLVED: source does not document any multi-step sequences. The Key
# command (mc / KEY_ACTION) can emit any IR remote button, so multi-step
# sequences can be constructed client-side, but the source does not specify
# any canned macros.
Safety
confirmation_required_for: []
interlocks:
- "Remote control lock (km 01) disables front-panel and IR control. When main power is cycled (plug-off and plug-in, after 20-30 seconds), the external control lock is released. In standby mode with key lock on, the TV will not turn on via IR or local key power."
# UNRESOLVED: source does not document any high-voltage interlocks or
# power-on sequencing requirements specific to this model.
Notes
- Communication code is ASCII. Transmission terminates with Carriage Return (0x0D). Spaces are 0x20.
- Use a crossed (reverse) RS-232C cable. RS-232C pinout: TV side pin 2 = RXD, pin 3 = TXD, pin 5 = GND (D-Sub 9); phone-jack variant: TV tip = TXD, ring = RXD, sleeve = GND.
- Set ID range 1-99 (decimal), indicated as hex 0x01-0x63 on the wire; 0x00 = broadcast to all sets.
- With RS-232C cable, the
ka(Power) command works in both power-on and power-off states. With USB-to-Serial converter (PL2303, VID 0x0557, PID 0x2008), the command works only when TV is on. - During media playback or recording, all commands except Power (ka) and Key (mc) return NG.
- 3D commands (xt, xv) and ISM Method (jp) are model-dependent. The 86QNED90UQA is not a 3D or plasma model; these commands are documented for completeness but will return NG on this model.
- IP/Telnet control (port 9761) is documented as "For USA only" in the source. Default password 828; configurable via Password Change in the IP Control Setup menu (entered by holding Settings 5 s, then 828 + OK on the Live TV screen). WOL (Wake On LAN) power-on requires the "Mobile TV On" submenu enabled and a companion mobile app.
- Key code 0x4C is available on ATSC/ISDB models only.
Provenance
source_domains:
- proaudioinc.com
source_urls:
- https://www.proaudioinc.com/Dealer_Area/RS232C_EN_160526.pdf
retrieved_at: 2026-06-02T02:51:47.177Z
last_checked_at: 2026-06-03T05:33:22.220Z
Verification Summary
verdict: verified
checked_at: 2026-06-03T05:33:22.220Z
matched_actions: 50
action_count: 50
confidence: medium
summary: "All 50 spec actions traced to source (dip-safe re-verify). (5 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "IP/Telnet control section is documented as \"For USA only\" in the source; behavior on non-USA firmware not stated."
- "source documents no unsolicited notifications or asynchronous"
- "source does not document any multi-step sequences. The Key"
- "source does not document any high-voltage interlocks or"
- "firmware version compatibility not stated; behavior of IP control on non-USA firmware not stated; full key-code list is exhaustive but some codes are model-dependent (e.g. 3D, Soccer, REC, AutoConfig)."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0