zpl.tools
Printer configuration

^SC - Set Serial Communications

Configures the serial port: baud rate, framing, flow control and protocol.

^SC reconfigures the serial port the format arrived on, which gives it a trap of its own. It takes effect immediately, so from the next byte the host still uses the old settings and must switch too. One wrong argument makes the printer unreachable over serial until an operator resets it from the front panel.

Syntax

^SCa,b,c,d,e,f

Support

Recognised, deliberately skippedparsed: none · state: none · rendered: none

Accepted and skipped, because it configures the printer rather than the label. It cannot change the rendered output, and Labelary skips it too.

The command sets transport settings for the wire the format arrived on, which cannot change the format's meaning. The renderer does not parse this command. It reports IGNORED_COMMAND at info severity, which does not reach X-Warnings. Labelary is also silent, so the rendered label is identical in both engines. — not pinned by a test

Labelary renders this command.

Parameters

aBaud raterequired · one of a set

Serial line speed in bits per second.

Invalid value
enough to make the whole command be ignored. The renderer does not parse or measure this command. The guide is explicit: the printer ignores the whole command if any argument is missing, out of specification, or unsupported.
Test coverage
No documented value is exercised by a test (110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200). The invalid-value rule is not pinned by a test.
110
110 bps
300
300 bps
600
600 bps
1200
1200 bps
2400
2400 bps
4800
4800 bps
9600
9600 bps
14400
14400 bps
19200
19200 bps
28800
28800 bps
38400
38400 bps
57600
57600 bps
115200
115200 bps
bWord lengthrequired · one of a set

Data bits per character.

Invalid value
enough to make the whole command be ignored. The renderer does not parse or measure this command. The guide is explicit: the printer ignores the whole command if any argument is missing, out of specification, or unsupported.
Test coverage
No documented value is exercised by a test (7, 8). The invalid-value rule is not pinned by a test.
7
Seven data bits
8
Eight data bits
cParityrequired · one of a set

Parity bit used for error detection.

Invalid value
enough to make the whole command be ignored. The renderer does not parse or measure this command. The guide is explicit: the printer ignores the whole command if any argument is missing, out of specification, or unsupported.
Test coverage
No documented value is exercised by a test (N, O, E). The invalid-value rule is not pinned by a test.
N
None
O
Odd
E
Even
dStop bitsrequired · one of a set

Stop bits sent after each character.

Invalid value
enough to make the whole command be ignored. The renderer does not parse or measure this command. The guide is explicit: the printer ignores the whole command if any argument is missing, out of specification, or unsupported.
Test coverage
No documented value is exercised by a test (1, 2). The invalid-value rule is not pinned by a test.
1
One stop bit
2
Two stop bits
eFlow controlrequired · one of a set

Handshake method that throttles the sender.

Invalid value
enough to make the whole command be ignored. The renderer does not parse or measure this command. The guide is explicit: the printer ignores the whole command if any argument is missing, out of specification, or unsupported.
Test coverage
No documented value is exercised by a test (X, D, R, M). The invalid-value rule is not pinned by a test.
X
XON/XOFF
D
DTR/DSR
R
RTS
M
DTR/DSR with XON/XOFF
fProtocolrequired · one of a set

Acknowledgement protocol used on the link.

Invalid value
enough to make the whole command be ignored. The renderer does not parse or measure this command. The guide is explicit: the printer ignores the whole command if any argument is missing, out of specification, or unsupported.
Test coverage
No documented value is exercised by a test (A, N, Z). The invalid-value rule is not pinned by a test.
A
ACK/NAK
N
None
Z
Zebra protocol; Labelary's reference calls this value reserved

Behavior

The guide treats the six arguments as a set, not as independent fields. The printer ignores the whole command if any one argument is missing, out of specification, or unsupported by that printer model. It also ignores it if a DIP switch overrides the ZPL configuration. No partial application exists, so ^SC,,,,,A does nothing and does not change the protocol alone.

The settings are also not persistent on their own. ^JUS carries a communications change through a power cycle or a software reset.

None of this changes the meaning of a format the printer already received, so the renderer ignores this command. Measured on 2026-07-30, a label with and without it renders to identical pixels on Labelary and on the renderer.

Differences from the specification

Labelary against the ZPL II guide

Where Labelary — our compatibility target — behaves differently from the printed specification.

  • Labelary accepts two values absent from the 2006 guide's tables: 300 bps as a baud rate, and M (DTR/DSR with XON/XOFF) as a flow-control mode. — not pinned by a test
  • The guide names protocol Z "Zebra"; Labelary's reference calls it reserved. — not pinned by a test

Example

19200 baud, eight data bits, no parity, one stop bit, XON/XOFF flow control and the ACK/NAK protocol — all six arguments present, as the guide requires:

^XA
^SC19200,8,N,1,X,A
^FO50,50^A0N,30,30^FDSerial configured^FS
^XZ

Open in viewer