ESC/VP21 in One Paragraph
ESC/VP21 is Epson's control protocol, and it is refreshingly simple: plain ASCII text, terminated by a carriage return. No checksums, no start/end framing bytes, no hex tables. You can drive an Epson projector from a terminal emulator by typing.
Better still, the same command set works over RS-232, USB and TCP/IP. ESC/VP21 is defined independently of the transport, so the string you validate on a serial cable is the string you later send over the network ā a rare convenience in AV, and the reason Epson is usually the easiest brand to bring up on a job site.
The trade-off is that parameter values vary by model generation. The command names (PWR, SOURCE, MUTE) are stable; which number means HDMI is not.
Wiring and Pinout
Epson projectors use a standard 9-pin D-sub. The connection to a PC is a null-modem (crossover) cable ā the classic mistake is grabbing a straight-through cable from the bag.
| Signal | Projector pin | PC pin |
|---|---|---|
| RD (receive) | 2 | 3 |
| TD (transmit) | 3 | 2 |
| GND | 5 | 5 |
Only three wires matter. If you have a straight-through cable and no crossover, a null-modem adapter on either end does the job.
On laptops with no serial port, a USB-to-DB9 adapter is fine ā but check which COM number Windows assigned it, because the number changes when you plug it into a different USB port.
Serial Settings
| Parameter | Value |
|---|---|
| Baud rate | 9600 (default on most models) |
| Data bits | 8 |
| Parity | None |
| Stop bits | 1 |
| Flow control | None |
| Terminator | CR (0x0D) |
Some models offer 19200 or 38400 in the menu. Unless you have a reason, leave it at 9600 ā the command volume in a control system is tiny and the slower rate is more tolerant of long cable runs.
The Colon Prompt: How ESC/VP21 Handshakes
This is the part that confuses people coming from other brands.
The projector answers every command with a colon (:) when it is ready for the next one. The colon is not an error and not a value ā it is a prompt.
you: PWR ON<CR>
projector: :Press Enter on its own ā a "null command" ā and you get a colon back. That is the fastest possible connectivity test: if a bare carriage return returns a colon, your cable, COM port and baud rate are all correct, and any remaining problem is with the command or the projector's state.
The documented flow control rule is: send the next command only after receiving the colon from the previous one. If you cannot wait, the spec lists an execution time per command that you must respect instead. Control systems that fire five commands in a burst without waiting are the usual cause of "the first command works and the rest are ignored".
Queries end with ? and return a value, then the colon:
you: PWR?<CR>
projector: PWR=01
:Command Reference
| Command | Purpose | Example |
|---|---|---|
PWR ON | Power on | PWR ON |
PWR OFF | Power off | PWR OFF |
PWR? | Power status | returns PWR=00 ⦠PWR=05 |
SOURCE xx | Select input | SOURCE 30 |
SOURCE? | Current input | returns SOURCE=30 |
MUTE ON / MUTE OFF | A/V mute (blank) | MUTE ON |
MUTE? | Mute status | ā |
MSEL xx | A/V mute screen colour | ā |
VOL xx | Volume | step parameter |
FREEZE ON / OFF | Freeze image | ā |
ASPECT xx | Aspect ratio | ā |
CMODE xx | Colour mode | ā |
LUMINANCE xx | Brightness / eco mode | ā |
HREVERSE | Horizontal flip (rear projection) | ā |
VREVERSE | Vertical flip (ceiling mount) | ā |
LAMP? | Lamp hours | returns LAMP=1234 |
ERR? | Error code | returns ERR=00 when healthy |
Power status values
PWR? is the single most useful query for an unattended installation, because it distinguishes states that a simple "is it on?" cannot:
| Value | State |
|---|---|
00 | Standby (network off) |
01 | Lamp on ā normal operation |
02 | Warming up |
03 | Cooling down |
04 | Standby (network on / monitoring) |
05 | Abnormal standby |
02 and 03 are the ones that matter operationally. A projector cooling down will refuse a power-on command until it finishes. A control system that does not distinguish 03 from 00 will report "power-on failed" every time an operator turns something off and immediately back on.
05 means the projector shut itself down abnormally ā follow up with ERR?.
Input source values
SOURCE takes a two-digit hex value. The mapping differs between model families, so treat the list below as a starting point and verify against the ESC/VP21 guide for your specific projector:
| Value | Typical input |
|---|---|
11 | Computer 1 (analogue RGB) |
21 | Computer 2 / BNC |
30 | HDMI 1 |
A0 | HDMI 2 (on models with two) |
41 | Video (composite) |
42 | S-Video |
52 | USB Display |
53 | USB-A / media playback |
80 | LAN / network |
The safe commissioning method: switch the input by hand with the remote, then send SOURCE? and record what comes back. Do that once per input and you have a mapping that is guaranteed correct for that model.
Why Your Epson Command Gets No Response
1. RS-232C is not selected in the menu.
Epson's ESC/VP21 guide says to select RS-232C in the Advanced settings of the projector menu; the exact menu path differs between models, so check your model's user's guide. (On some older models you will also see "Link 21L" ā that is a USB communication setting, not the serial one.) Until then the port is physically present but electrically ignored.
2. Standby restricts which commands are accepted ā this is the big one.
In standby, Epson projectors accept only a small subset of commands and return ERR for everything else. The exact subset is model-dependent; on many business models it is only PWR ON, PWR?, LAMP? and the null command.
This produces the classic misleading symptom: you test SOURCE? while the projector is in standby, get ERR, and conclude the cable or the port is wrong ā when in fact the link is perfect and the projector is simply refusing that command in that state. Always test with a bare carriage return first, and use PWR ON / PWR? as your standby-safe commands.
3. Wrong cable. Straight-through instead of null-modem. See the pinout table.
4. You did not wait for the colon. Commands sent in a burst get dropped. Wait for : or honour the documented execution time.
5. ERR returned for a malformed command. ESC/VP21 is case-sensitive and space-sensitive: PWR ON has exactly one space, and PWR? has none.
6. Lamp ignition failure. On receiving PWR ON the projector attempts to strike the lamp up to three times; three failures indicate a genuine lamp fault, not a control problem. If PWR ON returns a colon but the projector stays dark, query ERR? before touching the control system.
A note on timing: after the lamp starts, give the projector time before hammering it with commands. Input switching during warm-up is a common source of "the command was accepted but nothing happened".
Controlling Epson Projectors over TCP
Because ESC/VP21 is transport-independent, the same command strings work over the network ā but only inside an ESC/VP.net session. Connect to TCP port 3629, send Epson's 16-byte handshake, and send ESC/VP21 commands once the projector has answered it; a plain TCP connection that sends ASCII straight away skips that step. The Epson network control guide has the exact bytes. This is worth doing wherever you have a network drop, because it removes the serial cable, the crossover question and the COM-port assignment from your problem list in one move.
If the projector supports it, PJLink is another network option and is cross-brand ā useful when the hall has projectors from several manufacturers. Use PJLink for the common operations and fall back to ESC/VP21 for the Epson-specific ones like CMODE and LUMINANCE.
With SoftControl
SoftControl sends ESC/VP21 over serial, and controls Epson projectors on the network through PJLink. Its TCP driver does not perform the ESC/VP.net handshake, so for network control of an Epson, use PJLink for the common operations and keep ESC/VP21 on the serial port. Its command tester shows the exact bytes sent, so you can confirm the CR terminator is there before blaming the cable.
See the projector control guide for the cross-brand picture, or the serial communication guide for RS-232/485 fundamentals.
More Epson Control Guides
- Epson Projector RS232 Pinout: DB9 Wiring and Null Modem Cable ā pin-by-pin wiring, Mini D-Sub 9 models and USB virtual COM ports
- Epson Projector RS232 Baud Rate and Settings: Setup Guide ā the menu items that enable control, and keeping the port alive in standby
- Epson Projector RS232 Not Working? A Step-by-Step Fault Check ā classify the reply, then work through ERR, standby limits and ERR? codes
- Epson Projector RS232 Hex Codes: ESC/VP21 Byte by Byte ā exact bytes for common commands and why input codes depend on the model
- Epson Projector Network Control: ESC/VP.net on TCP Port 3629 ā the 16-byte handshake Epson requires before ESC/VP21 over the network
- Epson Projector PJLink Commands: What Differs From the Spec ā unsupported AVMT commands and Epson's own input numbers