Emergency Management Services

Emergency Management Services (EMS) provides an RS-232 accessible serial console interface to the bootloader menu on modern versions of Microsoft Windows.

During system installation of Windows Server 2003, EMS is enabled per default in case BIOS serial console redirection is supported and enabled beforehand. Otherwise, and in Windows XP, it is enabled with a command such as the following:

bootcfg /ems on /port com1 /baud 9600 /id 1

On Windows Vista it is enabled by typing the following command where {default} is the OS entry in BCDedit:

bcdedit /bootems {default} on

In Windows Vista the serial port settings, Baud rate and Port ID, are accessed and modified using the following command:

bcdedit /emssettings EMSPORT:(port) EMSBAUDRATE:(rate)

SAC
On Windows Server 2003 and later, this also starts a system console named Special Administration Console (SAC) during operating system run time providing headless server operation. Although EMS and SAC are separate and distinct concepts, EMS itself is also sometimes referred to as SAC, due to the prompt presented to the user once the OS is booted.

The SAC interface allows interaction with the Windows operating system via the serial (COM) port even when the system might normally be unresponsive, or if the system is embedded or headless (i.e. no keyboard/display present). An administrator can use SAC to access a command prompt, shutdown or reboot the machine, collect a crash dump, or view system information such as the hostname, OS version, running processes, or an IP address or addresses.

SAC provides a form of multitasking via channels. Channels can be opened by software running on the system. To list all the channels that SAC has open from the top-level prompt, the user needs to enter the  command. All the available channels will be shown as well as their status and type.

SAC will emit in-band XML over the serial port in certain situations. This makes it easy for a program that is watching SAC output to detect when certain events occur. This XML is not always seen by users, since the screen may be cleared after transmitting it (e.g. in the case of a channel switch).

Example events that generate in-band XML:
 * When SAC is started, the machine information is emitted in a  element.
 * When a channel switch occurs, a  element is emitted.
 * When the system encounters a bugcheck, it emits a  element.