Summary
Control spec for Epson EH-LS Series home projectors using the ESC/VP21 ASCII command protocol. Commands can be carried over serial (RS-232C) or TCP/IP. This document is based on the generic ESC/VP21 Command User's Guide; specific EH-LS Series model identifiers were not located in the source.
Transport
# Source describes ESC/VP21 as protocol-independent: "Serial, USB or TCP/IP network can be used".
# Known protocol input: TCP/IP. Serial also documented in Appendix.
protocols:
- tcp
- serial
addressing:
# UNRESOLVED: TCP port number not stated in source (source refers to ESC/VP.net manual)
serial:
baud_rate: 9600
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: none # inferred: no auth procedure in source
Traits
# - powerable (PWR ON / PWR OFF / MUTE ON / MUTE OFF present)
# - routable (SOURCE xx commands present)
# - queryable (Set/Get command format with ? suffix; SOURCE commands have Get variants)
powerable: true # inferred from PWR ON/OFF command examples
routable: true # inferred from SOURCE command examples
queryable: true # inferred from Get command format ("command + ?")
Actions
# ESC/VP21 Set command format: <COMMAND> <PARAM> CR (Hex 0D terminator)
# Get command format: <COMMAND>? CR
# Projector replies with ":" after executing; "ERR" + CR + ":" for illegal commands.
- id: power_on
label: Power On
kind: action
command: "PWR ON"
params: []
- id: power_off
label: Power Off
kind: action
command: "PWR OFF"
params: []
- id: mute_on
label: Mute On (A/V Mute)
kind: action
command: "MUTE ON"
params: []
- id: mute_off
label: Mute Off (A/V Mute)
kind: action
command: "MUTE OFF"
params: []
- id: msel_black
label: MSEL Black (test pattern)
kind: action
command: "MSEL00"
params: []
- id: msel_blue
label: MSEL Blue (test pattern)
kind: action
command: "MSEL01"
params: []
- id: msel_user_logo
label: MSEL User Logo (test pattern)
kind: action
command: "MSEL02"
params: []
# SOURCE commands - each row in the source table is a separate action.
- id: source_10
label: Source change - INPUT 1/A cyclic (SOURCE 1x)
kind: action
command: "SOURCE 10"
params: []
- id: source_11
label: Source change - INPUT 1/A Analog RGB
kind: action
command: "SOURCE 11"
params: []
- id: source_12
label: Source change - INPUT 1/A Digital RGB
kind: action
command: "SOURCE 12"
params: []
- id: source_13
label: Source change - INPUT 1/A RGB Video
kind: action
command: "SOURCE 13"
params: []
- id: source_14
label: Source change - INPUT 1/A YCbCr (Component)
kind: action
command: "SOURCE 14"
params: []
- id: source_15
label: Source change - INPUT 1/A YPbPr (Component)
kind: action
command: "SOURCE 15"
params: []
- id: source_1f
label: Source change - INPUT 1/A Auto
kind: action
command: "SOURCE 1F"
params: []
- id: source_20
label: Source change - INPUT 2/B cyclic (SOURCE 2x)
kind: action
command: "SOURCE 20"
params: []
- id: source_21
label: Source change - INPUT 2/B Analog RGB
kind: action
command: "SOURCE 21"
params: []
- id: source_22
label: Source change - INPUT 2/B RGB Video
kind: action
command: "SOURCE 22"
params: []
- id: source_23
label: Source change - INPUT 2/B YCbCr (Component)
kind: action
command: "SOURCE 23"
params: []
- id: source_24
label: Source change - INPUT 2/B YPbPr (Component)
kind: action
command: "SOURCE 24"
params: []
- id: source_25
label: Source change - INPUT 2/B YPbPr
kind: action
command: "SOURCE 25"
params: []
- id: source_2f
label: Source change - INPUT 2/B Auto
kind: action
command: "SOURCE 2F"
params: []
- id: source_30
label: Source change - INPUT 3 cyclic (SOURCE 3x)
kind: action
command: "SOURCE 30"
params: []
- id: source_31
label: Source change - INPUT 3 Digital RGB
kind: action
command: "SOURCE 31"
params: []
- id: source_33
label: Source change - INPUT 3 RGB-Video
kind: action
command: "SOURCE 33"
params: []
- id: source_34
label: Source change - INPUT 3 YCbCr
kind: action
command: "SOURCE 34"
params: []
- id: source_35
label: Source change - INPUT 3 YPbPr
kind: action
command: "SOURCE 35"
params: []
- id: source_40
label: Source change - VIDEO cyclic (SOURCE 4x)
kind: action
command: "SOURCE 40"
params: []
- id: source_41
label: Source change - VIDEO (RCA)
kind: action
command: "SOURCE 41"
params: []
- id: source_42
label: Source change - VIDEO (S-Video)
kind: action
command: "SOURCE 42"
params: []
- id: source_43
label: Source change - VIDEO (YCbCr)
kind: action
command: "SOURCE 43"
params: []
- id: source_44
label: Source change - VIDEO (YPbPr)
kind: action
command: "SOURCE 44"
params: []
- id: source_52
label: Source change - USB EasyMP
kind: action
command: "SOURCE 52"
params: []
- id: source_a0
label: Source change - HDMI / HDMI2
kind: action
command: "SOURCE A0"
params: []
- id: source_a1
label: Source change - HDMI Digital RGB
kind: action
command: "SOURCE A1"
params: []
- id: source_a3
label: Source change - HDMI RGB-Video
kind: action
command: "SOURCE A3"
params: []
- id: source_a4
label: Source change - HDMI YCbCr
kind: action
command: "SOURCE A4"
params: []
- id: source_a5
label: Source change - HDMI YPbPr
kind: action
command: "SOURCE A5"
params: []
- id: source_c0
label: Source change - INPUT 5 cyclic (SOURCE Cx)
kind: action
command: "SOURCE C0"
params: []
- id: source_c3
label: Source change - INPUT 5 SCART
kind: action
command: "SOURCE C3"
params: []
- id: source_c4
label: Source change - INPUT 5 YCbCr
kind: action
command: "SOURCE C4"
params: []
- id: source_c5
label: Source change - INPUT 5 YPbPr
kind: action
command: "SOURCE C5"
params: []
- id: source_cf
label: Source change - INPUT 5 Auto
kind: action
command: "SOURCE CF"
params: []
- id: source_d0
label: Source change - HDMI WirelessHD
kind: action
command: "SOURCE D0"
params: []
- id: source_d1
label: Source change - HDMI WirelessHD Digital RGB
kind: action
command: "SOURCE D1"
params: []
- id: source_d3
label: Source change - HDMI WirelessHD RGB-Video
kind: action
command: "SOURCE D3"
params: []
- id: source_d4
label: Source change - HDMI WirelessHD YCbCr
kind: action
command: "SOURCE D4"
params: []
- id: source_d5
label: Source change - HDMI WirelessHD YPbPr
kind: action
command: "SOURCE D5"
params: []
- id: null_command
label: Null command (liveness check)
kind: action
command: "" # CR (Hex 0D) only; projector replies with ":"
params: []
# Get (query) variants for SOURCE commands - per source "*7) This command is can be used only for get."
- id: source_query
label: Query current SOURCE
kind: query
command: "SOURCE?"
params: []
- id: power_query
label: Query Power state
kind: query
command: "PWR?"
params: []
Feedbacks
# ESC/VP21 reply conventions from source §2.1, §2.2, §2.3, §2.4.
- id: ack
type: enum
values: [":"] # colon returned after successful command execution
description: "Projector returns a colon after executing a valid command."
- id: error
type: enum
values: ["ERR"]
description: "Projector returns 'ERR' + CR (Hex 0D) + ':' for illegal/invalid commands."
Variables
# UNRESOLVED: no discrete settable parameters (beyond the parameterized commands above) stated in source.
Events
# UNRESOLVED: no unsolicited notifications described in source.
Macros
# TW200/TW200H PWR ON prep sequence - explicitly documented in source *1.
- id: tw200_pwron_prep
label: TW200/TW200H PWR ON preparation sequence
steps:
- "Turn projector on manually."
- "Wait until projector can receive ESC/VP21 commands."
- "Send 'SPWRLVL 01' to the projector."
- "Turn the projector off once; allow it to reach standby state."
- "'PWR ON' will then function."
# TW500 PWR ON prep - explicitly documented in source *1.
- id: tw500_pwron_prep
label: TW500 PWR ON preparation sequence
steps:
- "Set 'Network Monitoring' of 'Operation' in 'Setting' menu to ON."
- "Turn the projector off once; allow it to reach standby state."
- "'PWR ON' will then function."
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings, interlocks, or power-on sequencing requirements stated in source beyond
# the TW200/TW200H/TW500 PWR ON prep sequences (captured as Macros).
Notes
ESC/VP21 is protocol-independent: serial, USB, or TCP/IP can all carry the same ASCII commands (source §1). For TCP/IP details (port, framing) the source explicitly defers to a separate "ESC/VP.net protocol manual" — that document was not provided, so the TCP addressing.port is left unresolved. Serial parameters (9600/8/N/1, no flow control, D-Sub 9-pin) are stated in §5.1.
This source covers many Epson projector model families. The EH-LS Series is not explicitly enumerated in the provided document; commands here reflect the generic ESC/VP21 catalog and may or may not be supported by EH-LS Series hardware. Per-model support varies across SOURCE mnemonics — see source tables for the per-model OK matrix.
Commands are ASCII strings terminated by CR (Hex 0D). Set commands take a fixed parameter (ON/OFF/numeric) or a step parameter (INC/DEC/INIT). Get commands append ? and return the current value followed by CR + :.
Provenance
source_domains:
- files.support.epson.com
source_urls:
- https://files.support.epson.com/pdf/pltw1_/pltw1_cm.pdf
retrieved_at: 2026-09-02T20:02:51.250Z
last_checked_at: 2026-09-10T22:16:20.360Z
Verification Summary
verdict: verified
checked_at: 2026-09-10T22:16:20.360Z
matched_actions: 50
action_count: 50
confidence: medium
summary: "All 50 spec literals appear verbatim in source §4 tables and §2 command format spec; transport values match §5.1. EH-LS Series not enumerated in §3, noted by spec itself. (5 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "source is the generic ESC/VP21 guide covering many Epson projector models. EH-LS Series-specific behavior, firmware, and supported SOURCE commands not stated in source."
- "TCP port number not stated in source (source refers to ESC/VP.net manual)"
- "no discrete settable parameters (beyond the parameterized commands above) stated in source."
- "no unsolicited notifications described in source."
- "no safety warnings, interlocks, or power-on sequencing requirements stated in source beyond"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0