Plain English

Configures the printer's **RS-232 serial port** line discipline — baud rate, word length, parity, stop bits, and the two layers of handshake (electrical/software flow control plus the optional Zebra acknowledge protocol). On a serial-attached printer this is the contract every byte from the host must travel under: framing, speed, and back-pressure. The six parameters together fully describe the UART configuration; **the host serial library (Windows COM-port settings, Linux `termios`/`stty`, or your application's serial driver) must be set to the *exact* same six values** or the printer will see corrupt bytes (silent garbage characters in fields, format-prefix `^` not detected, no labels printed) or no traffic at all (one side blocked waiting for a handshake the other never sends). Note: the baud parameter on classic firmware uses an **encoded token** (`1`–`9`,`A`–`E`) rather than the raw baud number — see the parameter list below; modern firmware accepts the raw baud as well, but the encoded form is what most real-world `^SC` examples in Zebra documentation use.

When to use

When the printer is attached over an **RS-232 serial cable** (DB-9 or DB-25) and the host needs different line settings from the factory default of `9600,8,N,1`. Most commonly issued **once** in a configuration label sent over the existing serial connection (or USB/network) to permanently change the serial port for future serial-attached hosts. ⚠️ **Mismatched parameters are the #1 cause of "the printer sees nothing" or "the printer prints garbage"** on serial — if the host says 19200,8,N,1 and the printer is at 9600,7,E,2, neither side will recognise a single character. **Verify both ends** before issuing `^SC`: read the host serial settings (`stty -F /dev/ttyS0 -a` on Linux, COM-port properties on Windows), match every field, and ideally print a configuration label (`^XA^HH^XZ`) afterwards to confirm. **Avoid changing baud over the same serial link you're using** — the ack/response will go out at the new baud while the host is still listening at the old one; use USB or network for the configuration push instead.

Syntax

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

Parameters

ParameterDescription
aBaud rate (encoded token on classic Zebra firmware): **`1`** = 110, **`2`** = 300, **`3`** = 600, **`4`** = 1200, **`5`** = 2400, **`6`** = 4800, **`7`** = 9600 (factory default), **`8`** = 19200, **`9`** = 28800, **`A`** = 38400, **`B`** = 57600, **`C`** = 115200. Some printers also use an alternate encoding where `8` = 14400 and `A` = 19200 — consult the printer's programming guide for the exact mapping. Modern firmware additionally accepts the raw baud number (`9600`, `19200`, etc.).
bWord length in **data bits**: `7` or `8`. Default: `8`. Almost all modern hosts use 8.
c**Parity**: `N` = none, `E` = even, `O` = odd. Default: `N`. With 8 data bits parity is usually `N`; with 7 data bits parity is usually `E`.
d**Stop bits**: `1` or `2`. Default: `1`.
e**Protocol / handshake** (electrical and software flow control on the wire): `X` = XON/XOFF (software), `D` = DSR/DTR (hardware via DTR pin), `R` = RTS/CTS (hardware via RTS pin), `N` = none / no flow control. Default: `X`. Must match what the host serial library asserts — XON/XOFF is the most portable; hardware handshake requires a fully-wired DB-9 cable (not a 3-wire null-modem).
fZebra **acknowledge-protocol mode** (application-layer, on top of the line settings above): `A` = Zebra Ack/Nak protocol (printer responds to each format with `<ACK>`/`<NAK>`), `N` = no protocol (printer is silent unless explicitly asked via `^HH`/`^HS`). Default: `N`. Almost all modern hosts use `N`; `A` is legacy (1990s host applications that polled for acknowledgments).

Example

^XA
^SC8,8,N,1,X,N
^XZ

Configure the serial port to **19200 baud, 8 data bits, no parity, 1 stop bit, XON/XOFF flow control, no Zebra ack protocol** (the most common host-friendly setting for modern serial-attached Zebra printers). The host serial library must be set to exactly `19200,8,N,1,XON/XOFF` — any mismatch and the printer will either see garbage or receive nothing. (`8` in the baud slot is the encoded token for 19200 on classic Zebra firmware; modern firmware also accepts `19200` written out.)

Try it in the playground View all ZPL commands