The following description of remote commands comes out of an examination of the sequences used by the printer utilities bundled with the Windows drivers for the ESC740, and from other sources (some Epson manuals, experimentation, analysis of print files). It is largely speculative as these commands are not all documented in the Epson documentation we have access to. Generally, newer manuals provide more thorough documentation.
Remote command mode is entered when the printer is sent the following sequence:
Remote mode commands are then sent, and terminated with the following sequence:
All remote mode commands must be sent before the initial ESC (G command is sent.
This introductory sequence is then followed by a sequence of commands. Each command is constructed as follows:
Two ASCII bytes indicating the function
A byte count (two bytes, little-endian) for the parameters
Binary parameters, if any
This is a list of all remote commands we have seen:
ESC/P2 Remote Mode Commands
BC=2 00
          00Print a nozzle check pattern.
BC=2 00
          00On my 740, prints the following, probably “version information”:
BC=3 00 00 00Prints a “printer ID”. On one 870, prints the following:
The Windows driver has a text entry field where this number can be entered, but its purpose is unknown.
BC=0Load printer defaults from NVRAM, DIP switches, and/or ROM. This apparently does not load factory defaults per se, but any settings that are saved. This is commonly used right at the end of each print job after the ESC @ printer reset command.
BC=2 00
          xx
          Perform a head cleaning cycle.  The heads to clean are
          determined by parameter xx:
      
Table 5-5. Head cleaning parameters
| xx | Description | 
|---|---|
| 00 | Clean all heads | 
| 01 | Clean black head | 
| 02 | Clean color heads | 
          While xx = 00 is
          likely supported by all printers, xx
          = 01 and 02
          are not.
        
BC=3 00
          xx 00
          Print an alignment pattern.  There are three patterns,
          which are picked via the choice of
          xx.  Pattern 0
          is coarse, pattern 1 is medium, and
          pattern 2 is fine.
        
BC=4 00
          xx 00
          yy
          Set results for the alignment pattern.
          xx is the pattern
          (1--3);
          yy is the best choice from the set
          (1--7 or
          1--15).  This
          does not save to NVRAM, so when the printer is powered
          off, the setting will be lost.
        
BC=0Save the current settings to NVRAM.
BC=1
          01Reset the printer.
BC=1
          01Get ink quantity. This requires direct access to the printer port. The return looks like
or
(for 4-color and 6-color printers respectively), where each pair of digits are hexadecimal representations of percent.
The following two commands have been observed on an STP 870.
BC=2 00
          xx
          Function unknown.  This command has
          been observed on an STP 870 with
          xx=03 at the start
          of a job and xx=02
          at the end of a job (where it is followed by an
          LD command).  When in roll mode, the
          values change to
          xx=01 at the start
          of a job and xx=00
          at the end of a job.
        
BC=3 00
          pos[2]
          Specify the horizontal left margin in units of 1/360 inch.
          The default value for pos is
          0.  For borderless printing on
          printers that support it, a value of
          -80 (FFB0h)
          should be used.
        
The commands below are partially documented in the Stylus Pro 9000 manual. Much of this information is interpreted; none is tested.
BC=3 00
            xx yy
            Select Mechanism Sequence.  xx
            controls which sub-operation is performed.
            xx=00 selects
            the “Feed paper sequence setting”.
            yy can take on the following values
            (on the STP 870, at any rate):
          
Table 5-6. Media types
| yy | Media type | 
|---|---|
| 0 | Default | 
| 1 | Plain paper | 
| 2 | Postcards | 
| 3 | Film (photo quality glossy film, transparencies) | 
| 4 | Envelopes | 
| 5 | Plain paper (fast load) | 
| 6 | Back light film (although this has been observed with heavyweight matte paper) | 
| 7 | Matte paper (observed with 360 dpi inkjet paper, and photo quality inkjet paper) | 
| 8 | Photo paper | 
Experimentation suggests that this setting changes details of how the printers' cut sheet feeder works, presumably to tune it for different types of paper.
            xx=01 controls
            the platen gap setting;
            yy=00 is the
            default, yy=1 or
            2 are higher settings.
          
            xx=02 controls
            paper loading speed
            (yy=0 is normal,
            1 is fast, 2
            is slow).  It appears that 1 is
            used when printing on “plain paper”,
            “360dpi ink jet paper” or “ink jet
            transparencies”, and
            yy=00 for all
            other paper type settings.
          
            xx=07 controls
            duplex printing for printers with that capability
            (yy=0 is default,
            for non-duplex printing; 1 is front
            side of the paper, and 2 is back
            side).
          
            xx=09 controls
            zero margin printing on the printers with the capability
            of printing zero-margin on all sides (Stylus Photo
            780/790, 890, and 1280/1290).
            yy=0 is the
            default; 1 enables zero margin
            printing.
          
BC=3 00
            xx
            yy
            Set Paper Path.
            xx=2 indicates
            manual feed,
            xx=3 is for roll
            paper.  yy selects “paper path
            number”.
          
BC=2 00
            xx
            Set Auto Cutting State.
            xx=0 selects
            auto cutting off,
            xx=1 selects
            auto cutting on, and
            xx=2 indicates
            horizontal print page line on.  It appears that with
            auto cutting on, roll paper is cut automatically at the
            point a formfeed character is sent.  The formfeed
            character is normally used to eject a page; with this
            turned on, it also cuts the roll paper.  Horizontal
            print page line on prints a narrow line of black dots at
            the position the paper should be cut manually.
          
BC=4 00 xx
            DT2
            Set Drying Time.
            xx=00 sets the
            drying time “per scan” (per pass?);
            xx=01 sets the
            drying time per page. DT indicates
            the drying time, which is in seconds if page mode is
            used and in milliseconds if scan mode is used.
            DT must not exceed 3600 seconds in
            per-page mode and 10000 milliseconds in per-scan mode.
          
BC=2 00
            xx
            Select Ink Type.
            xx=00 selects
            dye ink.  Pigment ink is apparently selected by
            xx=01.  This
            probably does not apply to the consumer-grade printers.
          
            Set Pause After Printing.
            xx=00 selects no
            pause after printing;
            xx=01 selects
            pause after printing.  If turned on, the printer is
            paused after the page is ejected (by the FF byte).  If
            cutting is turned on, the printer is paused
            after the cutting or printing of
            the horizontal cut line.
          
BC=6 00 00 00 00 0x14
          xx
            Set Vertical Print Page Line Mode.
            xx=00 is off,
            xx=01 is on.  If
            turned on, this prints vertical trim lines at the left
            and right margins.
          
BC=6 00 00 00 00 0x05
            xx
            Set Roll Paper Mode.  If xx is
            0, roll paper mode is off; if
            xx is 1, roll
            paper mode is on.
          
BC=3 00
            xx yyAppears to be a synonym for the SN command described above.
BC=2 00
            xx
            Select Paper Thickness.  Set the paper thickness
            xx in .1 mm units.  This must not
            exceed 0x10 (1.6 mm).  If the
            thickness is set “more than” .6 mm (which
            probably means “at least” 0.6 mm, since the
            other case reads “less than 0.5 mm”), the
            platen gap is set high irrespective of the
            SN command.
          
BC=2 00
            00Function unknown. Used on the STC 3000 at least when using roll feed, and on the STP 870 in all print files analysed to date.
BC=2 00
            xx
            Epson's STP 750/1200 programming guide refers to the
            ST command as “Set printer
            state reply”.  If xx is
            0 or 2, the
            printer will not send status replies.  If
            xx is 1 or
            3, the printer will send status
            replies.  The status replies consist of state, error
            codes, ink leve, firmware version, and warning status.
          
The actual reply is documented as
| @BDC ST\r ST: xx; [ER: yy;] IQ: n1n2n3n4; [WR: w1,w2...;] RV: zz; AI:CW:02kkccmmyy, MI:mm [TC:tttt;] INK:...; \f | 
(\r is carriage return; \n is newline; \f is formfeed.)
ST is the printer status:
Table 5-7. Printer status codes
| Status code | Description | 
|---|---|
| 00 | Error | 
| 01 | Self-test | 
| 02 | Busy | 
| 03 | Waiting while printing | 
| 04 | Idle | 
| 07 | Cleaning/filling ink heads | 
| 08 | Not yet initialized/filling heads | 
ER, if provided, is the error status:
Table 5-8. Printer error codes
| Error code | Description | 
|---|---|
| 00 | Fatal Error | 
| 01 | Interface not selected | 
| 04 | Paper jam | 
| 05 | Out of ink | 
| 06 | Paper out | 
| 0D | Paper gap error | 
| 10 | Maintenance request | 
| 11 | Tear-off mode selected | 
| 12 | Double feed error | 
| 1C | Cutter position error | 
| 1D | Cutter jam | 
| 1E | Ink color error | 
| 23 | Ink combination error | 
IQ is the amount of ink left, as a (decimal!) percentage expressed in hexadecimal. The values are black, cyan, magenta, and yellow. 6 and 7 color printers usually specify two or three additional values for light cyan, light magenta, and gray. However, some low end 6-color printers specify only four values.
For printers with different ink cartridge options, the following additional values may appear:
Table 5-9. Printer additional ink codes
| Ink code | Description | 
|---|---|
| NA | Ink cartridge is not inserted | 
| RE | Ink cartridge information cannot be read | 
| WE | Ink cartridge information cannot be written | 
| CI | Ink cartridge is inserted, but has not been read | 
WR, if provided, is the warning status:
Table 5-10. Printer warning codes
| Warning code | Description | 
|---|---|
| 10 | Black ink low (Photo black on printers using UltraChrome® ink) | 
| 11 | Cyan | 
| 12 | Magenta | 
| 13 | Yellow | 
| 14 | Light cyan (presumably) | 
| 15 | Light magenta (presumably) | 
| 17 | Gray (with UltraChrome-compatible printers) | 
| 18 | Matte black 1 (UltraChrome) | 
| 19 | Matte black 2 (UltraChrome) | 
RV is the firmware revision (one byte ASCII).
AI is actuator information. These are two byte ASCII codes that indicate ``ink weight rank ID'' of KCMY, respectively.
TC, if provided, is the total time of cleaning or ink filling (?).
RC, if provided, is the firmware revision.
INK: and MI are not documented.
BC=2 00
            xx
            Set Status Reply Rate.  xx is the
            repeat interval in seconds.  If xx is
            0, the status is returned only when
            the printer's state changes.
          
BC=1
            01Reply Printer Status. The reply is formatted as follows:
            \r is carriage return;
            \n is newline; \f is
            formfeed).  If xx (the reply value) is
            0 or 2,
            automatic status update is disabled; if
            1 or 3, it is
            enabled.
          
BC=1
            01Reply Printer Status Rate. The reply is formatted as follows:
            \r is carriage return;
            \n is newline; \f is
            formfeed).  See SM
              BC=2 above for the meaning of
            the return value.
          
BC=xx
            y[1] …
            y[xx]
            Echo Parameters (perhaps better described as Echo
            Commands).  The command string is executed (it would
            appear from the documentation), and the string sent is
            returned using a sequence similar to that described in
            the ST BC=1 and
            SM BC=1 commands.
            Note that in this case the number of bytes is variable!
          
BC=2 00
            02Function unknown. Used on the STC 3000 at least when using roll feed.
BC=1
            00Function unknown. On new printers (STC 740 or newer), this command should be sent after all data has been sent. If this command is not sent, and the printer is connected to a Windows system, the last page of the job will not print completely. The most likely explanation for for this is that the Windows driver typically puts the printer in 1284.4 packet mode, and this command has the effect of flushing the buffer in the printer.
BC=8 00
            cutter[1] page[1]
            unit[1]
            position[4]
            Specify paper cutting on Stylus Photo 2200 (and perhaps
            some other printers).  cutter must be
            0.  page should be one of the
            following:
          
            unit should be one of the following:
          
This command should be used twice. The first CO command specifies where the page will be cut at the top, and the second specifies where the page will be cut at the bottom. This permits cutting both the top and the bottom of the page.