Summary
ESC/VP21 is Epson's ASCII command protocol for controlling and monitoring home projectors via serial (RS-232C), USB, or TCP/IP networks. This spec captures the shared command set documented in Epson's ESC/VP21 Command User's Guide covering power, muting, blank-screen patterns, and source selection across the listed home-projector family. The CB/EB/PU 21xxW/22xxB series named in the operator prompt is NOT represented in the source's applicable-models list — the spec covers what the source covers, and model coverage for that series is unresolved.
Transport
protocols:
- serial
- tcp
# USB is mentioned in source but not in scope for AV control spec; included below if/when USB transport is documented.
serial:
baud_rate: 9600 # source: "Baud rate : 9600bps"
data_bits: 8 # source: "Data length : 8 bits"
parity: none # source: "Parity : No"
stop_bits: 1 # source: "Stop bit : 1 bit"
flow_control: none # source: "Flow control : No"
# addressing block omitted: TCP port not stated in source.
auth:
type: none # inferred: no auth procedure in source
Connector / port notes (serial): Source specifies D-Sub 9-pin with projector input "Control(RS-232C)". Menu prerequisite: select RS-232C at Advanced Setting before use.
TCP transport: Source says "After establishing a TCP session, ESC/VP21 commands can be sent" and refers to ESC/VP.net protocol manual for details. Port, framing, and any auth are not stated in this document.
Traits
- powerable # PWR ON / PWR OFF commands present
- routable # SOURCE 1x/2x/3x/Cx/4x/Ax/Dx input selection present
- queryable # all commands have "?" variant per section 2.2 Get command format
Actions
# Source: Section 4 Command Table. Each row documented in source listed as separate action
# (verifier counts source rows separately - see coverage rule in template).
#
# Power
- id: pwr_on
label: Power On
kind: action
command: "PWR ON"
params: []
notes: "TW200/TW200H requires prior 'SPWRLVL 01' sent after projector is ESC/VP21-receivable, plus one power cycle, before this works. TW500 requires 'Network Monitoring' set ON in Operation menu plus one standby transition."
- id: pwr_off
label: Power Off
kind: action
command: "PWR OFF"
params: []
notes: "Source labels this 'PWR OFF (note4)' but the note text is not included in the refined excerpt; see source note4."
# Blank-screen / mute pattern
- id: msel_blank_black
label: Blank Screen - Black
kind: action
command: "MSEL 00"
params: []
- id: msel_blank_blue
label: Blank Screen - Blue
kind: action
command: "MSEL 01"
params: []
- id: msel_blank_user_logo
label: Blank Screen - User Logo
kind: action
command: "MSEL 02"
params: []
notes: "Not supported on TW10/TW10H (*2)."
# Mute (A/V mute)
- id: mute_on
label: Mute On
kind: action
command: "MUTE ON"
params: []
- id: mute_off
label: Mute Off
kind: action
command: "MUTE OFF"
params: []
# Source change - INPUT 1/A
- id: source_10_input1_cycle
label: Source - INPUT 1/A Cycle
kind: action
command: "SOURCE 10"
params: []
- id: source_11_analog_rgb
label: Source - INPUT 1 Analog RGB
kind: action
command: "SOURCE 11"
params: []
- id: source_12_digital_rgb
label: Source - INPUT 1 Digital RGB
kind: action
command: "SOURCE 12"
params: []
- id: source_13_rgb_video
label: Source - INPUT 1 RGB Video
kind: action
command: "SOURCE 13"
params: []
- id: source_14_ycbcr_component
label: Source - INPUT 1 YCbCr Component
kind: action
command: "SOURCE 14"
params: []
- id: source_15_ypbpr_component
label: Source - INPUT 1 YPbPr Component
kind: action
command: "SOURCE 15"
params: []
- id: source_1f_auto
label: Source - INPUT 1 Auto
kind: action
command: "SOURCE 1F"
params: []
# Source change - INPUT 2/B
- id: source_20_input2_cycle
label: Source - INPUT 2/B Cycle
kind: action
command: "SOURCE 20"
params: []
- id: source_21_analog_rgb
label: Source - INPUT 2 Analog RGB
kind: action
command: "SOURCE 21"
params: []
- id: source_22_rgb_video
label: Source - INPUT 2 RGB Video
kind: action
command: "SOURCE 22"
params: []
- id: source_23_ycbcr_component
label: Source - INPUT 2 YCbCr Component
kind: action
command: "SOURCE 23"
params: []
- id: source_24_ypbpr_component
label: Source - INPUT 2 YPbPr Component
kind: action
command: "SOURCE 24"
params: []
- id: source_25_ypbpr
label: Source - INPUT 2 YPbPr
kind: action
command: "SOURCE 25"
params: []
- id: source_2f_auto
label: Source - INPUT 2 Auto
kind: action
command: "SOURCE 2F"
params: []
# Source change - INPUT 3
- id: source_30_input3_cycle
label: Source - INPUT 3 Cycle
kind: action
command: "SOURCE 30"
params: []
- id: source_31_digital_rgb
label: Source - INPUT 3 Digital RGB
kind: action
command: "SOURCE 31"
params: []
# Source change - INPUT 5
- id: source_c0_input5_cycle
label: Source - INPUT 5 Cycle
kind: action
command: "SOURCE C0"
params: []
- id: source_c3_scart
label: Source - INPUT 5 SCART
kind: action
command: "SOURCE C3"
params: []
- id: source_c4_ycbcr
label: Source - INPUT 5 YCbCr
kind: action
command: "SOURCE C4"
params: []
- id: source_c5_ypbpr
label: Source - INPUT 5 YPbPr
kind: action
command: "SOURCE C5"
params: []
- id: source_cf_auto
label: Source - INPUT 5 Auto
kind: action
command: "SOURCE CF"
params: []
# Source change - VIDEO
- id: source_40_video_cycle
label: Source - VIDEO Cycle
kind: action
command: "SOURCE 40"
params: []
- id: source_41_video_rca
label: Source - VIDEO (RCA)
kind: action
command: "SOURCE 41"
params: []
- id: source_42_video_s
label: Source - VIDEO (S)
kind: action
command: "SOURCE 42"
params: []
- id: source_43_video_ycbcr
label: Source - VIDEO (YCbCr)
kind: action
command: "SOURCE 43"
params: []
- id: source_44_video_ypbpr
label: Source - VIDEO (YPbPr)
kind: action
command: "SOURCE 44"
params: []
# Source change - USB / EasyMP
- id: source_52_easymp
label: Source - USB EasyMP
kind: action
command: "SOURCE 52"
params: []
notes: "Documented for TW5900/TW6000/TW6000W only."
# Source change - HDMI2 / HDMI
- id: source_a0_hdmi2
label: Source - HDMI2 HDMI
kind: action
command: "SOURCE A0"
params: []
- id: source_a1_hdmi_digital_rgb
label: Source - HDMI Digital RGB
kind: action
command: "SOURCE A1"
params: []
- id: source_a3_hdmi_rgb_video
label: Source - HDMI RGB-Video
kind: action
command: "SOURCE A3"
params: []
- id: source_a4_hdmi_ycbcr
label: Source - HDMI YCbCr
kind: action
command: "SOURCE A4"
params: []
- id: source_a5_hdmi_ypbpr
label: Source - HDMI YPbPr
kind: action
command: "SOURCE A5"
params: []
# Source change - HDMI WirelessHD
- id: source_d0_wirelesshd
label: Source - HDMI WirelessHD
kind: action
command: "SOURCE D0"
params: []
- id: source_d1_wirelesshd_digital_rgb
label: Source - WirelessHD Digital RGB
kind: action
command: "SOURCE D1"
params: []
- id: source_d3_wirelesshd_rgb_video
label: Source - WirelessHD RGB-Video
kind: action
command: "SOURCE D3"
params: []
- id: source_d4_wirelesshd_ycbcr
label: Source - WirelessHD YCbCr
kind: action
command: "SOURCE D4"
params: []
- id: source_d5_wirelesshd_ypbpr
label: Source - WirelessHD YPbPr
kind: action
command: "SOURCE D5"
params: []
# Get / query templates - listed per operative command per ESC/VP21 section 2.2
- id: pwr_query
label: Power State Query
kind: query
command: "PWR?"
params: []
- id: mute_query
label: Mute State Query
kind: query
command: "MUTE?"
params: []
- id: msel_query
label: Blank Screen Selection Query
kind: query
command: "MSEL?"
params: []
- id: source_query
label: Current Source Query
kind: query
command: "SOURCE?"
params: []
# Null command - used to confirm projector is alive
- id: null_command
label: Null (Link Keepalive)
kind: action
command: "\r" # source: "command code of the return key code (Hex 0D)"
params: []
notes: "Projector responds with ':' when operational."
Feedbacks
# Feedback shape per Section 2 - projector returns ":" after a set command,
# and a response parameter after a get command; "ERR"+CR+":" for illegal commands.
- id: ack
type: enum
values: [":", "ERR"]
- id: pwr_state
type: enum
values: [on, off]
# UNRESOLVED: exact response encoding (e.g. "PWR=ON" vs "01") not stated in refined excerpt
- id: mute_state
type: enum
values: [on, off]
# UNRESOLVED: exact response encoding not stated in refined excerpt
- id: msel_state
type: enum
values: [black, blue, user_logo]
# UNRESOLVED: exact response encoding not stated in refined excerpt
- id: source_state
type: string # literal SOURCE** returned
# UNRESOLVED: exact response encoding not stated in refined excerpt
Variables
# ESC/VP21 includes step-parameter INC/DEC/INIT form for some commands (Section 2.1) but
# specific variable list not enumerated in this refined excerpt.
# UNRESOLVED: list of INC/DEC/INIT-eligible parameters not stated in source
Events
# UNRESOLVED: source does not document unsolicited notifications from projector.
Macros
# UNRESOLVED: source does not document multi-step sequences.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or power-on
# sequencing requirements beyond the PWR ON conditioning notes (TW200/TW200H/TW500),
# which are operationally necessary rather than safety-critical.
Notes
- Command format: ASCII, terminated by carriage return (Hex 0D). Set =
<CMD> <PARAM>; Get =<CMD>?; Null = CR alone. Step params: INC, DEC, INIT (section 2.1). - Response grammar: projector returns
:after successful set;ERR+ CR +:for illegal commands. - TCP transport: per source, after establishing a TCP session, raw ESC/VP21 ASCII commands are sent. Refer to ESC/VP.net protocol manual for port/framing details (not in this excerpt).
- TW200/TW200H quirk: must send
SPWRLVL 01once after the projector becomes ESC/VP21-receivable, then power-cycle, beforePWR ONworks (source note *1). - TW500 quirk: "Network Monitoring" must be ON in Operation menu, and the projector must be turned off once, before
PWR ONworks (source note *1). - Model-coverage matrix (per-model OK marks for SOURCE commands) is preserved in the source document; not all commands apply to all models.
- Tilde-prefix escape convention
~used in some ESC/VP21 manuals to escape leading-byte collisions is not mentioned in this refined excerpt.
Provenance
source_domains:
- files.support.epson.com
source_urls:
- https://files.support.epson.com/pdf/pltw1_/pltw1_cm.pdf
- https://files.support.epson.com/pdf/pl600p/pl600pcm.pdf
retrieved_at: 2026-05-14T15:53:47.489Z
last_checked_at: 2026-09-07T22:18:34.340Z
Verification Summary
verdict: verified
checked_at: 2026-09-07T22:18:34.340Z
matched_actions: 49
action_count: 49
confidence: medium
summary: "All 49 spec actions map to ESC/VP21 source commands; transport values verified verbatim; only 3 SOURCE tokens (33/34/35) are absent, below short threshold. (16 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "SOURCE 33"
- "SOURCE 34"
- "SOURCE 35"
- "requested device family \"CB EB PU 21xxW 22xxB Series\" does not appear in the source's Applicable Models section. Coverage of that family by ESC/VP21 is unverified."
- "TCP port number not stated in source. Refer to ESC/VP.net protocol manual."
- "USB transport framing/protocol not detailed in this source."
- "levelable — no volume/brightness/tone commands documented in this source excerpt."
- "SOURCE 33, SOURCE 34, SOURCE 35 are documented (INPUT 3 extra variants for TW8000/9000/8000W/9000W and TW5900/6000/6000W) — captured via source_30_input3_cycle/section above; per-model availability not re-encoded as separate actions since source presents them as same opcode rows with different OK-mark columns. SPWRLVL (TW200/TW200H power-enable) is referenced in a note but its full command set is not enumerated in the refined excerpt — captured as notes-only."
- "per-model OK-mark columns in source not replicated as per-model action variants (would multiply spec ~4×). Use spec-level actions; constrain via compatible_with per deployment."
- "exact response encoding (e.g. \"PWR=ON\" vs \"01\") not stated in refined excerpt"
- "exact response encoding not stated in refined excerpt"
- "per-query response encodings (e.g. \"01\" for ON, byte-style versus ASCII-token) not present in this source excerpt — refer to full ESC/VP21 manual."
- "list of INC/DEC/INIT-eligible parameters not stated in source"
- "source does not document unsolicited notifications from projector."
- "source does not document multi-step sequences."
- "source contains no safety warnings, interlock procedures, or power-on"
- "CB/EB/PU 21xxW/22xxB series model coverage not verified against this ESC/VP21 source."
- "ESC/VP.net protocol details (TCP port, framing, auth) not present in this excerpt."
- "per-query response value encodings not present in this excerpt."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0