Summary

Control spec for the Epson CH-TW series home projectors (EH-TW2800/TW2900/TW3000/TW3200/TW3500/TW3600/TW3800/TW4000/TW4400/TW4500/TW5000/TW5500/TW5800 and EH-TW420/TW450) using the ESC/VP21 ASCII command protocol over RS-232C serial. Commands are plain ASCII terminated by CR (Hex 0D); projector replies with : on success or ERR\r\n: on invalid input.

Transport

protocols:
  - serial
serial:
  baud_rate: 9600
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
  connector: D-Sub 9-pin
  projector_input: Control (RS-232C)
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable     # inferred from PWR ON / PWR OFF command examples
- routable      # inferred from SOURCE command examples
- queryable     # inferred from null command and get-command format documented
- muteable      # inferred from MUTE ON / MUTE OFF command examples

Actions

# Enumerate every distinct command-bearing entry the source documents.

- id: null_command
  label: Null Command
  kind: action
  command: "\r"
  description: Return key code (Hex 0D). Projector replies `:` if operational.
  params: []

- 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
  kind: action
  command: "MUTE ON"
  params: []

- id: mute_off
  label: Mute Off
  kind: action
  command: "MUTE OFF"
  params: []

- id: test_pattern_black
  label: Test Pattern - Black
  kind: action
  command: "MSEL00"
  params: []

- id: test_pattern_blue
  label: Test Pattern - Blue
  kind: action
  command: "MSEL01"
  params: []

- id: test_pattern_user_logo
  label: Test Pattern - User Logo
  kind: action
  command: "MSEL02"
  params: []
  notes: Not supported on TW10/TW10H.

- id: source_cycle_input1
  label: Source Change - INPUT 1/A Cyclic
  kind: action
  command: "SOURCE 10"
  params: []

- id: source_analog_rgb_input1
  label: Source Change - INPUT 1/A Analog RGB
  kind: action
  command: "SOURCE 11"
  params: []

- id: source_digital_rgb_input1
  label: Source Change - INPUT 1/A Digital RGB
  kind: action
  command: "SOURCE 12"
  params: []

- id: source_rgb_video_input1
  label: Source Change - INPUT 1/A RGB Video
  kind: action
  command: "SOURCE 13"
  params: []

- id: source_ycbcr_input1
  label: Source Change - INPUT 1/A YCbCr
  kind: action
  command: "SOURCE 14"
  params: []

- id: source_ypbpr_input1
  label: Source Change - INPUT 1/A YPbPr
  kind: action
  command: "SOURCE 15"
  params: []

- id: source_auto_input1
  label: Source Change - INPUT 1/A Auto
  kind: action
  command: "SOURCE 1F"
  params: []

- id: source_cycle_input2
  label: Source Change - INPUT 2/B Cyclic
  kind: action
  command: "SOURCE 20"
  params: []

- id: source_analog_rgb_input2
  label: Source Change - INPUT 2/B Analog RGB
  kind: action
  command: "SOURCE 21"
  params: []

- id: source_rgb_video_input2
  label: Source Change - INPUT 2/B RGB Video
  kind: action
  command: "SOURCE 22"
  params: []

- id: source_ycbcr_input2
  label: Source Change - INPUT 2/B YCbCr
  kind: action
  command: "SOURCE 23"
  params: []

- id: source_ypbpr_input2
  label: Source Change - INPUT 2/B YPbPr
  kind: action
  command: "SOURCE 24"
  params: []

- id: source_ypbpr_alt_input2
  label: Source Change - INPUT 2/B YPbPr (alt)
  kind: action
  command: "SOURCE 25"
  params: []

- id: source_auto_input2
  label: Source Change - INPUT 2/B Auto
  kind: action
  command: "SOURCE 2F"
  params: []

- id: source_cycle_input3
  label: Source Change - INPUT 3 Cyclic
  kind: action
  command: "SOURCE 30"
  params: []

- id: source_digital_rgb_input3
  label: Source Change - INPUT 3 Digital RGB
  kind: action
  command: "SOURCE 31"
  params: []

- id: source_rgb_video_input3
  label: Source Change - INPUT 3 RGB-Video
  kind: action
  command: "SOURCE 33"
  params: []

- id: source_ycbcr_input3
  label: Source Change - INPUT 3 YCbCr
  kind: action
  command: "SOURCE 34"
  params: []

- id: source_ypbpr_input3
  label: Source Change - INPUT 3 YPbPr
  kind: action
  command: "SOURCE 35"
  params: []

- id: source_cycle_input5
  label: Source Change - INPUT 5 Cyclic
  kind: action
  command: "SOURCE C0"
  params: []

- id: source_scart_input5
  label: Source Change - INPUT 5 SCART
  kind: action
  command: "SOURCE C3"
  params: []

- id: source_ycbcr_input5
  label: Source Change - INPUT 5 YCbCr
  kind: action
  command: "SOURCE C4"
  params: []

- id: source_ypbpr_input5
  label: Source Change - INPUT 5 YPbPr
  kind: action
  command: "SOURCE C5"
  params: []

- id: source_auto_input5
  label: Source Change - INPUT 5 Auto
  kind: action
  command: "SOURCE CF"
  params: []

- id: source_hdmi2
  label: Source Change - HDMI2 HDMI
  kind: action
  command: "SOURCE A0"
  params: []

- id: source_hdmi_digital_rgb
  label: Source Change - HDMI Digital RGB
  kind: action
  command: "SOURCE A1"
  params: []

- id: source_hdmi_rgb_video
  label: Source Change - HDMI RGB-Video
  kind: action
  command: "SOURCE A3"
  params: []

- id: source_hdmi_ycbcr
  label: Source Change - HDMI YCbCr
  kind: action
  command: "SOURCE A4"
  params: []

- id: source_hdmi_ypbpr
  label: Source Change - HDMI YPbPr
  kind: action
  command: "SOURCE A5"
  params: []

- id: source_usb_easymp
  label: Source Change - USB EasyMP
  kind: action
  command: "SOURCE 52"
  params: []

- id: source_wirelesshd
  label: Source Change - WirelessHD
  kind: action
  command: "SOURCE D0"
  params: []

- id: source_wirelesshd_digital_rgb
  label: Source Change - WirelessHD Digital RGB
  kind: action
  command: "SOURCE D1"
  params: []

- id: source_wirelesshd_rgb_video
  label: Source Change - WirelessHD RGB-Video
  kind: action
  command: "SOURCE D3"
  params: []

- id: source_wirelesshd_ycbcr
  label: Source Change - WirelessHD YCbCr
  kind: action
  command: "SOURCE D4"
  params: []

- id: source_wirelesshd_ypbpr
  label: Source Change - WirelessHD YPbPr
  kind: action
  command: "SOURCE D5"
  params: []

- id: source_cycle_video
  label: Source Change - VIDEO Cyclic
  kind: action
  command: "SOURCE 40"
  params: []

- id: source_video_rca
  label: Source Change - VIDEO RCA
  kind: action
  command: "SOURCE 41"
  params: []

- id: source_video_s
  label: Source Change - VIDEO S
  kind: action
  command: "SOURCE 42"
  params: []

- id: source_video_ycbcr
  label: Source Change - VIDEO YCbCr
  kind: action
  command: "SOURCE 43"
  params: []

- id: source_video_ypbpr
  label: Source Change - VIDEO YPbPr
  kind: action
  command: "SOURCE 44"
  params: []

- id: spwrlvl_set
  label: Set Standby Power Level
  kind: action
  command: "SPWRLVL 01"
  description: Required precondition before PWR ON works on TW200/TW200H.
  params: []

Feedbacks

- id: ack_colon
  type: enum
  values: [":", "ERR"]
  description: Projector replies `:` on success; `ERR\r\n:` on invalid command.

- id: get_response
  type: string
  description: Get commands (format `<CMD>?`) return a response parameter after execution. Specific parameter values are not catalogued in this source.

Variables

# UNRESOLVED: settable parameters beyond fixed-value commands are not enumerated in this source.
# The protocol allows step parameters INC/DEC/INIT per Section 2.1 but does not list specific numeric parameters.

Events

# UNRESOLVED: this source describes no unsolicited event messages.

Macros

# UNRESOLVED: source describes no multi-step macro sequences.
# TW200/TW200H PWR ON precondition sequence is documented as a multi-step procedure but each step is an independent action above.

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or power-on sequencing requirements.
# Note: TW200/TW200H and TW500 have documented setup prerequisites for PWR ON, but these are configuration steps not safety interlocks.

Notes

All commands are plain ASCII terminated by CR (Hex 0D). Set commands return : after execution. Get commands (terminated by ?) return a response parameter followed by :. The null command (bare CR) returns : and is used to confirm projector is operational.

ESC/VP21 covers three transports per the source: serial (this spec), USB (USB Appendix — not in this document), TCP/IP (ESC/VP.net protocol manual — not in this document).

Per-model command availability varies significantly. The source provides four compatibility tables mapping each SOURCE command to specific CH-TW models. Use the per-action availability tables when implementing.

For TW200/TW200H: PWR ON requires sending SPWRLVL 01 first after the projector reaches ESC/VP21-receivable state, then power-cycle once. For TW500: PWR ON requires "Network Monitoring" = ON in the Operation menu and a power-cycle.

INC/DEC/INIT step parameters are documented as part of the command format (Section 2.1) but no specific parameter names or ranges are enumerated in this source.

Provenance

source_domains:
  - files.support.epson.com
source_urls:
  - https://files.support.epson.com/pdf/pltw1_/pltw1_cm.pdf
retrieved_at: 2026-09-02T19:59:08.056Z
last_checked_at: 2026-09-08T22:17:23.266Z

Verification Summary

verdict: verified
checked_at: 2026-09-08T22:17:23.266Z
matched_actions: 49
action_count: 49
confidence: medium
summary: "All 49 spec actions (PWR/MUTE/MSEL/SPWRLVL/40 SOURCE variants/null) have verbatim wire-level matches in source; transport matches exactly. (9 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "USB and TCP/IP transport details are referenced but not specified in this document. See ESC/VP.net protocol manual and USB Appendix for those transports."
- "settable parameters beyond fixed-value commands are not enumerated in this source."
- "this source describes no unsolicited event messages."
- "source describes no multi-step macro sequences."
- "source contains no safety warnings, interlock procedures, or power-on sequencing requirements."
- "firmware version compatibility not stated in source."
- "USB transport command details not in this document."
- "TCP/IP transport command details not in this document."
- "get-command response parameter encoding not catalogued per command in this source."

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0