# SCSI Enclosure Services

SCSI Enclosure Services (SES) is a protocol for more modern SCSI enclosure products. An initiator can communicate with the enclosure using a specialized set of SCSI commands to access power, cooling, and other non-data characteristics.

## SES devices

There are two major classes of SES devices:
* Attached enclosure services devices allow SES communication through a logical unit within one SCSI disk drive located in the enclosure. The disk-drive then communicates with the enclosure by some other method, the only commonly used one being Enclosure Services Interface (ESI). In fault-tolerant enclosures, more than one disk-drive slot has ESI enabled to allow SES communications to continue even after the failure of any of the disk-drives. The definition of the ESI protocols is owned by an ANSI committee and defined in their specifications ANSI SFF-8067 and SFF-8045.
* Standalone enclosure services enclosures have a separate SES processor which occupies its own address on the SCSI bus. The protocol for this uses direct SCSI commands. An enclosure can be fault-tolerant by containing two SES processors.

## SES commands

The SCSI initiator communicates with an SES device using two SCSI commands: Send Diagnostic and Receive Diagnostic Results. Some universal SCSI commands such as Inquiry are also used with standalone enclosure services to perform basic functions such as initial discovery of the devices.

## SES elements

The SCSI Send Diagnostic and Receive Diagnostic Results commands can be addressed to a specific SES element in the enclosure. There are many different element codes defined to cover a wide range of devices. The most common SES elements are power supply, cooling fan, temperature sensor, and UPS. The SCSI command protocols assume that there may be more than one of each device type so they must be each given an 8-bit address.
When an SES controller is interrogated for the status of an SES element, the response includes a 4-bit element status code. The most common element status codes are: 1h=OK, 2h=critical, 3h=warning, 5h=not installed.

## SES element thresholds

Some SES elements, such as voltage sensors, current sensors, and temperature sensors, have a thresholding function. This allows an enclosure to detect and report unacceptable environmental conditions. The SCSI standard allows for two different threshold levels, noncritical (warning) and critical. Also, each threshold has a minimum and maximum value. So for example the threshold values for the 12 volt power-supply could be set as follows:
* Minimum critical - 10.8 volts
* Minimum noncritical - 11.4 volts
* Maximum noncritical - 12.6 volts
* Maximum critical - 13.2 volts
Threshold values are set by a Send Diagnostic command to the Threshold Out diagnostic page (05h). Threshold values can be interrogated by a Receive Diagnostic Results command to the Threshold In diagnostic page (05h) with the PCV bit set to one.

## Subenclosures

A larger SCSI storage enclosure may contain multiple subenclosures. The subenclosure with address 00h is designated the primary subenclosure and can return information about the other subenclosures.

## SCSI attached enclosure services

SCSI attached enclosure services is a computer protocol used mainly with disk storage enclosures. It allows a host computer to communicate with the enclosure to access its power, cooling, and other non-data characteristics.
The host computer communicates with the disks in the enclosure via a SCSI interface which may be Parallel SCSI, FC-AL, SAS, or SSA. One of the disk devices located in the enclosure is set up to allow SCSI Enclosure Services (SES) communication through a logical unit. The disk-drive then communicates with the SES processor in the enclosure, usually via Enclosure Services Interface (ESI), or a protocol called DSI for SSA enclosures. The data sent over the ESI or DSI interface is simply the contents of a SCSI command and the response to that command.

### Implemented commands

Only two SCSI commands are implemented by attached enclosure services devices:
| SCSI command | Operation code | Comment |
| RECEIVE DIAGNOSTIC RESULTS | 1Ch | Mandatory |
| SEND DIAGNOSTIC | 1Dh | Mandatory |

## SCSI standalone enclosure services

SCSI standalone enclosure services is a computer protocol used mainly with disk storage enclosures. It allows a host computer to communicate with the enclosure to access its power, cooling, and other non-data characteristics.
The host computer communicates with one or more SCSI Enclosure Services (SES) controllers in the enclosure via a SCSI interface which may be Parallel SCSI, FC-AL, SAS, or SSA. Each SES controller has a SCSI identity (address) and so can accept direct SCSI commands.

### Implemented commands

The following SCSI commands are implemented by standalone enclosure services devices:
| SCSI command | Operation code | Comment |
| ACCESS CONTROL IN | 86h | Optional |
| ACCESS CONTROL OUT | 87h | Optional |
| CHANGE ALIASES | A4h | Optional |
| INQUIRY | 12h | Mandatory |
| LOG SELECT | 4Ch | Optional |
| LOG SENSE | 4Dh | Optional |
| MAINTENANCE IN | A3h | See note 1 |
| MAINTENANCE OUT | A4h | See note 1 |
| MODE SELECT | 15h/55h | Optional |
| MODE SENSE | 1Ah/5Ah | Optional |
| PERSISTENT RESERVE IN | 5Eh | Optional |
| PERSISTENT RESERVE OUT | 5Fh | Optional |
| READ BUFFER | 3Ch | Optional |
| RECEIVE DIAGNOSTIC RESULTS | 1Ch | Mandatory |
| REDUNDANCY GROUP IN | BAh | See note 1 |
| REDUNDANCY GROUP OUT | BBh | See note 1 |
| REPORT ALIASES | A3h | Optional |
| REPORT DEVICE IDENTIFIER | A3h | Optional |
| REPORT LUNS | A0h | Mandatory |
| REPORT PRIORITY | A3h | Optional |
| REPORT SUPPORTED OPERATION CODES | A3h | Optional |
| REPORT SUPPORTED TASK MANAGEMENT FUNCTIONS | A3h | Optional |
| REPORT TARGET PORT GROUPS | A3h | Optional |
| REPORT TIMESTAMP | A3h | Optional |
| REQUEST SENSE | 03h | Mandatory |
| SEND DIAGNOSTIC | 1Dh | Mandatory |
| SET DEVICE IDENTIFIER | A4h | Optional |
| SET PRIORITY | A4h | Optional |
| SET TARGET PORT GROUPS | A4h | Optional |
| SET TIMESTAMP | A4h | Optional |
| SPARE IN | BCh | See note 1 |
| SPARE OUT | BDh | See note 1 |
| TEST UNIT READY | 00h | Mandatory |
| VOLUME SET IN | BEh | See note 1 |
| VOLUME SET OUT | BFh | See note 1 |
| WRITE BUFFER | 3Bh | Optional |
Note 1: The initiator needs to send a SCSI inquiry to interrogate the SCCS bit which says whether the SES controller has this command.